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 ); } }