ID ] = $page->post_title;
}
}
return $page_list;
}
}
if ( ! function_exists( 'addonify_compare_products_sanitize_multi_choices' ) ) {
/**
* Sanitize multiple choices values.
*
* @since 1.0.7
* @param array $args Arguments.
* @return array $sanitized_values
*/
function addonify_compare_products_sanitize_multi_choices( $args ) {
if (
is_array( $args['choices'] ) &&
count( $args['choices'] ) &&
is_array( $args['values'] ) &&
count( $args['values'] )
) {
$sanitized_values = array();
foreach ( $args['values'] as $value ) {
if ( array_key_exists( $value, $args['choices'] ) ) {
$sanitized_values[] = $value;
}
}
return $sanitized_values;
}
return array();
}
}
if ( ! function_exists( 'addonify_compare_products_get_compare_button_icons' ) ) {
/**
* Get the list of compare button icons.
*
* @since 1.0.7
* @return array
*/
function addonify_compare_products_get_compare_button_icons() {
return apply_filters(
'addonify_compare_products_compare_button_icons',
array(
'icon_one' => '',
'icon_two' => '',
'icon_three' => '',
'icon_four' => '',
'icon_five' => '',
'icon_six' => '',
)
);
}
}
if ( ! function_exists( 'addonify_compare_products_get_default_value_for_product_attributes_to_compare_setting' ) ) {
/**
* Generate default values for `product_attributes_to_compare` setting.
*
* @since 1.1.9
*/
function addonify_compare_products_get_default_value_for_product_attributes_to_compare_setting() {
$attributes = array();
$wc_attribute_taxonomies = wc_get_attribute_taxonomies();
if ( $wc_attribute_taxonomies ) {
foreach ( $wc_attribute_taxonomies as $wc_attribute_taxonomy ) {
$attribute = array();
$attribute['name'] = $wc_attribute_taxonomy->attribute_label;
$attribute['id'] = $wc_attribute_taxonomy->attribute_id;
$attribute['status'] = false;
$attributes[] = $attribute;
}
}
return $attributes;
}
}
if ( ! function_exists( 'addonify_compare_products_get_all_product_attributes_ids' ) ) {
/**
* Retrive all product attributes and return the array of attribute IDs.
*
* @since 1.1.9
*/
function addonify_compare_products_get_all_product_attributes_ids() {
$attributes = array();
$wc_attribute_taxonomies = wc_get_attribute_taxonomies();
if ( $wc_attribute_taxonomies ) {
foreach ( $wc_attribute_taxonomies as $wc_attribute_taxonomy ) {
$attributes[ $wc_attribute_taxonomy->attribute_id ] = $wc_attribute_taxonomy->attribute_label;
}
}
return $attributes;
}
}
if ( ! function_exists( 'addonify_compare_products_sortable_setting_value' ) ) {
/**
* Filters value for sortable controls.
* Checks for consistency of saved values.
*
* @since 1.1.9
*
* @param string $setting_id Setting ID.
* @return string
*/
function addonify_compare_products_sortable_setting_value( $setting_id ) {
$saved_values = json_decode( addonify_compare_products_get_option( $setting_id ), true );
$actual_values = addonify_compare_products_get_actual_values_of_sortable_setting( $setting_id );
$filtered = array();
$extras = array();
if ( empty( $actual_values ) ) {
return wp_json_encode( $filtered );
}
if ( empty( $saved_values ) ) {
$filtered = $actual_values;
return wp_json_encode( $filtered );
}
$actual_values_count = count( $actual_values ) + 1;
// If item in the saved value is present in the actual value, the add the item in the `filtered` array.
foreach ( $saved_values as $saved_index => $saved_value ) {
foreach ( $actual_values as $actual_index => $actual_value ) {
if ( $saved_value['id'] === $actual_value['id'] ) {
$filtered[ $saved_index ] = $saved_value;
}
}
}
// If a item in actual value is missing in the saved value, then add the item in the `filtered` array.
foreach ( $actual_values as $actual_index => $actual_value ) {
$in_array = false;
foreach ( $saved_values as $saved_index => $saved_value ) {
if ( $saved_value['id'] === $actual_value['id'] ) {
$in_array = true;
}
}
if ( ! $in_array ) {
$filtered[ $actual_values_count ] = $actual_value;
$actual_values_count++;
}
}
// Returns all the values from the array and indexes the array numerically.
$filtered = array_values( $filtered );
return wp_json_encode( $filtered );
}
}
if ( ! function_exists( 'addonify_compare_products_get_default_value_for_compare_table_fields_setting' ) ) {
/**
* Generate default values for `compare_table_fields` setting.
*
* @since 1.1.9
*/
function addonify_compare_products_get_default_value_for_compare_table_fields_setting() {
return apply_filters(
'addonify_compare_products_filter_compare_table_fields_default',
array(
array(
'name' => esc_html__( 'Title', 'addonify-compare-products' ),
'id' => 'title',
'status' => true,
),
array(
'name' => esc_html__( 'Image', 'addonify-compare-products' ),
'id' => 'image',
'status' => true,
),
array(
'name' => esc_html__( 'Price', 'addonify-compare-products' ),
'id' => 'price',
'status' => true,
),
array(
'name' => esc_html__( 'Description', 'addonify-compare-products' ),
'id' => 'description',
'status' => true,
),
array(
'name' => esc_html__( 'Rating', 'addonify-compare-products' ),
'id' => 'rating',
'status' => true,
),
array(
'name' => esc_html__( 'Avaibility', 'addonify-compare-products' ),
'id' => 'in_stock',
'status' => true,
),
array(
'name' => esc_html__( 'Weight', 'addonify-compare-products' ),
'id' => 'weight',
'status' => true,
),
array(
'name' => esc_html__( 'Dimensions', 'addonify-compare-products' ),
'id' => 'dimensions',
'status' => true,
),
array(
'name' => esc_html__( 'Attributes', 'addonify-compare-products' ),
'id' => 'attributes',
'status' => true,
),
array(
'name' => esc_html__( 'Additional Information', 'addonify-compare-products' ),
'id' => 'additional_information',
'status' => true,
),
array(
'name' => esc_html__( 'Add to Cart', 'addonify-compare-products' ),
'id' => 'add_to_cart_button',
'status' => true,
),
)
);
}
}
if ( ! function_exists( 'addonify_compare_products_get_compare_table_fields' ) ) {
/**
* Define and return compare table fields.
*
* @since 1.1.9
*/
function addonify_compare_products_get_compare_table_fields() {
return apply_filters(
'addonify_compare_products_filter_compare_table_fields',
array(
'title' => esc_html__( 'Title', 'addonify-compare-products' ),
'image' => esc_html__( 'Image', 'addonify-compare-products' ),
'price' => esc_html__( 'Price', 'addonify-compare-products' ),
'description' => esc_html__( 'Description', 'addonify-compare-products' ),
'rating' => esc_html__( 'Rating', 'addonify-compare-products' ),
'in_stock' => esc_html__( 'Avaibility', 'addonify-compare-products' ),
'weight' => esc_html__( 'Weight', 'addonify-compare-products' ),
'dimensions' => esc_html__( 'Dimensions', 'addonify-compare-products' ),
'attributes' => esc_html__( 'Attributes', 'addonify-compare-products' ),
'additional_information' => esc_html__( 'Additional Information', 'addonify-compare-products' ),
'add_to_cart_button' => esc_html__( 'Action', 'addonify-compare-products' ),
)
);
}
}
if ( ! function_exists( 'addonify_compare_products_get_actual_values_of_sortable_setting' ) ) {
/**
* Gets actual values of sortable setting.
*
* @since 1.1.9
*
* @param string $setting_id Setting ID.
*/
function addonify_compare_products_get_actual_values_of_sortable_setting( $setting_id ) {
$actual_values = array();
switch ( $setting_id ) {
case 'compare_table_fields':
$actual_values = addonify_compare_products_get_default_value_for_compare_table_fields_setting();
break;
case 'product_attributes_to_compare':
$actual_values = addonify_compare_products_get_default_value_for_product_attributes_to_compare_setting();
break;
default:
}
return apply_filters( 'addonify_compare_products_filter_actual_values_of_sortable_setting', $actual_values, $setting_id );
}
}