/** * Retrieve the cart rule product rule groups in the POST data * if available, and in the database if there is none * * @param CartRule $cart_rule * * @return array */ public function getProductRuleGroupsDisplay($cart_rule) { $productRuleGroupsArray = array(); if (Tools::getValue('product_restriction') && is_array($array = Tools::getValue('product_rule_group')) && count($array)) { $i = 1; foreach ($array as $ruleGroupId) { $productRulesArray = array(); if (is_array($array = Tools::getValue('product_rule_' . $ruleGroupId)) && count($array)) { foreach ($array as $ruleId) { $productRulesArray[] = $this->getProductRuleDisplay($ruleGroupId, $ruleId, Tools::getValue('product_rule_' . $ruleGroupId . '_' . $ruleId . '_type'), Tools::getValue('product_rule_select_' . $ruleGroupId . '_' . $ruleId)); } } $productRuleGroupsArray[] = $this->getProductRuleGroupDisplay($i++, (int) Tools::getValue('product_rule_group_' . $ruleGroupId . '_quantity'), $productRulesArray); } } else { $i = 1; foreach ($cart_rule->getProductRuleGroups() as $productRuleGroup) { $j = 1; $productRulesDisplay = array(); foreach ($productRuleGroup['product_rules'] as $id_product_rule => $productRule) { $productRulesDisplay[] = $this->getProductRuleDisplay($i, $j++, $productRule['type'], $productRule['values']); } $productRuleGroupsArray[] = $this->getProductRuleGroupDisplay($i++, $productRuleGroup['quantity'], $productRulesDisplay); } } return $productRuleGroupsArray; }