*/
/**
* 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' ),
),
),
),
),
),
),
)
);
}
}