File "JetSmartFilters.php"
Full Path: /home/vantageo/public_html/cache/cache/cache/cache/cache/.wp-cli/wp-content/plugins/ajax-search-for-woocommerce/includes/Integrations/Plugins/JetSmartFilters/JetSmartFilters.php
File size: 5.93 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace DgoraWcas\Integrations\Plugins\JetSmartFilters;
use DgoraWcas\Helpers;
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) {
exit;
}
/**
* Integration with JetSmartFilters
*
* Plugin URL: https://crocoblock.com/plugins/jetsmartfilters/
* Author: Crocoblock
*/
class JetSmartFilters {
public function init() {
if ( !function_exists( 'jet_smart_filters' ) ) {
return;
}
if ( version_compare( jet_smart_filters()->get_version(), '1.8.3' ) < 0 ) {
return;
}
// Widget: Elementor Pro Archive Products
add_filter( 'jet-smart-filters/query/final-query', array($this, 'filter_query') );
add_filter(
'dgwt/wcas/helpers/is_search_query',
array($this, 'allow_to_process_search_query'),
10,
2
);
// Widget: JetWooBuilder Products Grid
add_filter( 'jet-woo-builder/shortcodes/jet-woo-products/final-query-args', array($this, 'filter_query_builder_grid'), 10 );
// Widget: JetWooBuilder Products List
add_filter(
'jet-woo-builder/shortcodes/jet-woo-products-list/query-args',
array($this, 'filter_query_builder_list'),
10,
2
);
add_filter( 'jet-smart-filters/filters/localized-data', array($this, 'jet_smart_filter_settings'), 10 );
}
/**
* Mark query arguments if they relate to product search initiated by the integrated plugin
* Widget: Elementor Pro Archive Products (epro-archive-products)
* Widget: JetEngine Listing Grid (jet-engine/default)
*
* @param array $query
*
* @return array
*/
public function filter_query( $query ) {
if ( isset( $_POST['action'] ) && $_POST['action'] === 'jet_smart_filters' && isset( $_POST['provider'] ) && in_array( $_POST['provider'], array('epro-archive-products/default', 'jet-engine/default') ) && !empty( $_POST['defaults']['s'] ) ) {
$query['run_wcas_search'] = true;
}
return $query;
}
/**
* Filter search results if the query was marked in the filter above
* Widget: Elementor Pro Archive Products (epro-archive-products)
*
* OR
*
* Filter WP_Query used by plugin to determine counters for filter values.
*
* @param bool $enable
* @param \WP_Query $query
*
* @return bool
*/
public function allow_to_process_search_query( $enable, $query ) {
if ( is_object( $query ) && is_a( $query, 'WP_Query' ) && isset( $query->query_vars['run_wcas_search'] ) ) {
$enable = true;
}
// @since 1.26.0.
if ( is_object( $query ) && is_a( $query, 'WP_Query' ) && !empty( $query->query_vars['s'] ) && Helpers::is_running_inside_class( 'Jet_Smart_Filters_Indexer_Data', 20 ) && Helpers::isRunningInsideFunction( 'get_queried_ids', 20 ) ) {
$enable = true;
}
return $enable;
}
/**
* Filter arguments of builder's own query
* Widget: JetWooBuilder Products Grid (jet-woo-products-grid)
*
* @param $query_args
*
* @return mixed
*/
public function filter_query_builder_grid( $query_args ) {
$phrase = false;
if ( $this->is_jet_woo_products_query( $query_args, 'jet-woo-products-grid/default' ) ) {
$phrase = $_GET['s'];
} else {
if ( $this->is_jet_woo_products_ajax_query( $query_args, 'jet-woo-products-grid/default' ) ) {
$phrase = $_POST['settings']['dgwt_wcas_s'];
}
}
if ( $phrase ) {
if ( !dgoraAsfwFs()->is_premium() ) {
$query_args['post__in'] = Helpers::searchProducts( $phrase );
}
}
return $query_args;
}
/**
* Filter arguments of builder's own query
* Widget: JetWooBuilder Products List (jet-woo-products-list)
*
* @param $query_args
*
* @return mixed
*/
public function filter_query_builder_list( $query_args, $products_list_shortcode ) {
$phrase = false;
if ( $this->is_jet_woo_products_query( $query_args, 'jet-woo-products-list/default' ) ) {
$phrase = $_GET['s'];
} else {
if ( $this->is_jet_woo_products_ajax_query( $query_args, 'jet-woo-products-list/default' ) ) {
$phrase = $_POST['settings']['dgwt_wcas_s'];
}
}
if ( $phrase ) {
if ( !dgoraAsfwFs()->is_premium() ) {
$query_args['post__in'] = Helpers::searchProducts( $phrase );
}
}
return $query_args;
}
/**
* Passing the search phrase to the plugin settings
*
* Widget: JetWooBuilder Products Grid (jet-woo-products-grid)
* Widget: JetWooBuilder Products List (jet-woo-products-list)
*
* @param array $settings
*
* @return array
*/
public function jet_smart_filter_settings( $settings ) {
if ( Helpers::isProductSearchPage() ) {
if ( isset( $settings['settings']['jet-woo-products-grid']['default'] ) && !empty( $_GET['s'] ) ) {
$settings['settings']['jet-woo-products-grid']['default']['dgwt_wcas_s'] = $_GET['s'];
}
if ( isset( $settings['settings']['jet-woo-products-list']['default'] ) && !empty( $_GET['s'] ) ) {
$settings['settings']['jet-woo-products-list']['default']['dgwt_wcas_s'] = $_GET['s'];
}
}
return $settings;
}
private function is_jet_woo_products_query( $query_args, $type ) {
return Helpers::isProductSearchPage() && isset( $query_args['jet_smart_filters'] ) && $query_args['jet_smart_filters'] === $type;
}
private function is_jet_woo_products_ajax_query( $query_args, $type ) {
return isset( $_POST['settings']['dgwt_wcas_s'] ) && !empty( $_POST['settings']['dgwt_wcas_s'] ) && isset( $query_args['jet_smart_filters'] ) && $query_args['jet_smart_filters'] === $type;
}
}