diff --git a/packages/Webkul/Admin/src/Resources/lang/ar/app.php b/packages/Webkul/Admin/src/Resources/lang/ar/app.php index 1f95df145..001aabf36 100644 --- a/packages/Webkul/Admin/src/Resources/lang/ar/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/ar/app.php @@ -1,6 +1,5 @@ - - 'حفظ', 'create' => 'خلق', @@ -1010,6 +1009,7 @@ return [ 'choose-condition-to-add' => 'اختر شرط لإضافته', 'cart-attribute' => 'سمة سلة التسوق', 'subtotal' => 'المجموع الفرعي', + 'additional' => 'Additional Information', 'total-items-qty' => 'إجمالي كمية العناصر', 'total-weight' => 'الوزن الكلي', 'payment-method' => 'طريقة الدفع او السداد', diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index 7cbeee2e2..72a7a48a4 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -1010,6 +1010,7 @@ return [ 'choose-condition-to-add' => 'Choose a condition to add', 'cart-attribute' => 'Cart Attribute', 'subtotal' => 'Subtotal', + 'additional' => 'Additional Information', 'total-items-qty' => 'Total Items Qty', 'total-weight' => 'Total Weight', 'payment-method' => 'Payment Method', diff --git a/packages/Webkul/Admin/src/Resources/lang/fa/app.php b/packages/Webkul/Admin/src/Resources/lang/fa/app.php index 4aff942c4..e6058fd90 100644 --- a/packages/Webkul/Admin/src/Resources/lang/fa/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/fa/app.php @@ -1010,6 +1010,7 @@ return [ 'choose-condition-to-add' => 'شرطی را برای اضافه کردن انتخاب کنید', 'cart-attribute' => 'ویژگی سبد خرید', 'subtotal' => 'فرعی', + 'additional' => 'Additional Information', 'total-items-qty' => 'تعداد کل موارد', 'total-weight' => 'وزن کل', 'payment-method' => 'روش پرداخت', diff --git a/packages/Webkul/Admin/src/Resources/lang/nl/app.php b/packages/Webkul/Admin/src/Resources/lang/nl/app.php index b263d1487..550fe61dd 100644 --- a/packages/Webkul/Admin/src/Resources/lang/nl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/nl/app.php @@ -1010,6 +1010,7 @@ return [ 'choose-condition-to-add' => 'Conditie toevoegen', 'cart-attribute' => 'Winkelwagenattribuut', 'subtotal' => 'Subtotaal', + 'additional' => 'Additional Information', 'total-items-qty' => 'Totaal aantal artikelen', 'total-weight' => 'Totale gewicht', 'payment-method' => 'Betaalmethode', diff --git a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php index 71aed9a09..1ccbae549 100755 --- a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php @@ -1010,6 +1010,7 @@ return [ 'choose-condition-to-add' => 'Escolha uma condição para adicionar', 'cart-attribute' => 'Atributo do carrinho', 'subtotal' => 'Subtotal', + 'additional' => 'Additional Information', 'total-items-qty' => 'Quantidade total de itens', 'total-weight' => 'Peso total', 'payment-method' => 'Forma de pagamento', diff --git a/packages/Webkul/CartRule/src/Repositories/CartRuleRepository.php b/packages/Webkul/CartRule/src/Repositories/CartRuleRepository.php index 0f277afcb..5b02187f7 100755 --- a/packages/Webkul/CartRule/src/Repositories/CartRuleRepository.php +++ b/packages/Webkul/CartRule/src/Repositories/CartRuleRepository.php @@ -272,6 +272,10 @@ class CartRuleRepository extends Repository 'key' => 'cart_item|base_total', 'type' => 'price', 'label' => trans('admin::app.promotions.cart-rules.subtotal'), + ], [ + 'key' => 'cart_item|additional', + 'type' => 'text', + 'label' => trans('admin::app.promotions.cart-rules.additional'), ] ] ], [ diff --git a/packages/Webkul/Rule/src/Helpers/Validator.php b/packages/Webkul/Rule/src/Helpers/Validator.php index 677096fb8..287c7f1c2 100644 --- a/packages/Webkul/Rule/src/Helpers/Validator.php +++ b/packages/Webkul/Rule/src/Helpers/Validator.php @@ -29,7 +29,7 @@ class Validator if ($entity instanceof \Webkul\Checkout\Contracts\Cart && strpos($condition['attribute'], 'cart|') === false) { continue; } - + $totalConditionCount++; if ($rule->condition_type == 1) { @@ -99,7 +99,7 @@ class Validator $value = $entity->product ? $entity->product->categories()->pluck('id')->toArray() : $entity->categories()->pluck('id')->toArray(); - + return $value; } else { $value = $entity->product @@ -109,7 +109,7 @@ class Validator if (! in_array($condition['attribute_type'], ['multiselect', 'checkbox'])) { return $value; } - + return $value ? explode(',', $value) : []; } } @@ -236,9 +236,9 @@ class Validator $result = ! empty(array_intersect($condition['value'], $attributeValue)); } else { if (is_array($attributeValue)) { - $result = in_array($condition['value'], $attributeValue); + $result = self::validateArrayValues($attributeValue, $condition['value']); } else { - $result = (strpos($attributeValue, $condition['value']) !== false) ? true : false; + $result = strpos($attributeValue, $condition['value']) !== false; } } @@ -251,4 +251,28 @@ class Validator return $result; } + + /** + * Validate the condition value against a multi dimensional array recursively + * + * @param array $attributeValue + * @param string $conditionValue + * + * @return bool + */ + private static function validateArrayValues(array $attributeValue, string $conditionValue): bool + { + $result = in_array($conditionValue, $attributeValue, true); + if ($result === false) { + foreach ($attributeValue as $subValue) { + if (is_array($subValue)) { + $result = self::validateArrayValues($subValue, $conditionValue); + if ($result === true) { + break; + } + } + } + } + return $result; + } } \ No newline at end of file