// Replaced array_uintersect by a custom function

This commit is contained in:
dMetzger
2012-05-10 09:09:03 +00:00
parent 2498f4a68a
commit d9b0c80fa4
2 changed files with 34 additions and 21 deletions
+33 -20
View File
@@ -572,7 +572,7 @@ class CartRuleCore extends ObjectModel
}
if ($countMatchingProducts < $productRuleGroup['quantity'])
return (!$display_error) ? false : Tools::displayError('You cannot use this voucher with these products');
$eligibleProductsList = array_uintersect($eligibleProductsList, $matchingProductsList, 'cartrule_products_intersect');
$eligibleProductsList = CartRule::array_uintersect($eligibleProductsList, $matchingProductsList);
break;
case 'products':
$cartProducts = Db::getInstance()->executeS('
@@ -590,7 +590,7 @@ class CartRuleCore extends ObjectModel
}
if ($countMatchingProducts < $productRuleGroup['quantity'])
return (!$display_error) ? false : Tools::displayError('You cannot use this voucher with these products');
$eligibleProductsList = array_uintersect($eligibleProductsList, $matchingProductsList, 'cartrule_products_intersect');
$eligibleProductsList = CartRule::array_uintersect($eligibleProductsList, $matchingProductsList);
break;
case 'categories':
$cartCategories = Db::getInstance()->executeS('
@@ -609,7 +609,7 @@ class CartRuleCore extends ObjectModel
}
if ($countMatchingProducts < $productRuleGroup['quantity'])
return (!$display_error) ? false : Tools::displayError('You cannot use this voucher with these products');
$eligibleProductsList = array_uintersect($eligibleProductsList, $matchingProductsList, 'cartrule_products_intersect');
$eligibleProductsList = CartRule::array_uintersect($eligibleProductsList, $matchingProductsList);
break;
case 'manufacturers':
$cartManufacturers = Db::getInstance()->executeS('
@@ -628,7 +628,7 @@ class CartRuleCore extends ObjectModel
}
if ($countMatchingProducts < $productRuleGroup['quantity'])
return (!$display_error) ? false : Tools::displayError('You cannot use this voucher with these products');
$eligibleProductsList = array_uintersect($eligibleProductsList, $matchingProductsList, 'cartrule_products_intersect');
$eligibleProductsList = CartRule::array_uintersect($eligibleProductsList, $matchingProductsList);
break;
case 'suppliers':
$cartSuppliers = Db::getInstance()->executeS('
@@ -647,7 +647,7 @@ class CartRuleCore extends ObjectModel
}
if ($countMatchingProducts < $productRuleGroup['quantity'])
return (!$display_error) ? false : Tools::displayError('You cannot use this voucher with these products');
$eligibleProductsList = array_uintersect($eligibleProductsList, $matchingProductsList, 'cartrule_products_intersect');
$eligibleProductsList = CartRule::array_uintersect($eligibleProductsList, $matchingProductsList);
break;
}
@@ -660,7 +660,33 @@ class CartRuleCore extends ObjectModel
if ($return_products)
return $selectedProducts;
return ($display_error) ? true : false;
return (!$display_error) ? true : false;
}
protected static function array_uintersect($array1, $array2)
{
$intersection = array();
foreach ($array1 as $value1)
foreach ($array2 as $value2)
if (CartRule::array_uintersect_compare($value1, $value2) == 0)
{
$intersection[] = $value1;
break 1;
}
return $intersection;
}
protected static function array_uintersect_compare($a, $b)
{
if ($a == $b)
return 0;
$asplit = explode('-', $a);
$bsplit = explode('-', $b);
if ($asplit[0] == $bsplit[0] && (!(int)$asplit[1] || !(int)$bsplit[1]))
return 0;
return 1;
}
/**
@@ -1012,17 +1038,4 @@ class CartRuleCore extends ObjectModel
WHERE code LIKE \'%'.pSQL($name).'%\'
');
}
}
function cartrule_products_intersect($a, $b)
{
if ($a == $b)
return 0;
$asplit = explode('-', $a);
$bsplit = explode('-', $b);
if ($asplit[0] == $bsplit[0] && (!(int)$asplit[1] || !(int)$bsplit[1]))
return 0;
return 1;
}
}
+1 -1
View File
@@ -100,7 +100,7 @@ class ParentOrderControllerCore extends FrontController
{
if (($cartRule = new CartRule(CartRule::getIdByCode($code))) && Validate::isLoadedObject($cartRule))
{
if ($error = $cartRule->checkValidity($this->context))
if ($error = $cartRule->checkValidity($this->context, false, true))
$this->errors[] = $error;
else
{