*/ /** * Include required files for v2. */ require_once plugin_dir_path( __DIR__ ) . 'functions/fields/general-v2.php'; require_once plugin_dir_path( __DIR__ ) . 'functions/fields/button-v2.php'; require_once plugin_dir_path( __DIR__ ) . 'functions/fields/modal-v2.php'; require_once plugin_dir_path( __DIR__ ) . 'functions/fields/product-v2.php'; if ( ! function_exists( 'addonify_quick_view_update_fields_values' ) ) { /** * Update settings * * @since 2.0.0 * * @param string $settings Setting. * @return bool true on success, false otherwise. */ function addonify_quick_view_update_fields_values( $settings = '' ) { if ( is_array( $settings ) && count( $settings ) > 0 ) { $setting_fields = addonify_quick_view_get_fields(); foreach ( $settings as $id => $value ) { $sanitized_value = null; $setting_type = $setting_fields[ $id ]['type']; switch ( $setting_type ) { case 'switch': $sanitized_value = ( $value ) ? '1' : '0'; break; case 'checkbox': $sanitize_args = array( 'choices' => $setting_fields[ $id ]['choices'], 'values' => $value, ); $sanitized_value = addonify_quick_view_sanitize_multi_choices( $sanitize_args ); $sanitized_value = serialize( $value ); // phpcs:ignore break; case 'select': $choices = $setting_fields[ $id ]['choices']; $multiselect = isset( $setting_fields[ $id ]['multiple'] ) ? $setting_fields[ $id ]['multiple'] : false; if ( $multiselect ) { $sanitized_values = array(); $values_exist = true; if ( is_array( $value ) && $value ) { foreach ( $value as $val ) { if ( ! array_key_exists( $val, $choices ) ) { $values_exist = false; break; } else { $sanitized_values[] = sanitize_key( $val ); } } } if ( ! $values_exist ) { $sanitized_values = $defaults[ $id ]; } $sanitized_value = wp_json_encode( $sanitized_values ); } else { // phpcs:ignore if ( array_key_exists( $value, $choices ) ) { $sanitized_value = sanitize_text_field( $value ); } else { $sanitized_value = $defaults[ $id ]; } } break; default: $sanitized_value = sanitize_text_field( $value ); break; } if ( ! update_option( ADDONIFY_QUICK_VIEW_DB_INITIALS . $id, $sanitized_value ) ) { return false; } } return true; } } } if ( ! function_exists( 'addonify_quick_view_get_fields_values' ) ) { /** * Get setting values from database, if not found in data base fetch default values. * * @since 2.0.0 * * @return array Option values. */ function addonify_quick_view_get_fields_values() { $settings_values = array(); $settings_default = addonify_quick_view_setting_defaults(); if ( $settings_default ) { $setting_fields = addonify_quick_view_get_fields(); // get all the avaiable 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 ] = ( addonify_quick_view_get_option( $id ) === '1' ) ? true : false; break; case 'checkbox': $settings_values[ $id ] = addonify_quick_view_get_option( $id ) ? unserialize( addonify_quick_view_get_option( $id ) ): array(); // phpcs:ignore break; case 'select': if ( isset( $setting_fields[ $id ]['multiple'] ) && $setting_fields[ $id ]['multiple'] ) { $setting_value = addonify_quick_view_get_option( $id ); if ( is_array( $setting_value ) ) { $settings_values[ $id ] = $setting_value; } else { $unserialized_setting_value = json_decode( wp_unslash( $setting_value ), true ); if ( is_array( $unserialized_setting_value ) ) { $settings_values[ $id ] = $unserialized_setting_value; } else { $settings_values[ $id ] = array(); } } } else { $settings_values[ $id ] = ( addonify_quick_view_get_option( $id ) === '' ) ? 'Choose value' : addonify_quick_view_get_option( $id ); } break; default: $settings_values[ $id ] = addonify_quick_view_get_option( $id ); break; } } } } return $settings_values; } } /** * Add setting fields into the global setting fields array. * * @since 2.0.0 * @param mixed $fields Setting fields. * @return array */ function addonify_quick_view_add_setting_fields( $fields ) { return apply_filters( 'addonify_quick_view_add_setting_fields', array_merge( $fields, addonify_quick_view_button_fields(), addonify_quick_view_button_style_fields(), addonify_quick_view_general_fields(), addonify_quick_view_general_styles_fields(), addonify_quick_view_modal_box_option_fields(), addonify_quick_view_modal_box_ui_option_fields(), addonify_quick_view_product_content_option_fields(), addonify_quick_view_modal_box_close_button_option_fields(), addonify_quick_view_misc_button_inside_modal_box_fields(), addonify_quick_view_product_option_fields(), addonify_quick_view_product_option_styles_fields(), ), ); } add_filter( 'addonify_quick_view_settings_fields', 'addonify_quick_view_add_setting_fields' ); if ( ! function_exists( 'addonify_quick_view_get_fields' ) ) { /** * Add setting fields into the global setting fields array. * * @since 2.0.0 * @return array */ function addonify_quick_view_get_fields() { $fields = apply_filters( 'addonify_quick_view_settings_fields', array() ); $fields['delete_plugin_data_on_deactivation'] = array( 'label' => esc_html__( 'Remove all data on deactivation', 'addonify-quick-view' ), 'description' => esc_html__( 'If enabled, all of plugin\'s data will be removed without leaving a footprint.', 'addonify-quick-view' ), 'type' => 'switch', 'className' => '', 'value' => addonify_quick_view_get_option( 'delete_plugin_data_on_deactivation' ), ); return $fields; } } if ( ! function_exists( 'addonify_quick_view_get_settings_sections_fields' ) ) { /** * Define settings sections and respective settings fields. * * @since 2.0.0 * @return array */ function addonify_quick_view_get_settings_sections_fields() { return apply_filters( 'addonify_quick_view_get_settings_sections_fields', array( // fetch all the setting data from database, if not fetch default values. 'settings_values' => addonify_quick_view_get_fields_values(), 'tabs' => apply_filters( 'addonify_quick_view_setting_tabs', array( 'general' => array( 'title' => esc_html__( 'General', 'addonify-quick-view' ), 'icon' => " ", 'sections' => apply_filters( 'addonify_quick_view_general_sections', array() ), ), 'button' => array( 'title' => esc_html__( 'Button', 'addonify-quick-view' ), 'icon' => "", 'sections' => apply_filters( 'addonify_quick_view_button_sections', array() ), ), 'modal' => array( 'title' => esc_html__( 'Modal box', 'addonify-quick-view' ), 'icon' => '', 'sections' => apply_filters( 'addonify_quick_view_modal_sections', array() ), ), 'product' => array( 'title' => esc_html__( 'Product', 'addonify-quick-view' ), 'icon' => '', 'sections' => apply_filters( 'addonify_quick_view_product_sections', array() ), ), ) ), ) ); } } if ( ! function_exists( 'addonify_quick_view_add_setting_tabs_tools' ) ) { /** * Add tools setting tab. * * @since 2.0.0 * * @param array $setting_tabs Setting tabs. * @return array */ function addonify_quick_view_add_setting_tabs_tools( $setting_tabs ) { $setting_tabs['tools'] = array( 'title' => esc_html__( 'Tools', 'addonify-quick-view' ), 'icon' => "", 'sections' => array( 'reset-import-export' => array( 'title' => 'Export/Import/Reset Tools', 'type' => 'sub_section', 'sub_sections' => array( 'export-options' => array( 'label' => esc_html__( 'Export settings', 'addonify-quick-view' ), 'description' => esc_html__( 'Backup all settings that can be imported in future.', 'addonify-quick-view' ), 'type' => 'export-option', 'buttonLabel' => esc_html__( 'Export', 'addonify-quick-view' ), ), 'import-options' => array( 'type' => 'import-option', 'label' => esc_html__( 'Import settings', 'addonify-quick-view' ), 'caption' => esc_html__( 'Drop a file here or click here to upload.', 'addonify-quick-view' ), 'note' => esc_html__( 'Only .json file is permitted.', 'addonify-quick-view' ), 'description' => esc_html__( 'Drag or upload the .json file that you had exported.', 'addonify-quick-view' ), 'width' => 'full', ), 'reset-options' => array( 'type' => 'reset-option', 'label' => esc_html__( 'Reset settings', 'addonify-quick-view' ), 'description' => esc_html__( 'All the settings will be set to default.', 'addonify-quick-view' ), 'task' => array( 'type' => 'POST', 'endpoint' => 'reset_options', 'opperation' => 'reset', 'buttonLabel' => esc_html__( 'Reset', 'addonify-quick-view' ), 'buttonIcon' => '', 'buttonClass' => 'danger', 'confirm' => array( 'required' => true, 'confirmBtnLabel' => esc_html__( 'Yes', 'addonify-quick-view' ), 'cancelBtnLabel' => esc_html__( 'No, cancel', 'addonify-quick-view' ), 'content' => esc_html__( 'Are you sure you would like to reset all settings?', 'addonify-quick-view' ), 'size' => '200px', ), ), ), 'delete_plugin_data_on_deactivation' => array( 'label' => esc_html__( 'Delete plugin data on plugin deactivation', 'addonify-quick-view' ), 'description' => apply_filters( 'addonify_quick_view_delete_plugin_data_on_deactivation_option_desc', esc_html__( 'Enable this option to remove all data related to the plugin on plugin uninstallation.', 'addonify-quick-view' ) ), 'type' => 'switch', 'className' => '', 'badge' => 'Required', 'value' => addonify_quick_view_get_option( 'delete_plugin_data_on_deactivation' ), ), ), ), ), ); return $setting_tabs; } add_filter( 'addonify_quick_view_setting_tabs', 'addonify_quick_view_add_setting_tabs_tools', 20 ); }