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