From 171b48453e1e65db4eb48e9134668fcd7f97517d Mon Sep 17 00:00:00 2001 From: Prashant Singh Date: Wed, 21 Aug 2019 15:22:37 +0530 Subject: [PATCH] Made cart rule conditions interpreter fault tolerant to missing attributes --- .../views/promotions/cart-rule/create.blade.php | 1 - .../Resources/views/promotions/cart-rule/edit.blade.php | 4 +++- packages/Webkul/Discount/src/Helpers/Cart/Discount.php | 9 ++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/Webkul/Admin/src/Resources/views/promotions/cart-rule/create.blade.php b/packages/Webkul/Admin/src/Resources/views/promotions/cart-rule/create.blade.php index f42af8a6a..3314f79b0 100644 --- a/packages/Webkul/Admin/src/Resources/views/promotions/cart-rule/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/promotions/cart-rule/create.blade.php @@ -104,7 +104,6 @@ diff --git a/packages/Webkul/Admin/src/Resources/views/promotions/cart-rule/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/promotions/cart-rule/edit.blade.php index 613aa47f8..8519e402a 100644 --- a/packages/Webkul/Admin/src/Resources/views/promotions/cart-rule/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/promotions/cart-rule/edit.blade.php @@ -106,7 +106,7 @@ @@ -704,6 +704,8 @@ this.conditions_list.push({'criteria': this.match_criteria}); this.all_conditions = JSON.stringify(this.conditions_list); + + this.conditions_list.pop(); } this.$validator.validateAll().then(result => { diff --git a/packages/Webkul/Discount/src/Helpers/Cart/Discount.php b/packages/Webkul/Discount/src/Helpers/Cart/Discount.php index e1334315d..7df74e404 100644 --- a/packages/Webkul/Discount/src/Helpers/Cart/Discount.php +++ b/packages/Webkul/Discount/src/Helpers/Cart/Discount.php @@ -725,6 +725,10 @@ abstract class Discount $result = true; foreach ($conditions as $condition) { + if (! isset($condition->attribute) || ! isset($condition->condition) || !isset($condition->value)) { + continue; + } + if (isset($condition->attribute)) { $actual_value = ${$condition->attribute}; @@ -851,9 +855,12 @@ abstract class Discount } foreach ($conditions as $condition) { + if (!isset($condition->attribute) || ! isset($condition->condition) || !isset($condition->value)) { + continue; + } + if (isset($condition->attribute)) { $actual_value = ${$condition->attribute}; - } else { $result = false; }