[-] BO : BugFix : #PSFV-664 : Category import handles multishop now
This commit is contained in:
+22
-7
@@ -1367,19 +1367,25 @@ class CategoryCore extends ObjectModel
|
|||||||
*/
|
*/
|
||||||
public function addShop($id_shop)
|
public function addShop($id_shop)
|
||||||
{
|
{
|
||||||
$sql = '';
|
$sql = '
|
||||||
|
INSERT INTO `'._DB_PREFIX_.'category_shop` (`id_category`, `id_shop`) VALUES
|
||||||
|
';
|
||||||
|
$datas = '';
|
||||||
if (!$id_shop)
|
if (!$id_shop)
|
||||||
{
|
{
|
||||||
foreach (Shop::getShops(true) as $shop)
|
foreach (Shop::getShops(true) as $shop)
|
||||||
$sql .= '('.(int)$this->id.', '.(int)$shop['id_shop'].'),';
|
if (!$this->existsInShop($shop['id_shop']))
|
||||||
|
$datas .= '('.(int)$this->id.', '.(int)$shop['id_shop'].'),';
|
||||||
// removing last comma to avoid SQL error
|
// removing last comma to avoid SQL error
|
||||||
$sql = substr($sql, 0, strlen($sql) - 1);
|
$datas = substr($datas, 0, strlen($datas) - 1);
|
||||||
} else
|
} else
|
||||||
$sql .= '('.(int)$this->id.', '.(int)$id_shop.')';
|
if (!$this->existsInShop($id_shop))
|
||||||
|
$datas .= '('.(int)$this->id.', '.(int)$id_shop.')';
|
||||||
|
|
||||||
return Db::getInstance()->execute('
|
if (empty($datas))
|
||||||
INSERT INTO `'._DB_PREFIX_.'category_shop` (`id_category`, `id_shop`) VALUES
|
return false;
|
||||||
'.$sql);
|
else
|
||||||
|
return Db::getInstance()->execute($sql.$datas);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getRootCategories($id_lang = null, $active = true)
|
public static function getRootCategories($id_lang = null, $active = true)
|
||||||
@@ -1524,4 +1530,13 @@ class CategoryCore extends ObjectModel
|
|||||||
|
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function existsInShop($id_shop)
|
||||||
|
{
|
||||||
|
return (bool)Db::getInstance()->getValue('
|
||||||
|
SELECT `id_category`
|
||||||
|
FROM `'._DB_PREFIX_.'category_shop`
|
||||||
|
WHERE `id_category` = '.(int)$this->id.'
|
||||||
|
AND `id_shop` = '.(int)$id_shop);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -163,6 +163,10 @@ class AdminImportControllerCore extends AdminController
|
|||||||
'meta_description' => array('label' => $this->l('Meta-description')),
|
'meta_description' => array('label' => $this->l('Meta-description')),
|
||||||
'link_rewrite' => array('label' => $this->l('URL rewritten')),
|
'link_rewrite' => array('label' => $this->l('URL rewritten')),
|
||||||
'image' => array('label' => $this->l('Image URL')),
|
'image' => array('label' => $this->l('Image URL')),
|
||||||
|
'shop' => array(
|
||||||
|
'label' => $this->l('ID / Name of shop'),
|
||||||
|
'help' => $this->l('Ignore this field if you don\'t use the multishop tool. If you leave this field empty, default shop will be used'),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
self::$default_values = array(
|
self::$default_values = array(
|
||||||
@@ -899,6 +903,18 @@ class AdminImportControllerCore extends AdminController
|
|||||||
$this->errors[] = ($field_error !== true ? $field_error : '').($lang_field_error !== true ? $lang_field_error : '').
|
$this->errors[] = ($field_error !== true ? $field_error : '').($lang_field_error !== true ? $lang_field_error : '').
|
||||||
Db::getInstance()->getMsgError();
|
Db::getInstance()->getMsgError();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Associate category to shop
|
||||||
|
if (Shop::isFeatureActive() && $info['shop'])
|
||||||
|
{
|
||||||
|
if (!is_numeric($info['shop']))
|
||||||
|
$info['id_shop'] = Shop::getIdByName($info['shop']);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
$info['shop'] = Configuration::get('PS_SHOP_DEFAULT');
|
||||||
|
$category->addShop($info['shop']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Import has finished, we can regenerate the categories nested tree */
|
/* Import has finished, we can regenerate the categories nested tree */
|
||||||
|
|||||||
Reference in New Issue
Block a user