PluginProbe ʕ •ᴥ•ʔ
Discount Rules for WooCommerce / 1.6.10
Discount Rules for WooCommerce v1.6.10
1.4.39 1.4.4 1.4.40 1.4.41 1.4.42 1.4.43 1.4.44 1.4.45 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.10 1.5.11 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.14 1.6.15 1.6.16 1.6.17 1.6.18 1.6.19 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.10 1.7.11 1.7.12 1.7.13 1.7.14 1.7.15 1.7.16 1.7.17 1.7.18 1.7.19 1.7.2 1.7.20 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.2 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.2 2.1.0 2.1.1 2.1.2 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.10 2.3.11 2.3.12 2.3.13 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.4.0 2.4.1 2.4.2 2.4.4 2.4.5 2.5.0 2.5.2 2.5.3 2.5.4 2.6.0 2.6.1 2.6.10 2.6.11 2.6.12 2.6.13 2.6.14 2.6.15 2.6.2 2.6.3 2.6.4 2.6.5 2.6.6 2.6.7 2.6.8 2.6.9 trunk 1.1 1.2 1.3 1.4 1.4.1 1.4.10 1.4.11 1.4.12 1.4.13 1.4.14 1.4.15 1.4.16 1.4.17 1.4.18 1.4.19 1.4.2 1.4.20 1.4.21 1.4.22 1.4.23 1.4.24 1.4.25 1.4.26 1.4.27 1.4.28 1.4.29 1.4.3 1.4.30 1.4.31 1.4.32 1.4.33 1.4.34 1.4.35 1.4.36 1.4.37 1.4.38
woo-discount-rules / loader.php
woo-discount-rules Last commit date
assets 7 years ago helper 7 years ago i18n 7 years ago includes 7 years ago vendor 7 years ago view 7 years ago loader.php 7 years ago readme.txt 7 years ago woo-discount-rules.php 7 years ago
loader.php
291 lines
1 <?php
2 if (!defined('ABSPATH')) exit; // Exit if accessed directly
3
4 /**
5 * Plugin Directory.
6 */
7 define('WOO_DISCOUNT_DIR', untrailingslashit(plugin_dir_path(__FILE__)));
8
9 /**
10 * Plugin Directory URI.
11 */
12 define('WOO_DISCOUNT_URI', untrailingslashit(plugin_dir_url(__FILE__)));
13
14 /**
15 * Plugin Base Name.
16 */
17 define('WOO_DISCOUNT_PLUGIN_BASENAME', plugin_basename(__FILE__));
18
19 if(!function_exists('get_plugin_data')){
20 require_once ABSPATH . 'wp-admin/includes/plugin.php';
21 }
22
23 /**
24 * Version of Woo Discount Rules.
25 */
26 $pluginDetails = get_plugin_data(plugin_dir_path(__FILE__).'woo-discount-rules.php');
27 define('WOO_DISCOUNT_VERSION', $pluginDetails['Version']);
28
29 if(!class_exists('FlycartWooDiscountRules')){
30 class FlycartWooDiscountRules{
31
32 private static $instance;
33 public $discountBase;
34 public $pricingRules;
35 public $config;
36
37 /**
38 * To run the plugin
39 * */
40 public static function init() {
41 if ( self::$instance == null ) {
42 self::$instance = new FlycartWooDiscountRules();
43 }
44 return self::$instance;
45 }
46
47 /**
48 * FlycartWooDiscountRules constructor
49 * */
50 public function __construct() {
51 $this->includeFiles();
52 $this->discountBase = new FlycartWooDiscountBase();
53 $this->runUpdater();
54 $this->pricingRules = new FlycartWooDiscountRulesPricingRules();
55 if (is_admin()) {
56 $this->loadAdminScripts();
57 }
58 if(FlycartWooDiscountRulesGeneralHelper::doIHaveToRun()){
59 $this->loadSiteScripts();
60 }
61 }
62
63 /**
64 * To include Files
65 * */
66 protected function includeFiles(){
67 include_once('helper/woo-function.php');
68 include_once('includes/pricing-rules.php');
69 include_once('helper/general-helper.php');
70 include_once('includes/cart-rules.php');
71 include_once('includes/discount-base.php');
72 include_once('helper/purchase.php');
73 require_once __DIR__ . '/vendor/autoload.php';
74 }
75
76 /**
77 * Run Plugin updater
78 * */
79 protected function runUpdater(){
80 try{
81 require plugin_dir_path( __FILE__ ).'/vendor/yahnis-elsts/plugin-update-checker/plugin-update-checker.php';
82
83 $purchase_helper = new FlycartWooDiscountRulesPurchase();
84 $purchase_helper->init();
85 $update_url = $purchase_helper->getUpdateURL();
86 if(!$purchase_helper->isPro()){
87 $dlid = $this->discountBase->getConfigData('license_key', null);
88 if(empty($dlid)) return false;
89 }
90 $myUpdateChecker = Puc_v4_Factory::buildUpdateChecker(
91 $update_url,
92 plugin_dir_path( __FILE__ ).'woo-discount-rules.php',
93 'woo-discount-rules'
94 );
95 add_action( 'after_plugin_row', array($purchase_helper, 'woodisc_after_plugin_row'),10,3 );
96
97 add_action('wp_ajax_forceValidateLicenseKey', array($purchase_helper, 'forceValidateLicenseKey'));
98
99 add_action( 'admin_notices', array($purchase_helper, 'errorNoticeInAdminPages'));
100 } catch (Exception $e){}
101 }
102
103 /**
104 * Load Admin scripts
105 * */
106 protected function loadAdminScripts(){
107 // Init in Admin Menu
108 add_action('admin_menu', array($this->discountBase, 'adminMenu'));
109 add_action('wp_ajax_savePriceRule', array($this->discountBase, 'savePriceRule'));
110 add_action('wp_ajax_saveCartRule', array($this->discountBase, 'saveCartRule'));
111 add_action('wp_ajax_saveConfig', array($this->discountBase, 'saveConfig'));
112 add_action('wp_ajax_loadProductSelectBox', array($this->discountBase, 'loadProductSelectBox'));
113
114 add_action('wp_ajax_UpdateStatus', array($this->discountBase, 'updateStatus'));
115 add_action('wp_ajax_RemoveRule', array($this->discountBase, 'removeRule'));
116 add_action('wp_ajax_doBulkAction', array($this->discountBase, 'doBulkAction'));
117 add_action('wp_ajax_createDuplicateRule', array($this->discountBase, 'createDuplicateRule'));
118 }
119
120 /**
121 * Apply discount rules
122 * */
123 public function applyDiscountRules(){
124 $this->discountBase->handlePriceDiscount();
125 remove_action('woocommerce_before_calculate_totals', array($this, 'applyDiscountRules'), 1000);
126 }
127
128 /**
129 * Apply discount rules
130 * */
131 public function applyCartDiscountRules(){
132 $this->discountBase->handleCartDiscount();
133 remove_action('woocommerce_cart_loaded_from_session', array($this, 'applyCartDiscountRules'), 97);
134 }
135
136 /**
137 * Script on product page for loading variant strikeout
138 * */
139 public function script_on_product_page(){
140 $runVariationStrikeoutAjax = apply_filters('woo_discount_rules_run_variation_strikeout_through_ajax', true);
141 $script = '<script>';
142 $script .= 'jQuery( document ).ready( function() {';
143 $do_product_page_strikeout = $this->discountBase->getConfigData('show_price_discount_on_product_page', 'dont');
144 if($do_product_page_strikeout == 'show' && $runVariationStrikeoutAjax) {
145 $script .= 'jQuery( ".single_variation_wrap" ).on( "show_variation", function ( event, variation, purchasable ) {';
146 $script .= ' var container = jQuery(".single_variation .woocommerce-variation-price");';
147 $script .= ' var current_object = jQuery(this);
148 current_object.trigger("woo_discount_rules_before_variant_strikeout");/*container.hide("slow");*/';
149 $script .= ' jQuery.ajax({
150 url: woo_discount_rules.ajax_url,
151 dataType: "json",
152 type: "POST",
153 data: {action: "loadWooDiscountedPriceForVariant", id: variation.variation_id, price_html: variation.price_html},
154 beforeSend: function() {
155 },
156 complete: function() {
157 },
158 success: function (response) {
159 if(response.status == 1){
160 jQuery(".single_variation .woocommerce-variation-price").html(response.price_html);
161 }
162 current_object.trigger("woo_discount_rules_after_variant_strikeout");
163 /*container.show("slow");*/
164 }
165 });';
166 $script .= ' });';
167 }
168 $script .= ' if(jQuery(".woo_discount_rules_variant_table").length > 0){
169 var p_id = jQuery( ".woo_discount_rules_variant_table" ).attr("data-id");';
170 $script .= ' jQuery.ajax({
171 url: woo_discount_rules.ajax_url,
172 type: "POST",
173 data: {action: "loadWooDiscountedDiscountTable", id: p_id},
174 beforeSend: function() {
175 },
176 complete: function() {
177 },
178 success: function (response) {
179 jQuery(".woo_discount_rules_variant_table").html(response);
180 }
181 });';
182 $script .= ' }';
183 $script .= '});';
184 $script .= '</script>';
185
186 echo $script;
187 }
188
189 /**
190 * Load Admin scripts
191 * */
192 protected function loadSiteScripts(){
193 $woocommerce_version = '2.0.0';
194 $pluginDetails = get_plugin_data(WP_PLUGIN_DIR.'/woocommerce/woocommerce.php');
195 if(isset($pluginDetails['Version'])){
196 $woocommerce_version = $pluginDetails['Version'];
197 }
198
199 add_action('woocommerce_after_cart_item_quantity_update', array($this->discountBase, 'handleDiscount'), 100);
200 if(version_compare($woocommerce_version, '3.0', '>=')){
201 add_action('woocommerce_before_calculate_totals', array($this, 'applyDiscountRules'), 1000);
202 add_action('woocommerce_cart_loaded_from_session', array($this, 'applyCartDiscountRules'), 97);
203 add_action( 'woocommerce_after_cart_item_quantity_update', array($this->pricingRules, 'handleBOGODiscountOnUpdateQuantity'), 10, 4 );
204 } else {
205 add_action( 'woocommerce_after_cart_item_quantity_update', array($this->pricingRules, 'handleBOGODiscountOnUpdateQuantity'), 10, 3 );
206 add_action('woocommerce_cart_loaded_from_session', array($this->discountBase, 'handleDiscount'), 100);
207 }
208
209 add_action('woocommerce_add_to_cart', array($this->pricingRules, 'handleBOGODiscount'), 10, 6);
210
211 $add_free_product_on_coupon_applied = $this->discountBase->getConfigData('add_free_product_on_coupon_applied', 0);
212 if($add_free_product_on_coupon_applied){
213 add_action('woocommerce_applied_coupon', array($this->pricingRules, 'handleBOGODiscountAfterApplyCoupon'), 10, 1);
214 }
215
216 // Manually Update Line Item Name.
217 add_filter('woocommerce_cart_item_name', array($this->discountBase, 'modifyName'));
218
219 // Remove Filter to make the previous one as last filter.
220 remove_filter('woocommerce_cart_item_name', 'filter_woocommerce_cart_item_name', 10, 3);
221
222 // Alter the Display Price HTML.
223 add_filter('woocommerce_cart_item_price', array($this->pricingRules, 'replaceVisiblePricesCart'), 1000, 3);
224
225 //replace visible price in product page
226 add_filter('woocommerce_get_price_html', array($this->pricingRules, 'replaceVisiblePricesOptimized'), 100, 3);
227 //replace visible price in product page for variant
228 add_filter('woocommerce_available_variation', array($this->pricingRules, 'replaceVisiblePricesForVariant'), 100, 3);
229
230 // Older Version support this hook.
231 add_filter('woocommerce_cart_item_price_html', array($this->pricingRules, 'replaceVisiblePricesCart'), 1000, 3);
232
233 // Pricing Table of Individual Product.
234 add_filter('woocommerce_before_add_to_cart_form', array($this->pricingRules, 'priceTable'));
235 add_filter('woocommerce_before_add_to_cart_form', array($this, 'script_on_product_page'));
236
237 // Updating Log After Creating Order
238 add_action('woocommerce_thankyou', array($this->discountBase, 'storeLog'));
239
240 add_action( 'woocommerce_after_checkout_form', array($this->discountBase, 'addScriptInCheckoutPage'));
241
242 //To enable on-sale tag
243 add_filter('woocommerce_product_is_on_sale', array($this->pricingRules, 'displayProductIsOnSaleTagOptimized'), 10, 2);
244
245 $force_refresh_cart_widget = $this->discountBase->getConfigData('force_refresh_cart_widget', 0);
246 if($force_refresh_cart_widget){
247 if (isset($_REQUEST['wc-ajax']) && ($_REQUEST['wc-ajax'] == 'add_to_cart' || $_REQUEST['wc-ajax'] == 'remove_from_cart')) {
248 add_action('woocommerce_before_mini_cart', array($this, 'applyRulesBeforeMiniCart'), 10);
249 }
250 }
251
252 add_action('wp_ajax_loadWooDiscountedPriceForVariant', array($this->pricingRules, 'getWooDiscountedPriceForVariant'));
253 add_action('wp_ajax_nopriv_loadWooDiscountedPriceForVariant', array($this->pricingRules, 'getWooDiscountedPriceForVariant'));
254 add_action('wp_ajax_loadWooDiscountedDiscountTable', array($this->pricingRules, 'getWooDiscountedPriceTableForVariant'));
255 add_action('wp_ajax_nopriv_loadWooDiscountedDiscountTable', array($this->pricingRules, 'getWooDiscountedPriceTableForVariant'));
256 // Enqueued script with localized data.
257 wp_register_script( 'woo_discount_rules_site', WOO_DISCOUNT_URI . '/assets/js/woo_discount_rules.js', array(), WOO_DISCOUNT_VERSION );
258 wp_localize_script('woo_discount_rules_site', 'woo_discount_rules', array(
259 'home_url' => get_home_url(),
260 'admin_url' => admin_url(),
261 'ajax_url' => admin_url('admin-ajax.php')
262 ));
263 wp_enqueue_script( 'woo_discount_rules_site' );
264
265 }
266
267 /**
268 * To load the dynamic data in mini-cart/cart widget while add to cart and remove from cart through widget
269 * */
270 public function applyRulesBeforeMiniCart(){
271 WC()->cart->get_cart_from_session();
272 $this->discountBase->handlePriceDiscount();
273 WC()->cart->calculate_totals();
274 }
275 }
276 }
277
278 /**
279 * init Woo Discount Rules
280 */
281 if ( is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
282 global $flycart_woo_discount_rules;
283 $flycart_woo_discount_rules = FlycartWooDiscountRules::init();
284 $purchase_helper = new FlycartWooDiscountRulesPurchase();
285 if($purchase_helper->isPro()){
286 include_once('includes/advanced/free_shipping_method.php');
287 include_once('includes/advanced/pricing-productdependent.php');
288 include_once('includes/advanced/cart-totals.php');
289 include_once('includes/advanced/advanced-helper.php');
290 }
291 }