*/ /** * Include required files for v2. */ require_once plugin_dir_path( dirname( __FILE__ ) ) . 'setting-functions/fields_v2/general.php'; require_once plugin_dir_path( dirname( __FILE__ ) ) . 'setting-functions/fields_v2/popup-modal.php'; require_once plugin_dir_path( dirname( __FILE__ ) ) . 'setting-functions/fields_v2/wishlist-button.php'; require_once plugin_dir_path( dirname( __FILE__ ) ) . 'setting-functions/fields_v2/wishlist-page.php'; require_once plugin_dir_path( dirname( __FILE__ ) ) . 'setting-functions/fields_v2/wishlist-sidebar.php'; require_once plugin_dir_path( dirname( __FILE__ ) ) . 'setting-functions/fields_v2/wishlist-notice.php'; if ( ! function_exists( 'addonify_wishlist_v_2_settings_defaults' ) ) { /** * Default Settings * * @param int $setting_id Setting ID. */ function addonify_wishlist_v_2_settings_defaults( $setting_id = '' ) { $defaults = apply_filters( 'addonify_wishlist_setting_defaults', array( 'enable_wishlist' => '1', 'wishlist_page' => addonify_wishlist_get_wishlist_page_id(), 'require_login' => false, 'if_not_login_action' => 'default', 'remove_from_wishlist_if_added_to_cart' => true, 'enable_wishlist_on_myaccount_page' => false, 'btn_position' => 'before_add_to_cart', 'btn_position_on_single' => 'after_add_to_cart_form', 'btn_label' => esc_html__( 'Add to wishlist', 'addonify-wishlist' ), 'btn_label_when_added_to_wishlist' => esc_html__( 'Added to wishlist', 'addonify-wishlist' ), 'btn_label_if_added_to_wishlist' => esc_html__( 'Already in wishlist', 'addonify-wishlist' ), 'login_btn_label' => esc_html__( 'Login', 'addonify-wishlist' ), 'show_icon' => true, 'remove_already_added_product_from_wishlist' => false, 'btn_custom_class' => '', 'after_add_to_wishlist_action' => 'show_popup_notice', 'view_wishlist_btn_text' => esc_html__( 'View wishlist', 'addonify-wishlist' ), 'product_added_to_wishlist_text' => esc_html__( '{product_name} added to wishlist', 'addonify-wishlist' ), 'product_already_in_wishlist_text' => esc_html__( '{product_name} already in wishlist', 'addonify-wishlist' ), 'product_removed_from_wishlist_text' => esc_html__( '{product_name} removed from wishlist', 'addonify-wishlist' ), // @since 2.0.6 'show_wishlist_emptying_button' => true, 'wishlist_emptied_text' => esc_html__( 'Wishlist cleared.', 'addonify-wishlist' ), 'show_sidebar' => false, 'sidebar_position' => 'right', 'sidebar_title' => esc_html__( 'My wishlist', 'addonify-wishlist' ), 'sidebar_btn_label' => esc_html__( 'Wishlist', 'addonify-wishlist' ), 'sidebar_btn_position_offset' => -40, 'sidebar_show_icon' => true, 'sidebar_toggle_btn_icon' => 'heart-2', 'view_wishlist_page_button_label' => esc_html__( 'View All Wishlist Items', 'addonify-wishlist' ), 'empty_wishlist_label' => esc_html__( 'Your wishlist is currently empty.', 'addonify-wishlist' ), 'clear_wishlist_label' => esc_html__( 'Clear Wishlist!', 'addonify-wishlist' ), 'sidebar_empty_wishlist_label' => esc_html__( 'Your wishlist is currently empty.', 'addonify-wishlist' ), 'undo_action_prelabel_text' => esc_html__( '{product_name} has been removed.', 'addonify-wishlist' ), 'undo_action_label' => esc_html__( 'Undo?', 'addonify-wishlist' ), 'undo_notice_timeout' => 5, 'product_added_to_cart_notice_text' => esc_html__( '{product_name} has been added to cart.', 'addonify-wishlist' ), 'notice_background_color' => '#d9edff', 'notice_text_color' => '#004386', 'undo_button_label_color' => '#004d90', 'undo_button_label_color_hover' => '#01447f', 'undo_button_background_color' => '#afd9ff', 'undo_button_background_color_hover' => '#98cdff', 'icon_position' => 'left', 'show_empty_wishlist_navigation_link' => true, 'empty_wishlist_navigation_link' => addonify_wishlist_get_shop_page_id(), 'empty_wishlist_navigation_link_label' => esc_html__( 'Go to Shop', 'addonify-wishlist' ), 'login_required_message' => esc_html__( 'Please login before adding item to Wishlist', 'addonify-wishlist' ), 'could_not_add_to_wishlist_error_description' => esc_html__( 'Something went wrong.
{product_name} was not added to wishlist. Please refresh page and try again.', 'addonify-wishlist' ), 'could_not_remove_from_wishlist_error_description' => esc_html__( 'Something went wrong.
{product_name} was not removed wishlist. Please refresh page and try again.', 'addonify-wishlist' ), 'remove_all_plugin_data_on_uninstall' => false, 'enable_save_for_later' => false, 'save_for_later_btn_position' => 'after_product_name', 'save_for_later_btn_label' => esc_html__( 'Save for Later', 'addonify-wishlist' ), 'save_for_later_btn_label_after_added_to_wishlist' => esc_html__( 'Saved for Later', 'addonify-wishlist' ), 'product_in_stock_label' => esc_html__( 'In stock', 'addonify-wishlist' ), 'product_out_of_stock_label' => esc_html__( 'Out of stock', 'addonify-wishlist' ), 'confirmation_message_for_emptying_wishlist' => esc_html__( 'Do you want to empty the wishlist?', 'addonify-wishlist' ), // @since 2.0.6 'confirm_btn_label' => esc_html__( 'Confirm', 'addonify-wishlist' ), // @since 2.0.6 'security_token_error_message' => esc_html__( 'Invalid security token.', 'addonify-wishlist' ), // @since 2.0.6 'invalid_product_id_error_message' => esc_html__( 'Invalid product id.', 'addonify-wishlist' ), // @since 2.0.6 'invalid_product_error_message' => esc_html__( 'Invalid product.', 'addonify-wishlist' ), // @since 2.0.6 'product_not_in_wishlist_error_message' => esc_html__( '{product_name} does not exist in the wishlist.', 'addonify-wishlist' ), // @since 2.0.6 'success_emptying_wishlist_message' => esc_html__( 'Wishlist has been successfully emptied.', 'addonify-wishlist' ), // @since 2.0.6 'error_emptying_wishlist_message' => esc_html__( 'Error emptying the wishlist!', 'addonify-wishlist' ), // @since 2.0.6 'wishlist_btn_text_color' => '#ffffff', 'wishlist_btn_text_color_hover' => '#ffffff', 'wishlist_btn_bg_color' => '#444444', 'wishlist_btn_bg_color_hover' => '#2274fb', 'sidebar_modal_overlay_bg_color' => 'rgba(255,255,255,.96)', 'popup_modal_overlay_bg_color' => 'rgba(0,0,0,.8)', 'popup_modal_bg_color' => '#ffffff', 'popup_close_btn_icon_color' => '#444444', 'popup_close_btn_icon_color_on_hover' => '#2274fb', 'popup_modal_icon_color' => '#fe0c67', 'popup_modal_success_icon_color' => '#36ff79', // @since 2.0.6 'popup_modal_alert_icon_color' => '#ff9536', // @since 2.0.6 'popup_modal_error_icon_color' => '#ff363a', // @since 2.0.6 'popup_modal_info_icon_color' => '#2196F3', // @since 2.0.6 'popup_modal_text_color' => '#444444', 'popup_modal_btn_text_color' => '#ffffff', 'popup_modal_btn_text_color_hover' => '#ffffff', 'popup_modal_btn_bg_color' => '#444444', 'popup_modal_btn_bg_color_hover' => '#2274fb', 'sidebar_modal_general_border_color' => '#f5f5f5', 'sidebar_modal_toggle_btn_label_color' => '#444444', 'sidebar_modal_toggle_btn_label_color_hover' => '#2274fb', 'sidebar_modal_toggle_btn_bg_color' => 'rgba(255,255,255,0)', 'sidebar_modal_toggle_btn_bg_color_hover' => 'rgba(255,255,255,0)', 'sidebar_modal_bg_color' => '#ffffff', 'sidebar_modal_title_color' => '#444444', 'sidebar_modal_empty_text_color' => '#444444', 'sidebar_modal_close_icon_color' => '#444444', 'sidebar_modal_close_icon_color_hover' => '#2274fb', 'sidebar_modal_product_title_color' => '#444444', 'sidebar_modal_product_title_color_hover' => '#2274fb', 'sidebar_modal_product_regular_price_color' => '#444444', 'sidebar_modal_product_sale_price_color' => '#ff0000', 'sidebar_modal_product_add_to_cart_label_color' => '#ffffff', 'sidebar_modal_product_add_to_cart_label_color_hover' => '#ffffff', 'sidebar_modal_product_add_to_cart_bg_color' => '#444444', 'sidebar_modal_product_add_to_cart_bg_color_hover' => '#2274fb', 'sidebar_modal_product_remove_from_wishlist_icon_color' => '#9f9f9f', 'sidebar_modal_product_remove_from_wishlist_icon_color_hover' => '#2274fb', 'sidebar_modal_view_wishlist_btn_label_color' => '#444444', 'sidebar_modal_view_wishlist_btn_label_color_hover' => '#2274fb', 'sidebar_modal_view_wishlist_btn_bg_color' => 'rgba(255,255,255,0)', 'sidebar_modal_view_wishlist_btn_bg_color_hover' => 'rgba(255,255,255,0)', 'sidebar_modal_in_stock_text_color' => '#249901', 'sidebar_modal_out_of_stock_text_color' => '#ff0000', 'custom_css' => '', 'popup_close_btn_text' => __( 'Close', 'addonify-wishlist' ), // deprecated @since 2.0.0. 'sidebar_modal_notification_text_color' => '', // deprecated @since 2.0.0. 'sidebar_modal_notification_bg_color' => '', // deprecated @since 2.0.0. ) ); return ( $setting_id && isset( $defaults[ $setting_id ] ) ) ? $defaults[ $setting_id ] : $defaults; } } if ( ! function_exists( 'addonify_wishlist_get_option' ) ) { /** * Get stored option from db or return default if not. * * @param int $setting_id Setting ID. * @return mixed Option value. */ function addonify_wishlist_get_option( $setting_id ) { return get_option( ADDONIFY_WISHLIST_DB_INITIALS . $setting_id, addonify_wishlist_v_2_settings_defaults( $setting_id ) ); } } if ( ! function_exists( 'addonify_wishlist_v_2_get_settings_values' ) ) { /** * Get setting values. * * @since 2.0.0 * * @return array Option values. */ function addonify_wishlist_v_2_get_settings_values() { $settings_default = addonify_wishlist_v_2_settings_defaults(); if ( $settings_default ) { $settings_values = array(); $setting_fields = addonify_wishlist_v_2_settings_fields(); foreach ( $settings_default as $id => $value ) { if ( array_key_exists( $id, $setting_fields ) ) { $setting_type = $setting_fields[ $id ]['type']; switch ( $setting_type ) { case 'switch': $settings_values[ $id ] = ( (int) addonify_wishlist_get_option( $id ) === 1 ) ? true : false; break; case 'number': $settings_values[ $id ] = addonify_wishlist_get_option( $id ); break; default: $settings_values[ $id ] = addonify_wishlist_get_option( $id ); } } } return $settings_values; } } } if ( ! function_exists( 'addonify_wishlist_v_2_update_settings' ) ) { /** * Update settings * * @since 2.0.0 * * @param string $settings Setting. * @return bool true on success, false otherwise. */ function addonify_wishlist_v_2_update_settings( $settings = '' ) { if ( is_array( $settings ) && count( $settings ) > 0 ) { $setting_fields = addonify_wishlist_v_2_settings_fields(); foreach ( $settings as $id => $value ) { $sanitized_value = null; $setting_type = $setting_fields[ $id ]['type']; switch ( $setting_type ) { case 'text': $sanitized_value = sanitize_text_field( $value ); break; case 'textarea': $sanitized_value = sanitize_textarea_field( $value ); break; case 'switch': $sanitized_value = ( true === $value ) ? '1' : '0'; break; case 'number': $sanitized_value = (int) $value; break; case 'color': $sanitized_value = sanitize_text_field( $value ); break; case 'select': $setting_choices = $setting_fields[ $id ]['choices']; $sanitized_value = ( array_key_exists( $value, $setting_choices ) ) ? sanitize_text_field( $value ) : $setting_choices[0]; break; default: $sanitized_value = sanitize_text_field( $value ); } if ( ! update_option( ADDONIFY_WISHLIST_DB_INITIALS . $id, $sanitized_value ) ) { return false; } } return true; } } } /** * Add setting fields into the global setting fields array. * * @since 2.0.0 * @param mixed $settings_fields Setting fields. * @return array */ function addonify_wishlist_v_2_add_fields_to_settings_fields( $settings_fields ) { $settings_fields = array_merge( $settings_fields, apply_filters( 'addonify_wishlist_general_v_2_options', array() ) ); $settings_fields = array_merge( $settings_fields, apply_filters( 'addonify_wishlist_popup_modal_v_2_options', array() ) ); $settings_fields = array_merge( $settings_fields, apply_filters( 'addonify_wishlist_wishlist_button_v_2_options', array() ) ); $settings_fields = array_merge( $settings_fields, apply_filters( 'addonify_wishlist_wishlist_page_v_2_options', array() ) ); $settings_fields = array_merge( $settings_fields, apply_filters( 'addonify_wishlist_wishlist_sidebar_v_2_options', array() ) ); $settings_fields = array_merge( $settings_fields, apply_filters( 'addonify_wishlist_notice_options', array() ) ); return $settings_fields; } add_filter( 'addonify_wishlist_v_2_settings_fields', 'addonify_wishlist_v_2_add_fields_to_settings_fields' ); if ( ! function_exists( 'addonify_wishlist_v_2_settings_fields' ) ) { /** * Add setting fields into the global setting fields array. * * @since 2.0.0 * @return array */ function addonify_wishlist_v_2_settings_fields() { $setting_fields = apply_filters( 'addonify_wishlist_v_2_settings_fields', array() ); $return_settings_fields = array(); foreach ( $setting_fields as $i => $field ) { if ( 'sub_section' === $field['type'] ) { $return_settings_fields = array_merge( $return_settings_fields, $field['sub_sections'] ); unset( $setting_fields[ $i ] ); } } $return_settings_fields = array_merge( $return_settings_fields, $setting_fields ); $return_settings_fields['remove_all_plugin_data_on_uninstall'] = array( 'label' => __( 'Remove all wishlist data on uninstall', 'addonify-wishlist' ), 'description' => __( 'If enabled, all of addonify wishlist plugin\'s data will be removed without leaving a footprint.', 'addonify-wishlist' ), 'type' => 'switch', 'className' => '', 'value' => addonify_wishlist_get_option( 'remove_all_plugin_data_on_uninstall' ), ); return $return_settings_fields; } } if ( ! function_exists( 'addonify_wishlist_v_2_get_settings_fields' ) ) { /** * Define settings sections and respective settings fields. * * @since 2.0.0 * @return array */ function addonify_wishlist_v_2_get_settings_fields() { return apply_filters( 'addonify_wishlist_v_2_get_settings_fields', array( 'settings_values' => addonify_wishlist_v_2_get_settings_values(), 'tabs' => array( 'general' => array( 'title' => __( 'General Settings', 'addonify-wishlist' ), 'icon' => " ", 'sections' => apply_filters( 'addonify_wishlist_general_v_2_options', array() ), ), 'popup_modal' => array( 'title' => __( 'Popup Modals', 'addonify-wishlist' ), 'icon' => '', 'sections' => apply_filters( 'addonify_wishlist_popup_modal_v_2_options', array() ), ), 'wishlist_button' => array( 'title' => __( 'Wishlist Button', 'addonify-wishlist' ), 'icon' => "", 'sections' => apply_filters( 'addonify_wishlist_wishlist_button_v_2_options', array() ), ), 'wishlist_page' => array( 'title' => __( 'Wishlist Page', 'addonify-wishlist' ), 'icon' => "", 'sections' => apply_filters( 'addonify_wishlist_wishlist_page_v_2_options', array() ), ), 'wishlist_sidebar' => array( 'title' => __( 'Wishlist Sidebar', 'addonify-wishlist' ), 'icon' => "", 'sections' => apply_filters( 'addonify_wishlist_wishlist_sidebar_v_2_options', array() ), ), 'wishlist_notice' => array( 'title' => __( 'Wishlist Notice', 'addonify-wishlist' ), 'icon' => "", 'sections' => apply_filters( 'addonify_wishlist_notice_options', array() ), ), 'tools' => array( 'title' => __( 'Tools', 'addonify-wishlist' ), 'icon' => "", 'sections' => array( 'generate-wishlist-page' => array( 'title' => 'Generate Page', 'type' => 'sub_section', 'sub_sections' => array( 'generate-wishlist-page' => array( 'label' => esc_html__( 'Generate wishlist page', 'addonify-wishlist' ), 'type' => 'action-button', 'task' => array( 'type' => 'POST', 'endpoint' => 'create_wishlist_page', 'opperation' => 'reset', 'buttonLabel' => esc_html__( 'Generate', 'addonify-wishlist' ), 'buttonIcon' => '', 'buttonClass' => '', 'confirm' => array( 'required' => true, 'confirmBtnLabel' => esc_html__( 'Yes', 'addonify-wishlist' ), 'cancelBtnLabel' => esc_html__( 'No, cancel', 'addonify-wishlist' ), 'content' => esc_html__( 'Do you really want to create new wishlist page?', 'addonify-wishlist' ), 'size' => '350px', ), ), ), ), ), 'reset-import-export' => array( 'title' => 'Export/Import/Reset Tools', 'type' => 'sub_section', 'sub_sections' => array( 'export-options' => array( 'label' => esc_html__( 'Export settings', 'addonify-wishlist' ), 'description' => esc_html__( 'Backup all settings that can be imported in future.', 'addonify-wishlist' ), 'type' => 'export-option', 'buttonLabel' => esc_html__( 'Export', 'addonify-wishlist' ), ), 'import-options' => array( 'label' => esc_html__( 'Import settings', 'addonify-wishlist' ), 'caption' => esc_html__( 'Drop a file here or click here to upload.', 'addonify-wishlist' ), 'note' => esc_html__( 'Only .json file is permitted.', 'addonify-wishlist' ), 'description' => esc_html__( 'Drag or upload the .json file that you had exported.', 'addonify-wishlist' ), 'type' => 'import-option', 'width' => 'full', ), 'reset-options' => array( 'label' => esc_html__( 'Reset settings', 'addonify-wishlist' ), 'type' => 'action-button', 'description' => esc_html__( 'All the settings will be set to default.', 'addonify-wishlist' ), 'task' => array( 'type' => 'POST', 'endpoint' => 'reset_options', 'opperation' => 'reset', 'buttonLabel' => esc_html__( 'Reset', 'addonify-wishlist' ), 'buttonIcon' => '', 'buttonClass' => 'danger', 'confirm' => array( 'required' => true, 'confirmBtnLabel' => esc_html__( 'Yes', 'addonify-wishlist' ), 'cancelBtnLabel' => esc_html__( 'No, cancel', 'addonify-wishlist' ), 'content' => esc_html__( 'Are you sure you would like to reset all settings?', 'addonify-wishlist' ), 'size' => '200px', ), ), ), 'remove_all_plugin_data_on_uninstall' => array( 'label' => __( 'Remove data on plugin uninstallation.', 'addonify-wishlist' ), 'description' => __( 'Enable this option to remove all data related to the plugin on plugin unistallation.', 'addonify-wishlist' ), 'type' => 'switch', 'className' => '', 'badge' => 'Required', 'value' => addonify_wishlist_get_option( 'remove_all_plugin_data_on_uninstall' ), ), ), ), ), ), ), ) ); } }