id = 'annasta-filters';
$this->label = __( 'annasta Filters', 'annasta-filters' );
$this->settings_url = admin_url( 'admin.php?page=wc-settings&tab=annasta-filters' );
if( isset( $_GET['tab'] ) && 'annasta-filters' === $_GET['tab'] && isset( $_GET['awf-preset'] ) ) {
$preset_id = (int) $_GET['awf-preset'];
$this->preset = new A_W_F_preset( $preset_id );
}
add_action( 'woocommerce_settings_' . $this->id, array( $this, 'output' ) );
add_action( 'woocommerce_settings_save_' . $this->id, array( $this, 'save' ), 10 );
add_action( 'update_option_awf_pretty_scrollbars', array( $this, 'after_awf_pretty_scrollbars_update' ), 10, 3 );
if( method_exists( A_W_F::$admin, 'save_premium_settings' ) ) {
add_action( 'woocommerce_settings_save_' . $this->id, array( A_W_F::$admin, 'save_premium_settings' ), 20 );
if( isset( $_GET['tab'] ) && 'annasta-filters' === $_GET['tab'] && isset( $_GET['section'] ) && 'plugin-settings' === $_GET['section'] ) {
add_action( 'woocommerce_admin_field_awf_advanced_plugin', array( A_W_F::$admin, 'display_advanced_plugin_settings' ) );
}
}
parent::__construct();
}
public function get_sections() {
$sections = array(
'' => __( 'Filter presets', 'annasta-filters' ),
'styles-settings' => __( 'Styles', 'annasta-filters' ),
'plugin-settings' => __( 'Plugin Settings', 'annasta-filters' )
);
return apply_filters( 'woocommerce_get_sections_' . $this->id, $sections );
}
public function get_settings( $current_section = '' ) {
$settings = array();
if ( 'plugin-settings' == $current_section ) {
return A_W_F::$admin->get_plugin_settings();
} elseif( 'styles-settings' == $current_section ) {
return A_W_F::$admin->get_styles_settings();
} else {
if( ! empty( $this->preset ) ) {
return A_W_F::$admin->get_preset_settings( $this->preset );
}
}
return $settings;
}
public function output() {
global $current_section;
$settings = $this->get_settings( $current_section );
echo '
';
if ( 'plugin-settings' == $current_section ) {
WC_Admin_Settings::output_fields( $settings );
} elseif( 'styles-settings' == $current_section ) {
WC_Admin_Settings::output_fields( $settings );
} else {
if( ! empty( $this->preset ) ) {
$this->preset = new A_W_F_preset( $this->preset->id ); // refresh for cases it's a save
$this->display_preset_breadcrumb();
WC_Admin_Settings::output_fields( $settings );
echo '
';
echo '
', _e( 'Display on', 'annasta-filters' ), '
';
A_W_F::$admin->display_associations( $this->preset->id );
A_W_F::$admin->display_overrides( $this->preset->id );
$this->display_filters();
} else {
$this->display_presets_list();
}
}
echo '
';
echo '
';
}
public function save() {
global $current_section;
$settings = $this->get_settings( $current_section );
WC_Admin_Settings::save_fields( $settings );
if( ! empty( $this->preset ) ) {
$clear_counts_cache = false;
$generate_styles_css = false;
foreach( A_W_F::$presets[$this->preset->id]['filters'] as $filter_id => $position ) {
$filter = new A_W_F_filter( $this->preset->id, $filter_id );
$response = A_W_F::$admin->update_filter( $filter );
if( isset( $response['clear_counts_cache'] ) ) { $clear_counts_cache = true; }
if( isset( $response['generate_styles_css'] ) ) { $generate_styles_css = true; }
}
if( $clear_counts_cache ) { A_W_F::$admin->clear_product_counts_cache(); }
if( $generate_styles_css ) { A_W_F::$admin->generate_styles_css(); }
}
}
public function after_awf_pretty_scrollbars_update( $old_value, $new_value, $option_name ) {
if( $old_value !== $new_value ) {
A_W_F::$admin->generate_styles_css();
}
}
private function display_presets_list() {
global $hide_save_button;
$hide_save_button = true;
$associations_by_preset = A_W_F::$admin->build_associations_lists();
include( A_W_F_PLUGIN_PATH . 'templates/admin/presets-list.php' );
}
private function display_preset_breadcrumb() {
echo '';
}
public function display_filters() {
$preset_filters = $this->get_preset_filters();
$filters_select = array_flip( array_diff( A_W_F::$modules, $preset_filters, array( 'taxonomy' ) ) );
foreach( $filters_select as $filter_name => $label ) { $filters_select[$filter_name] = A_W_F::$admin->get_filter_title( $filter_name ); }
$taxonomies = get_object_taxonomies( 'product', 'objects' );
foreach( $taxonomies as $t ) {
if( in_array( $t->name, A_W_F::$excluded_taxonomies ) ) continue;
$taxonomy_filter_name = 'taxonomy--' . $t->name;
if( ! in_array( $taxonomy_filter_name, $preset_filters ) ) {
$filters_select[$taxonomy_filter_name] = $t->label;
}
}
include( A_W_F_PLUGIN_PATH . 'templates/admin/filters-list.php' );
}
private function get_preset_filters() {
$filters = array();
foreach( A_W_F::$presets[$this->preset->id]['filters'] as $filter_id => $position ) {
$prefix = A_W_F_filter::get_prefix( $this->preset->id, $filter_id );
$name = get_option( $prefix . 'name' );
$filters[] = $name;
}
return $filters;
}
}
}
?>