File "XforWooCommerceFilter.php"
Full Path: /home/vantageo/public_html/cache/cache/cache/cache/.wp-cli/wp-content/plugins/ajax-search-for-woocommerce/includes/Integrations/Plugins/XforWooCommerceFilter/XforWooCommerceFilter.php
File size: 3.53 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* @dgwt_wcas_premium_only
*/
namespace DgoraWcas\Integrations\Plugins\XforWooCommerceFilter;
use DgoraWcas\Helpers;
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) {
exit;
}
/**
* Integration with Product Filter for WooCommerce
*
* Plugin URL: https://xforwoocommerce.com
* Author: 7VX LLC, USA CA
*/
class XforWooCommerceFilter {
protected $post_ids = array();
public function init() {
if ( !class_exists( 'XforWC_Product_Filters' ) ) {
return;
}
if ( version_compare( \XforWC_Product_Filters::$version, '7.2.3' ) < 0 ) {
return;
}
add_action( 'prdctfltr_add_inputs', array($this, 'prdctfltr_add_inputs') );
add_action( 'pre_get_posts', array($this, 'search_products'), 1000000 );
}
/**
* Adding an input to be submitted during an AJAX query when changing filters
*
* Only on search page or during AJAX query on the search page.
*/
public function prdctfltr_add_inputs() {
if ( Helpers::isProductSearchPage() || defined( 'DOING_AJAX' ) && isset( $_POST['action'] ) && $_POST['action'] === 'prdctfltr_respond_550' && isset( $_POST['pf_id'] ) && isset( $_POST['pf_filters'][$_POST['pf_id']]['dgwt_wcas'] ) ) {
echo '<input type="hidden" name="dgwt_wcas" value="1" class="pf_added_input" />';
echo '<input type="hidden" name="post_type" value="product" class="pf_added_input" />';
}
}
/**
* Narrow the list of products in the AJAX search to those returned by our search engine
*
* Filtered custom WP_Query used by this plugin: wp-content/plugins/xforwoocommerce/x-pack/prdctfltr/includes/pf-shortcode.php:1333
*
* @param \WP_Query $query
*/
public function search_products( $query ) {
if ( !$this->is_prdctfltr_ajax_search() ) {
return;
}
if ( $query->get( 'prdctfltr_active' ) !== true ) {
return;
}
$orderby = ( isset( $_POST['pf_filters'][$_POST['pf_id']]['orderby'] ) ? wc_clean( wp_unslash( $_POST['pf_filters'][$_POST['pf_id']]['orderby'] ) ) : 'relevance' );
$order = 'desc';
if ( $orderby === 'price' ) {
$order = 'asc';
}
$phrase = $_POST['pf_filters'][$_POST['pf_id']]['s'];
$post_ids = array();
if ( !dgoraAsfwFs()->is_premium() ) {
$post_ids = Helpers::searchProducts( $phrase );
}
$this->post_ids = $post_ids;
if ( $post_ids ) {
$query->set( 's', '' );
$query->is_search = false;
$query->set( 'post__in', $post_ids );
$query->set( 'orderby', 'post__in' );
}
}
/**
* Checking if we are in the middle of an AJAX query that handles filter and search results refreshing
*
* @return bool
*/
private function is_prdctfltr_ajax_search() {
if ( !defined( 'DOING_AJAX' ) ) {
return false;
}
if ( !isset( $_POST['action'] ) ) {
return false;
}
if ( $_POST['action'] !== 'prdctfltr_respond_550' ) {
return false;
}
if ( !isset( $_POST['pf_id'] ) ) {
return false;
}
if ( !isset( $_POST['pf_filters'][$_POST['pf_id']] ) ) {
return false;
}
if ( !isset( $_POST['pf_filters'][$_POST['pf_id']]['s'] ) ) {
return false;
}
if ( !isset( $_POST['pf_filters'][$_POST['pf_id']]['dgwt_wcas'] ) ) {
return false;
}
return true;
}
}