<?php

/**

 * @author    ThemePunch <info@themepunch.com>

 * @link      http://www.themepunch.com/

 * @copyright 2015 ThemePunch

 */

 

if( !defined( 'ABSPATH') ) exit();



class RevSliderWooCommerce{

	

	const ARG_REGULAR_PRICE_FROM = "reg_price_from";

	const ARG_REGULAR_PRICE_TO = "reg_price_to";

	const ARG_SALE_PRICE_FROM = "sale_price_from";

	const ARG_SALE_PRICE_TO = "sale_price_to";

	const ARG_IN_STOCK_ONLY = "instock_only";		

	const ARG_FEATURED_ONLY = "featured_only";		

	

	const META_REGULAR_PRICE = "_regular_price";

	const META_SALE_PRICE = "_sale_price";

	const META_SKU = "_sku";	//can be 'instock' or 'outofstock'

	const META_STOCK = "_stock";	//can be 'instock' or 'outofstock'

	

	

	const SORTBY_NUMSALES = "meta_num_total_sales";

	const SORTBY_REGULAR_PRICE = "meta_num__regular_price";

	const SORTBY_SALE_PRICE = "meta_num__sale_price";

	const SORTBY_FEATURED = "meta__featured";

	const SORTBY_SKU = "meta__sku";

	const SORTBY_STOCK = "meta_num_stock";

	

	/**

	 * 

	 * return true / false if the woo commerce exists

	 */

	public static function isWooCommerceExists(){

		

		if(class_exists( 'Woocommerce' ))

			return(true);

		

		return(false);

	}

	

	

	/**

	 * compare wc current version to given version

	 */

	public static function version_check( $version = '1.0' ) {

		if(self::isWooCommerceExists()){

			global $woocommerce;

			if(version_compare($woocommerce->version, $version, '>=')){

				return true;

			}

		}

		return false;

	}

	

	

	/**

	 * 

	 * get wc post types

	 */

	public static function getCustomPostTypes(){

		$arr = array();

		$arr["product"] = __("Product", 'revslider');

		$arr["product_variation"] = __("Product Variation", 'revslider');

		

		return($arr);

	}

	

	/**

	 * 

	 * get price query

	 */

	private static function getPriceQuery($priceFrom, $priceTo, $metaTag){

		

			if(empty($priceFrom))

				$priceFrom = 0;

				

			if(empty($priceTo))

				$priceTo = 9999999999;

			

			$query = array( 'key' => $metaTag,

								   'value' => array( $priceFrom, $priceTo),

								   'type' => 'numeric',

								   'compare' => 'BETWEEN');

		

		return($query);

	}

	

	

	/**

	 * 

	 * get meta query for filtering woocommerce posts. 

	 */

	public static function getMetaQuery($args){

		

		$regPriceFrom = RevSliderFunctions::getVal($args, self::ARG_REGULAR_PRICE_FROM);

		$regPriceTo = RevSliderFunctions::getVal($args, self::ARG_REGULAR_PRICE_TO);

		

		$salePriceFrom = RevSliderFunctions::getVal($args, self::ARG_SALE_PRICE_FROM);

		$salePriceTo = RevSliderFunctions::getVal($args, self::ARG_SALE_PRICE_TO);

		

		$inStockOnly = RevSliderFunctions::getVal($args, self::ARG_IN_STOCK_ONLY);

		$featuredOnly = RevSliderFunctions::getVal($args, self::ARG_FEATURED_ONLY);

		

		$arrQueries = array();

		$tax_query = array();

		

		//get regular price array

		if(!empty($regPriceFrom) || !empty($regPriceTo)){

			$arrQueries[] = self::getPriceQuery($regPriceFrom, $regPriceTo, self::META_REGULAR_PRICE);

		}

		

		//get sale price array

		if(!empty($salePriceFrom) || !empty($salePriceTo)){

			$arrQueries[] = self::getPriceQuery($salePriceFrom, $salePriceTo, self::META_SALE_PRICE);

		}

		

		if($inStockOnly == "on"){

			$tax_query[] = array(

				'taxonomy' => 'product_visibility',

				'field'    => 'name',

				'terms'    => 'outofstock',

				'operator' => 'NOT IN',

			);

		}

		

		if($featuredOnly == "on"){

			$tax_query[] = array(

				'taxonomy' => 'product_visibility',

				'field'    => 'name',

				'terms'    => 'featured',

			);

		}

		

		

		$query = array();

		if(!empty($arrQueries)){

			$query = array("meta_query"=>$arrQueries);

		}

		

		if(!empty($tax_query)){

			$query['tax_query'] = $tax_query;

		}

		

		return($query);			

	}

	

	

	/**

	 * 

	 * get sortby function including standart wp sortby array

	 */

	public static function getArrSortBy(){

		

		$arrSortBy = array();

		$arrSortBy[self::SORTBY_REGULAR_PRICE] = __("Regular Price", 'revslider');

		$arrSortBy[self::SORTBY_SALE_PRICE] = __("Sale Price", 'revslider');

		$arrSortBy[self::SORTBY_NUMSALES] = __("Number Of Sales", 'revslider');

		$arrSortBy[self::SORTBY_FEATURED] = __("Featured Products", 'revslider');

		$arrSortBy[self::SORTBY_SKU] = __("SKU", 'revslider');

		$arrSortBy[self::SORTBY_STOCK] = __("Stock Quantity", 'revslider');

		

		return($arrSortBy);

	}

	

	

}	//end of the class

	

?>