From 791cc22ce00024d82b3a03df5cd3168fa4a4a1a8 Mon Sep 17 00:00:00 2001 From: mDeflotte Date: Fri, 3 Feb 2012 08:59:46 +0000 Subject: [PATCH] [*] BO : #PSTEST-624 - On creating group, automaticaly assign the new groups to all carriers git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@12952 b9a71923-0436-4b27-9f14-aed3839534dd --- classes/Carrier.php | 37 +++++++++++++++++++++++++++++++++++++ classes/Group.php | 2 ++ 2 files changed, 39 insertions(+) diff --git a/classes/Carrier.php b/classes/Carrier.php index 599775a2c..768c2d4c9 100644 --- a/classes/Carrier.php +++ b/classes/Carrier.php @@ -1087,5 +1087,42 @@ class CarrierCore extends ObjectModel } return $carrier_list; } + + /** + * Assign one (ore more) group to all carriers + * + * @param int|array $id_group_list group id or list of group ids + * @param array $exception list of id carriers to ignore + */ + public static function assignGroupToAllCarriers($id_group_list, $exception = null) + { + if (!is_array($id_group_list)) + $id_group_list = array($id_group_list); + + Db::getInstance()->execute(' + DELETE FROM `'._DB_PREFIX_.'carrier_group` + WHERE `id_group` IN ('.join(',', $id_group_list).')'); + + $carrier_list = Db::getInstance()->executeS(' + SELECT id_carrier FROM `'._DB_PREFIX_.'carrier` + WHERE deleted = 0 + '.(is_array($exception) ? 'AND id_carrier NOT IN ('.join(',', $exception).')' : '')); + + if ($carrier_list) + { + $data = array(); + foreach ($carrier_list as $carrier) + { + foreach ($id_group_list as $id_group) + $data[] = array( + 'id_carrier' => $carrier['id_carrier'], + 'id_group' => $id_group, + ); + } + return Db::getInstance()->insert('carrier_group', $data, false, false, Db::INSERT, false); + } + + return true; + } } diff --git a/classes/Group.php b/classes/Group.php index 9b339eac5..108c08406 100644 --- a/classes/Group.php +++ b/classes/Group.php @@ -141,6 +141,8 @@ class GroupCore extends ObjectModel if (parent::add($autodate, $null_values)) { Category::setNewGroupForHome((int)$this->id); + + Carrier::assignGroupToAllCarriers((int)$this->id); // Set cache of feature detachable to true Configuration::updateGlobalValue('PS_GROUP_FEATURE_ACTIVE', '1');