File "index.php"

Full Path: /home/vantageo/public_html/cache/cache/cache/cache/cache/cache/.wp-cli/wp-content/plugins/woocommerce-products-filter/ext/by_onsales/index.php
File size: 3.45 KB
MIME-type: text/x-php
Charset: utf-8

<?php
if (!defined('ABSPATH'))
    die('No direct access allowed');

final class WOOF_EXT_BY_ONSALES extends WOOF_EXT {

    public $type = 'by_html_type';
    public $html_type = 'by_onsales'; //your custom key here
    public $index = 'onsales';
    public $html_type_dynamic_recount_behavior = 'none';

    public function __construct()
    {
        parent::__construct();
        $this->init();
    }

    public function get_ext_path()
    {
        return plugin_dir_path(__FILE__);
    }
    public function get_ext_override_path()
    {
        return get_stylesheet_directory(). DIRECTORY_SEPARATOR ."woof". DIRECTORY_SEPARATOR ."ext". DIRECTORY_SEPARATOR .$this->html_type. DIRECTORY_SEPARATOR;
    }
    public function get_ext_link()
    {
        return plugin_dir_url(__FILE__);
    }

    public function woof_add_items_keys($keys)
    {
        $keys[] = $this->html_type;
        return $keys;
    }

    public function init()
    {
        add_filter('woof_add_items_keys', array($this, 'woof_add_items_keys'));
        add_action('woof_print_html_type_options_' . $this->html_type, array($this, 'woof_print_html_type_options'), 10, 1);
        add_action('woof_print_html_type_' . $this->html_type, array($this, 'print_html_type'), 10, 1);

        self::$includes['js']['woof_' . $this->html_type . '_html_items'] = $this->get_ext_link() . 'js/' . $this->html_type . '.js';
        self::$includes['css']['woof_' . $this->html_type . '_html_items'] = $this->get_ext_link() . 'css/' . $this->html_type . '.css';
        self::$includes['js_init_functions'][$this->html_type] = 'woof_init_onsales';
		self::$includes['js_lang_custom'][$this->index] = esc_html__('On sale', 'woocommerce-products-filter');
		
		add_filter('woof_dynamic_count_attr', array($this, 'dynamic_recount'), 30, 2);
    }

    //settings page hook
    public function woof_print_html_type_options()
    {        
        woof()->render_html_e($this->get_ext_path() . 'views' . DIRECTORY_SEPARATOR . 'options.php', array(
            'key' => $this->html_type,
            "woof_settings" => get_option('woof_settings', array())
                )
        );
    }
    public function dynamic_recount($args, $type) {
		if( 'onsale' == $type){
			$all_ids = wc_get_product_ids_on_sale() ;
			if(!count($all_ids)){
				$all_ids = array(0);
			}
			if(!isset($args['post__in'])){
				$args['post__in'] = $all_ids ;
			}else{
				$args['post__in'] = array_map($args['post__in'], $all_ids);
			}
		}		
		return $args;
	}
	public function assemble_query_params(&$meta_query, &$query = NULL)
    {
        
        $request = woof()->get_request_data();
        //http://stackoverflow.com/questions/20990199/woocommerce-display-only-on-sale-products-in-shop

        if (isset($request['onsales']) AND $request['onsales'] == 'salesonly')
        {


            if (is_object($query))
            {
                $query->set('post__in', array_merge(array(0), wc_get_product_ids_on_sale() ));
            }

            if (is_array($query))
            {
                $query['post__in'] = array_merge(array(0), wc_get_product_ids_on_sale() );
            }

            add_filter('woof_products_query', array($this, 'woof_products_query'), 9999);
        }

        return $meta_query;
    }

    public function woof_products_query($args)
    {
        $args['post__in'] = array_merge(array(0), wc_get_product_ids_on_sale());
        return $args;
    }

}

WOOF_EXT::$includes['html_type_objects']['by_onsales'] = new WOOF_EXT_BY_ONSALES();