* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ /** * Regenerate the entire category tree level_depth */ function regenerate_level_depth() { Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.'category` SET `level_depth` = 0 WHERE `id_category` = 1'); regenerate_children_categories(1, 0); } /** * Recursively regenerate the level_depth of this category's children * * @param int $id_category * @param int $level_depth */ function regenerate_children_categories($id_category, $level_depth) { $categories = Db::getInstance()->executeS('SELECT `id_category` FROM `'._DB_PREFIX_.'category` WHERE `id_parent` = '.(int)$id_category); if (!$categories) { return; } $new_depth = (int)$level_depth + 1; $cat_ids = ""; foreach ($categories as $category) { $cat_ids .= (string)$category['id_category'].','; regenerate_children_categories($category['id_category'], $new_depth); } $cat_ids = substr($cat_ids, 0, -1); Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.'category` SET `level_depth` = '.(int)$new_depth.' WHERE `id_category` IN ('.$cat_ids.')'); }