File Manager Lite
Dir:
/home/u540325668/domains/dumbafarm.in/public_html/classes
Upload
[..]
.htaccess (170 B)
Edit
Rename
Del
Access.php (13.25 KB)
Edit
Rename
Del
AddressChecksumCore.php (1.81 KB)
Edit
Rename
Del
AddressFormat.php (24.54 KB)
Edit
Rename
Del
Alias.php (4.99 KB)
Edit
Rename
Del
Attachment.php (11.27 KB)
Edit
Rename
Del
AttributeGroup.php (13.17 KB)
Edit
Rename
Del
CMS.php (11.45 KB)
Edit
Rename
Del
CMSCategory.php (23.56 KB)
Edit
Rename
Del
CMSRole.php (1.78 KB)
Edit
Rename
Del
CSV.php (3.04 KB)
Edit
Rename
Del
Carrier.php (63.97 KB)
Edit
Rename
Del
Cart.php (212.95 KB)
Edit
Rename
Del
Category.php (87 KB)
Edit
Rename
Del
Chart.php (4.08 KB)
Edit
Rename
Del
ChecksumInterface.php (1.22 KB)
Edit
Rename
Del
Configuration.php (26.5 KB)
Edit
Rename
Del
ConfigurationKPI.php (8.91 KB)
Edit
Rename
Del
ConfigurationTest.php (12.02 KB)
Edit
Rename
Del
Connection.php (10.02 KB)
Edit
Rename
Del
ConnectionsSource.php (4.81 KB)
Edit
Rename
Del
Contact.php (3.83 KB)
Edit
Rename
Del
Context.php (17.94 KB)
Edit
Rename
Del
Cookie.php (17.39 KB)
Edit
Rename
Del
Country.php (16.33 KB)
Edit
Rename
Del
Currency.php (36.3 KB)
Edit
Rename
Del
Curve.php (2.92 KB)
Edit
Rename
Del
Customer.php (52.22 KB)
Edit
Rename
Del
CustomerAddress.php (1.26 KB)
Edit
Rename
Del
CustomerMessage.php (5.75 KB)
Edit
Rename
Del
CustomerSession.php (2.65 KB)
Edit
Rename
Del
CustomerThread.php (9.62 KB)
Edit
Rename
Del
Customization.php (13.43 KB)
Edit
Rename
Del
CustomizationField.php (2.85 KB)
Edit
Rename
Del
DateRange.php (2.47 KB)
Edit
Rename
Del
Delivery.php (3.24 KB)
Edit
Rename
Del
Dispatcher.php (47.06 KB)
Edit
Rename
Del
Employee.php (23.5 KB)
Edit
Rename
Del
EmployeeSession.php (2.65 KB)
Edit
Rename
Del
Feature.php (11.38 KB)
Edit
Rename
Del
FeatureFlag.php (3.15 KB)
Edit
Rename
Del
FeatureValue.php (8.06 KB)
Edit
Rename
Del
FileUploader.php (3.73 KB)
Edit
Rename
Del
Gender.php (2.81 KB)
Edit
Rename
Del
Group.php (14.96 KB)
Edit
Rename
Del
GroupReduction.php (8.81 KB)
Edit
Rename
Del
Guest.php (8.31 KB)
Edit
Rename
Del
Hook.php (46.57 KB)
Edit
Rename
Del
Image.php (31.24 KB)
Edit
Rename
Del
ImageManager.php (31.79 KB)
Edit
Rename
Del
ImageType.php (6.99 KB)
Edit
Rename
Del
Language.php (62.06 KB)
Edit
Rename
Del
Link.php (61.5 KB)
Edit
Rename
Del
LocalizationPack.php (23.05 KB)
Edit
Rename
Del
Mail.php (33.49 KB)
Edit
Rename
Del
Manufacturer.php (21.2 KB)
Edit
Rename
Del
ManufacturerAddress.php (1.28 KB)
Edit
Rename
Del
Media.php (31.43 KB)
Edit
Rename
Del
Message.php (6.47 KB)
Edit
Rename
Del
Meta.php (18.21 KB)
Edit
Rename
Del
Notification.php (8.27 KB)
Edit
Rename
Del
ObjectModel.php (81.56 KB)
Edit
Rename
Del
Pack.php (25.7 KB)
Edit
Rename
Del
Page.php (4.49 KB)
Edit
Rename
Del
PaymentFree.php (1.33 KB)
Edit
Rename
Del
PaymentModule.php (59.49 KB)
Edit
Rename
Del
PhpEncryption.php (3.21 KB)
Edit
Rename
Del
PhpEncryptionEngine.php (3.86 KB)
Edit
Rename
Del
PrestaShopAutoload.php (9.57 KB)
Edit
Rename
Del
PrestaShopBackup.php (11.43 KB)
Edit
Rename
Del
PrestaShopCollection.php (21.28 KB)
Edit
Rename
Del
PrestaShopLogger.php (8.3 KB)
Edit
Rename
Del
Product.php (309.93 KB)
Edit
Rename
Del
ProductAttribute.php (13.48 KB)
Edit
Rename
Del
ProductDownload.php (10.05 KB)
Edit
Rename
Del
ProductPresenterFactory.php (3.89 KB)
Edit
Rename
Del
ProductSale.php (12.7 KB)
Edit
Rename
Del
ProductSupplier.php (8.34 KB)
Edit
Rename
Del
Profile.php (8.32 KB)
Edit
Rename
Del
QqUploadedFileForm.php (5.19 KB)
Edit
Rename
Del
QqUploadedFileXhr.php (5.69 KB)
Edit
Rename
Del
QuickAccess.php (6.25 KB)
Edit
Rename
Del
RequestSql.php (20.93 KB)
Edit
Rename
Del
Risk.php (2.36 KB)
Edit
Rename
Del
Search.php (51.86 KB)
Edit
Rename
Del
SearchEngine.php (2.81 KB)
Edit
Rename
Del
Smarty/
Rename
Del
SpecificPrice.php (32.43 KB)
Edit
Rename
Del
SpecificPriceRule.php (14.04 KB)
Edit
Rename
Del
State.php (7.77 KB)
Edit
Rename
Del
Store.php (6.24 KB)
Edit
Rename
Del
Supplier.php (17.89 KB)
Edit
Rename
Del
SupplierAddress.php (1.27 KB)
Edit
Rename
Del
Tab.php (21.7 KB)
Edit
Rename
Del
Tag.php (13.24 KB)
Edit
Rename
Del
Tools.php (136.37 KB)
Edit
Rename
Del
TranslatedConfiguration.php (4.68 KB)
Edit
Rename
Del
Upgrader.php (11.58 KB)
Edit
Rename
Del
Uploader.php (10.84 KB)
Edit
Rename
Del
Validate.php (38.87 KB)
Edit
Rename
Del
ValidateConstraintTranslator.php (2.55 KB)
Edit
Rename
Del
WarehouseAddress.php (1.27 KB)
Edit
Rename
Del
Zone.php (3.42 KB)
Edit
Rename
Del
assets/
Rename
Del
cache/
Rename
Del
checkout/
Rename
Del
container/
Rename
Del
controller/
Rename
Del
db/
Rename
Del
exception/
Rename
Del
form/
Rename
Del
helper/
Rename
Del
index.php (1.34 KB)
Edit
Rename
Del
lang/
Rename
Del
log/
Rename
Del
module/
Rename
Del
order/
Rename
Del
pdf/
Rename
Del
product/
Rename
Del
proxy/
Rename
Del
range/
Rename
Del
shop/
Rename
Del
stock/
Rename
Del
tax/
Rename
Del
tree/
Rename
Del
webservice/
Rename
Del
Edit: Tab.php
<?php /** * Copyright since 2007 PrestaShop SA and Contributors * PrestaShop is an International Registered Trademark & Property of PrestaShop SA * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.md. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/OSL-3.0 * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to https://devdocs.prestashop.com/ for more information. * * @author PrestaShop SA and Contributors <contact@prestashop.com> * @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ /** * Class TabCore. */ class TabCore extends ObjectModel { /** @var string|array<int, string> Displayed name */ public $name; /** @var string Class and file name */ public $class_name; /** @var string Route name for Symfony */ public $route_name; public $module; /** @var int parent ID */ public $id_parent; /** @var int position */ public $position; /** @var bool active */ public $active = true; /** @var bool enabled */ public $enabled = true; /** @var string Icon font */ public $icon; /** @var string|null Wording to use for the display name */ public $wording; /** @var string|null Wording domain to use for the display name */ public $wording_domain; /** * @deprecated Since 1.7.7 */ public const TAB_MODULE_LIST_URL = ''; /** * @see ObjectModel::$definition */ public static $definition = [ 'table' => 'tab', 'primary' => 'id_tab', 'multilang' => true, 'fields' => [ 'id_parent' => ['type' => self::TYPE_INT, 'validate' => 'isInt'], 'position' => ['type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'], 'module' => ['type' => self::TYPE_STRING, 'validate' => 'isTabName', 'size' => 64], 'class_name' => ['type' => self::TYPE_STRING, 'required' => true, 'size' => 64], 'route_name' => ['type' => self::TYPE_STRING, 'required' => false, 'size' => 256], 'active' => ['type' => self::TYPE_BOOL, 'validate' => 'isBool'], 'enabled' => ['type' => self::TYPE_BOOL, 'validate' => 'isBool'], 'icon' => ['type' => self::TYPE_STRING, 'size' => 64], 'wording' => ['type' => self::TYPE_STRING, 'validate' => 'isString', 'allow_null' => true, 'size' => 255], 'wording_domain' => ['type' => self::TYPE_STRING, 'validate' => 'isString', 'allow_null' => true, 'size' => 255], /* Lang fields */ 'name' => ['type' => self::TYPE_STRING, 'lang' => true, 'required' => true, 'validate' => 'isTabName', 'size' => 64], ], ]; protected static $_getIdFromClassName = null; /** * Additional treatments for Tab when creating new one: * - generate a new position * - add access for admin profile. * * @param bool $autoDate * @param bool $nullValues * * @return bool true if success */ public function add($autoDate = true, $nullValues = false) { self::$_cache_tabs = []; // Set good position for new tab $this->position = Tab::getNewLastPosition($this->id_parent); $this->module = Tools::strtolower($this->module); // Add tab if (parent::add($autoDate, $nullValues)) { //forces cache to be reloaded self::$_getIdFromClassName = null; return Tab::initAccess($this->id); } return false; } /** * @param bool $nullValues * @param bool $autoDate * * @return bool */ public function save($nullValues = false, $autoDate = true) { self::$_getIdFromClassName = null; return parent::save(); } /** When creating a new tab $id_tab, this add default rights to the table access * * @todo this should not be public static but protected * * @param int $idTab * @param Context $context * * @return bool true if succeed */ public static function initAccess($idTab, Context $context = null) { if (!$context) { $context = Context::getContext(); } /* Right management */ $slug = 'ROLE_MOD_TAB_' . strtoupper(self::getClassNameById($idTab)); foreach (['CREATE', 'READ', 'UPDATE', 'DELETE'] as $action) { /* * Check if authorization role does not exist. * This can happen if you want to create several tabs with the same class_name or route_name */ $actionSlug = pSQL($slug . '_' . $action); $authorizationRole = Db::getInstance()->getRow( 'SELECT slug FROM `' . _DB_PREFIX_ . 'authorization_role` ' . 'WHERE `slug` = "' . $actionSlug . '"' ); if (empty($authorizationRole)) { Db::getInstance()->execute( 'INSERT INTO `' . _DB_PREFIX_ . 'authorization_role` (`slug`) VALUES ("' . $actionSlug . '")' ); } } $access = new Access(); foreach (['view', 'add', 'edit', 'delete'] as $action) { $access->updateLgcAccess(1, $idTab, $action, true); if ($context->employee && $context->employee->id_profile) { $access->updateLgcAccess($context->employee->id_profile, $idTab, $action, true); } } return true; } public function delete() { if (parent::delete()) { $slug = 'ROLE_MOD_TAB_' . strtoupper($this->class_name); foreach (['CREATE', 'READ', 'UPDATE', 'DELETE'] as $action) { Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'authorization_role` WHERE `slug` = "' . $slug . '_' . $action . '"'); } if (is_array(self::$_getIdFromClassName) && isset(self::$_getIdFromClassName[strtolower($this->class_name)])) { self::$_getIdFromClassName = null; } return $this->cleanPositions($this->id_parent); } return false; } /** * reset static cache (eg unit testing purpose). */ public static function resetStaticCache() { self::$_getIdFromClassName = null; } public static function resetTabCache() { self::$_cache_tabs = []; } /** * Get tab id. * * @return int tab id */ public static function getCurrentTabId() { $idTab = Tab::getIdFromClassName(Tools::getValue('controller')); // retro-compatibility 1.4/1.5 if (empty($idTab)) { $idTab = Tab::getIdFromClassName(Tools::getValue('tab')); } return $idTab; } /** * Get tab parent id. * * @return int tab parent id */ public static function getCurrentParentId() { $cacheId = 'getCurrentParentId_' . Tools::strtolower(Tools::getValue('controller')); if (!Cache::isStored($cacheId)) { $value = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' SELECT `id_parent` FROM `' . _DB_PREFIX_ . 'tab` WHERE LOWER(class_name) = \'' . pSQL(Tools::strtolower(Tools::getValue('controller'))) . '\''); if (!$value) { $value = -1; } Cache::store($cacheId, $value); return $value; } return Cache::retrieve($cacheId); } /** * Get tab. * * @return array tab */ public static function getTab($idLang, $idTab) { $cacheId = 'Tab::getTab_' . (int) $idLang . '-' . (int) $idTab; if (!Cache::isStored($cacheId)) { /* Tabs selection */ $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow( 'SELECT * FROM `' . _DB_PREFIX_ . 'tab` t LEFT JOIN `' . _DB_PREFIX_ . 'tab_lang` tl ON (t.`id_tab` = tl.`id_tab` AND tl.`id_lang` = ' . (int) $idLang . ') WHERE t.`id_tab` = ' . (int) $idTab ); Cache::store($cacheId, $result); return $result; } return Cache::retrieve($cacheId); } /** * Return the list of tab used by a module. * * @return array */ public static function getModuleTabList() { $list = []; $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT t.`class_name`, t.`module` FROM `' . _DB_PREFIX_ . 'tab` t WHERE t.`module` IS NOT NULL AND t.`module` != ""'); if (is_array($result)) { foreach ($result as $detail) { $list[strtolower($detail['class_name'])] = $detail; } } return $list; } /** * Get tabs. * * @return array tabs */ protected static $_cache_tabs = []; public static function getTabs($idLang, $idParent = null) { if (!isset(self::$_cache_tabs[$idLang])) { self::$_cache_tabs[$idLang] = []; // Keep t.*, tl.name instead of only * because if translations are missing, the join on tab_lang will overwrite the id_tab in the results $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS( ' SELECT t.*, tl.name FROM `' . _DB_PREFIX_ . 'tab` t LEFT JOIN `' . _DB_PREFIX_ . 'tab_lang` tl ON (t.`id_tab` = tl.`id_tab` AND tl.`id_lang` = ' . (int) $idLang . ') ORDER BY t.`position` ASC' ); if (is_array($result)) { foreach ($result as $row) { if (!isset(self::$_cache_tabs[$idLang][$row['id_parent']])) { self::$_cache_tabs[$idLang][$row['id_parent']] = []; } self::$_cache_tabs[$idLang][$row['id_parent']][] = $row; } } } if ($idParent === null) { $arrayAll = []; foreach (self::$_cache_tabs[$idLang] as $arrayParent) { $arrayAll = array_merge($arrayAll, $arrayParent); } return $arrayAll; } return isset(self::$_cache_tabs[$idLang][$idParent]) ? self::$_cache_tabs[$idLang][$idParent] : []; } /** * Get tab id from name. * * @deprecated since version 1.7.1.0, available now in PrestaShopBundle\Entity\Repository\TabRepository::findOneIdByClassName($className) * * @param string $className * * @return int Tab ID */ public static function getIdFromClassName($className) { $className = self::getClassName($className); if (empty(self::$_getIdFromClassName)) { self::$_getIdFromClassName = []; $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT id_tab, class_name FROM `' . _DB_PREFIX_ . 'tab`', true, false); if (is_array($result)) { foreach ($result as $row) { self::$_getIdFromClassName[strtolower($row['class_name'])] = $row['id_tab']; } } } return isset(self::$_getIdFromClassName[$className]) ? (int) self::$_getIdFromClassName[$className] : false; } /** * @deprecated 1.7.0, to be removed in 1.7.1. Upgrade module to 1.7. */ private static function getClassName($className) { $legacyClassNames = [ 'AdminTools', 'AdminPriceRule', 'AdminAdmin', 'AdminParentStats', 'AdminMarketing', 'AdminCarrierWizard', 'AdminTabs', ]; if (in_array($className, $legacyClassNames)) { @trigger_error($className . ' is a deprecated tab since version 1.7.0 and "Default" will be removed in 1.7.1.. Upgrade module using the docs: http://build.prestashop.com/news/how-we-reorganized-main-menu-prestashop-1.7/.', E_USER_DEPRECATED); $className = 'DEFAULT'; } return strtolower($className); } /** * Get collection from module name. * * @param string $module Module name * @param int|null $idLang integer Language ID * * @return array|PrestaShopCollection Collection of tabs (or empty array) */ public static function getCollectionFromModule($module, $idLang = null) { if (null === $idLang) { $idLang = Context::getContext()->language->id; } if (!Validate::isModuleName($module)) { return []; } $tabs = new PrestaShopCollection('Tab', (int) $idLang); $tabs->where('module', '=', $module); return $tabs; } /** * Enabling tabs for module. * * @param string $module Module Name * * @return bool Status */ public static function enablingForModule($module) { $tabs = Tab::getCollectionFromModule($module); if (!empty($tabs)) { foreach ($tabs as $tab) { $tab->active = 1; $tab->save(); } return true; } return false; } /** * Disabling tabs for module. * * @param string $module Module name * * @return bool Status */ public static function disablingForModule($module) { $tabs = Tab::getCollectionFromModule($module); if (!empty($tabs)) { foreach ($tabs as $tab) { $tab->active = 0; $tab->save(); } return true; } return false; } /** * Get Instance from tab class name. * * @param string $className Name of tab class * @param int|null $idLang id_lang * * @return Tab Tab object (empty if bad id or class name) */ public static function getInstanceFromClassName($className, $idLang = null) { $idTab = (int) Tab::getIdFromClassName($className); return new Tab($idTab, $idLang); } public static function getNbTabs($idParent = null) { return (int) Db::getInstance()->getValue( ' SELECT COUNT(*) FROM `' . _DB_PREFIX_ . 'tab` t ' . (null !== $idParent ? 'WHERE t.`id_parent` = ' . (int) $idParent : '') ); } /** * return an available position in subtab for parent $id_parent. * * @param mixed $idParent * * @return int */ public static function getNewLastPosition($idParent) { return (int) Db::getInstance()->getValue( 'SELECT IFNULL(MAX(position), 0) + 1 FROM `' . _DB_PREFIX_ . 'tab` WHERE `id_parent` = ' . (int) $idParent ); } public function move($direction) { $nbTabs = Tab::getNbTabs($this->id_parent); if ($direction != 'l' && $direction != 'r') { return false; } if ($nbTabs <= 1) { return false; } if ($direction == 'l' && $this->position <= 1) { return false; } if ($direction == 'r' && $this->position >= $nbTabs) { return false; } $newPosition = ($direction == 'l') ? $this->position - 1 : $this->position + 1; Db::getInstance()->execute( ' UPDATE `' . _DB_PREFIX_ . 'tab` t SET position = ' . (int) $this->position . ' WHERE id_parent = ' . (int) $this->id_parent . ' AND position = ' . (int) $newPosition ); $this->position = $newPosition; return $this->update(); } /** * Clean positions. * * @param int $idParent Parent ID * * @return bool */ public function cleanPositions($idParent) { $result = Db::getInstance()->executeS(' SELECT `id_tab` FROM `' . _DB_PREFIX_ . 'tab` WHERE `id_parent` = ' . (int) $idParent . ' ORDER BY `position` '); $sizeof = count($result); for ($i = 0; $i < $sizeof; ++$i) { Db::getInstance()->execute( ' UPDATE `' . _DB_PREFIX_ . 'tab` SET `position` = ' . ($i + 1) . ' WHERE `id_tab` = ' . (int) $result[$i]['id_tab'] ); } return true; } /** * Update position. * * @param bool $way * @param int $position * * @return bool */ public function updatePosition($way, $position) { if (!$res = Db::getInstance()->executeS( ' SELECT t.`id_tab`, t.`position`, t.`id_parent` FROM `' . _DB_PREFIX_ . 'tab` t WHERE t.`id_parent` = ' . (int) $this->id_parent . ' ORDER BY t.`position` ASC' )) { return false; } foreach ($res as $tab) { if ((int) $tab['id_tab'] == (int) $this->id) { $movedTab = $tab; } } if (!isset($movedTab)) { return false; } // < and > statements rather than BETWEEN operator // since BETWEEN is treated differently according to databases $result = (Db::getInstance()->execute(' UPDATE `' . _DB_PREFIX_ . 'tab` SET `position`= `position` ' . ($way ? '- 1' : '+ 1') . ' WHERE `position` ' . ($way ? '> ' . (int) $movedTab['position'] . ' AND `position` <= ' . (int) $position : '< ' . (int) $movedTab['position'] . ' AND `position` >= ' . (int) $position) . ' AND `id_parent`=' . (int) $movedTab['id_parent']) && Db::getInstance()->execute(' UPDATE `' . _DB_PREFIX_ . 'tab` SET `position` = ' . (int) $position . ' WHERE `id_parent` = ' . (int) $movedTab['id_parent'] . ' AND `id_tab`=' . (int) $movedTab['id_tab'])); return $result; } /** * Check Tab rights. * * @param int $idTab Tab ID * * @return bool Current employee has access to tab */ public static function checkTabRights($idTab) { static $tabAccesses = null; if (Context::getContext()->employee->id_profile == _PS_ADMIN_PROFILE_) { return true; } if ($tabAccesses === null) { $tabAccesses = Profile::getProfileAccesses(Context::getContext()->employee->id_profile); } if (isset($tabAccesses[(int) $idTab]['view'])) { return $tabAccesses[(int) $idTab]['view'] === '1'; } return false; } public static function recursiveTab($idTab, $tabs) { $adminTab = Tab::getTab((int) Context::getContext()->language->id, $idTab); $tabs[] = $adminTab; if (!empty($adminTab['id_parent'])) { $tabs = Tab::recursiveTab($adminTab['id_parent'], $tabs); } return $tabs; } /** * Overrides update to set position to last when changing parent tab. * * @see ObjectModel::update * * @param bool $nullValues * * @return bool */ public function update($nullValues = false) { $current_tab = new Tab($this->id); if ($current_tab->id_parent != $this->id_parent) { $this->position = Tab::getNewLastPosition($this->id_parent); } self::$_cache_tabs = []; return parent::update($nullValues); } /** * Get Tab by Profile ID. * * @param int $idParent * @param int $idProfile * * @return array|false|mysqli_result|PDOStatement|resource|null */ public static function getTabByIdProfile($idParent, $idProfile) { return Db::getInstance()->executeS(' SELECT t.`id_tab`, t.`id_parent`, tl.`name`, a.`id_profile` FROM `' . _DB_PREFIX_ . 'tab` t LEFT JOIN `' . _DB_PREFIX_ . 'access` a ON (a.`id_tab` = t.`id_tab`) LEFT JOIN `' . _DB_PREFIX_ . 'tab_lang` tl ON (t.`id_tab` = tl.`id_tab` AND tl.`id_lang` = ' . (int) Context::getContext()->language->id . ') WHERE a.`id_profile` = ' . (int) $idProfile . ' AND t.`id_parent` = ' . (int) $idParent . ' AND a.`view` = 1 AND a.`edit` = 1 AND a.`delete` = 1 AND a.`add` = 1 AND t.`id_parent` != 0 AND t.`id_parent` != -1 ORDER BY t.`id_parent` ASC '); } /** * @since 1.5.0 */ public static function getClassNameById($idTab) { return Db::getInstance()->getValue('SELECT class_name FROM ' . _DB_PREFIX_ . 'tab WHERE id_tab = ' . (int) $idTab); } public static function getTabModulesList($idTab) { $modulesList = ['default_list' => [], 'slider_list' => []]; if (!Tools::isFileFresh(Module::CACHE_FILE_TAB_MODULES_LIST, Tools::CACHE_LIFETIME_SECONDS)) { Tools::refreshFile(Module::CACHE_FILE_TAB_MODULES_LIST, _PS_TAB_MODULE_LIST_URL_); } $xmlTabModulesList = @simplexml_load_file(_PS_ROOT_DIR_ . Module::CACHE_FILE_TAB_MODULES_LIST); $className = null; $displayType = 'default_list'; if ($xmlTabModulesList) { foreach ($xmlTabModulesList->tab as $tab) { foreach ($tab->attributes() as $key => $value) { if ($key == 'class_name') { $className = (string) $value; } } if (Tab::getIdFromClassName((string) $className) == $idTab) { foreach ($tab->attributes() as $key => $value) { if ($key == 'display_type') { $displayType = (string) $value; } } foreach ($tab->children() as $module) { $modulesList[$displayType][(int) $module['position']] = (string) $module['name']; } ksort($modulesList[$displayType]); } } } return $modulesList; } }
Simpan