function updatePositionAndActive15($clean_tabs_15) { foreach ($clean_tabs_15 as $id => $tab) { Db::getInstance()->update('tab', array('position' => $tab['position'], 'active' => $tab['active']), '`id_tab`= ' . get_tab_id($tab['class_name'])); if (isset($tab['children'])) { updatePositionAndActive15($tab['children']); } } }
/** * Migrate BO tabs for multi-shop new reorganization */ function migrate_tabs_multi_shop() { include_once _PS_INSTALL_PATH_ . 'upgrade/php/add_new_tab.php'; include_once _PS_INSTALL_PATH_ . 'upgrade/php/migrate_tabs_15.php'; $nbr_shop = Db::getInstance()->getValue('SELECT count(id_shop) FROM ' . _DB_PREFIX_ . 'shop'); $tab_shop_group_active = false; //check if current configuration has more than one shop if ($nbr_shop > 1) { Db::getInstance()->update('configuration', array('value' => true), 'name = \'PS_MULTISHOP_FEATURE_ACTIVE\''); $tab_shop_group_active = true; } // ===== remove AdminParentShop from BO menu ===== $admin_parent_shop_id = get_tab_id('AdminParentShop'); $admin_shop_group_id = get_tab_id('AdminShopGroup'); Db::getInstance()->delete('tab', 'id_tab IN (' . (int) $admin_shop_group_id . ', ' . (int) $admin_parent_shop_id . ')'); Db::getInstance()->delete('tab_lang', 'id_tab IN (' . (int) $admin_shop_group_id . ', ' . (int) $admin_parent_shop_id . ')'); // ===== add AdminShopGroup to parent AdminTools ===== $admin_shop_group_id = add_new_tab('AdminShopGroup', 'en:Multi-shop|fr:Multiboutique|es:Multi-tienda|de:Multi-shop|it:Multi-shop', get_tab_id('AdminTools'), true); Db::getInstance()->update('tab', array('active' => $tab_shop_group_active), 'id_tab = ' . (int) $admin_shop_group_id); // ===== hide AdminShopUrl and AdminShop ===== Db::getInstance()->update('tab', array('id_parent' => '-1'), 'id_tab IN (' . get_tab_id('AdminShop') . ', ' . get_tab_id('AdminShopUrl') . ')'); }
/** * Migrate BO tabs for 1.5 (new reorganization of BO) */ function migrate_tabs_15() { include_once _PS_INSTALL_PATH_ . 'upgrade/php/add_new_tab.php'; // ===== Remove deleted tabs ===== $remove_tabs = array('AdminAliases', 'AdminContact', 'AdminDb', 'AdminGenerator', 'AdminPdf', 'AdminSubDomains', 'AdminStatsConf'); $ids = array(); foreach ($remove_tabs as $tab) { if ($id = get_tab_id($tab)) { $ids[] = $id; } } if ($ids) { Db::getInstance()->delete('tab', 'id_tab IN (' . implode(', ', $ids) . ')'); Db::getInstance()->delete('tab_lang', 'id_tab IN (' . implode(', ', $ids) . ')'); } // ===== Create new parent tabs ===== $parent = array('AdminCatalog' => get_tab_id('AdminCatalog'), 'AdminParentOrders' => add_new_tab('AdminParentOrders', 'en:Orders|fr:Commandes|es:Pedidos|de:Bestellungen|it:Ordini', 0, true), 'AdminParentCustomer' => add_new_tab('AdminParentCustomer', 'en:Customers|fr:Clients|es:Clientes|de:Kunden|it:Clienti', 0, true), 'AdminPriceRule' => add_new_tab('AdminPriceRule', 'en:Price rules|fr:Promotions|es:Price rules|de:Price rules|it:Price rules', 0, true), 'AdminParentShipping' => add_new_tab('AdminParentShipping', 'en:Shipping|fr:Transport|es:Transporte|de:Versandkosten|it:Spedizione', 0, true), 'AdminParentLocalization' => add_new_tab('AdminParentLocalization', 'en:Localization|fr:Localisation|es:Ubicación|de:Lokalisierung|it:Localizzazione', 0, true), 'AdminParentModules' => add_new_tab('AdminParentModules', 'en:Modules|fr:Modules|es:Módulos|de:Module|it:Moduli', 0, true), 'AdminParentPreferences' => add_new_tab('AdminParentPreferences', 'en:Preferences|fr:Préférences|es:Preferencias|de:Voreinstellungen|it:Preferenze', 0, true), 'AdminTools' => get_tab_id('AdminTools'), 'AdminAdmin' => add_new_tab('AdminAdmin', 'en:Administration|fr:Administration|es:Administration|de:Administration|it:Administration', 0, true), 'AdminParentStats' => add_new_tab('AdminParentStats', 'en:Stats|fr:Stats|es:Estadísticas|de:Statistik|it:Stat', 0, true), 'AdminParentShop' => add_new_tab('AdminParentShop', 'en:Shops|fr:Boutiques|es:Shops|de:Shops|it:Shops', 0, true), 'AdminStock' => get_tab_id('AdminStock')); // ===== Move tabs from old parents to new parents ===== $move_association = array('AdminParentOrders' => 'AdminOrders', 'AdminParentCustomer' => 'AdminCustomers', 'AdminParentShipping' => 'AdminShipping', 'AdminParentLocalization' => 'AdminLocalization', 'AdminParentModules' => 'AdminModules', 'AdminParentPreferences' => 'AdminPreferences', 'AdminAdmin' => 'AdminEmployees', 'AdminParentStats' => 'AdminStats', 'AdminParentShop' => 'AdminShop'); foreach ($move_association as $to => $from) { if (empty($parent[$to])) { continue; } $id_parent = get_tab_id($from); if ($id_parent) { Db::getInstance()->execute(' UPDATE ' . _DB_PREFIX_ . 'tab SET id_parent = ' . $parent[$to] . ' WHERE id_parent = ' . $id_parent . ' OR id_tab = ' . $id_parent . ' '); } } // ===== Move tabs to their new parents ===== $move_to = array('AdminContacts' => 'AdminParentCustomer', 'AdminCustomerThreads' => 'AdminParentCustomer', 'AdminCurrencies' => 'AdminParentLocalization', 'AdminTaxes' => 'AdminParentLocalization', 'AdminTaxRulesGroup' => 'AdminParentLocalization', 'AdminLanguages' => 'AdminParentLocalization', 'AdminTranslations' => 'AdminParentLocalization', 'AdminZones' => 'AdminParentLocalization', 'AdminCountries' => 'AdminParentLocalization', 'AdminStates' => 'AdminParentLocalization', 'AdminCartRules' => 'AdminPriceRule', 'AdminSpecificPriceRule' => 'AdminPriceRule', 'AdminQuickAccesses' => 'AdminAdmin', 'AdminPayment' => 'AdminParentModules', 'AdminCmsContent' => 'AdminParentPreferences', 'AdminStores' => 'AdminParentPreferences', 'AdminEmails' => 'AdminTools', 'AdminPerformance' => 'AdminTools', 'AdminAccountingConfiguration' => 'AdminTools', 'AdminAccountingRegisteredNumber' => 'AdminTools', 'AdminAccountingExport' => 'AdminStats'); foreach ($move_to as $from => $to) { if (empty($parent[$to])) { continue; } $id_tab = get_tab_id($from); if ($id_tab) { Db::getInstance()->execute(' UPDATE ' . _DB_PREFIX_ . 'tab SET id_parent = ' . $parent[$to] . ' WHERE id_tab = ' . $id_tab . ' '); } } // ===== Remove AdminThemes from Modules parent ===== $id_tab_theme = Db::getInstance()->getValue('SELECT id_tab FROM ' . _DB_PREFIX_ . 'tab WHERE class_name = \'AdminThemes\' AND id_parent = ' . $parent['AdminParentModules'] . ' '); if ($id_tab_theme) { Db::getInstance()->delete('tab', 'id_tab = ' . $id_tab_theme); } // ===== Create new tabs (but not parents this time) ===== add_new_tab('AdminOrderPreferences', 'en:Orders|fr:Commandes|es:Pedidos|de:Bestellungen|it:Ordini', $parent['AdminParentPreferences']); add_new_tab('AdminCustomerPreferences', 'en:Customers|fr:Clients|es:Clientes|de:Kunden|it:Clienti', $parent['AdminParentPreferences']); add_new_tab('AdminMaintenance', 'en:Maintenance|fr:Maintenance|es:Maintenance|de:Maintenance|it:Maintenance', $parent['AdminParentPreferences']); add_new_tab('AdminAdminPreferences', 'en:Preferences|fr:Préférences|es:Preferencias|de:Voreinstellungen|it:Preferenze', $parent['AdminAdmin']); // ===== Sort parent tabs ===== $position = 0; foreach ($parent as $id) { Db::getInstance()->update('tab', array('position' => $position++), 'id_tab = ' . (int) $id); } $sql = 'SELECT id_tab FROM ' . _DB_PREFIX_ . 'tab WHERE id_tab NOT IN (' . implode(', ', $parent) . ') AND id_parent = 0'; $id_tabs = Db::getInstance()->executeS($sql); if (is_array($id_tabs) && count($id_tabs)) { foreach (Db::getInstance()->executeS($sql) as $row) { Db::getInstance()->update('tab', array('position' => $position++), 'id_tab = ' . $row['id_tab']); } } }