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 '

', '', esc_html__( 'Filter Presets', 'annasta-filters' ), '', '', '', $this->preset->name, '

'; } 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; } } } ?>