Current File : //var/www/vinorea/modules/psxdesign/src/Install/Tabs/ModuleTabsUninstaller.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)
*/
declare(strict_types=1);
namespace PrestaShop\Module\PsxDesign\Install\Tabs;
if (!defined('_PS_VERSION_')) {
exit;
}
use Language;
use PrestaShopBundle\Entity\Repository\TabRepository;
use PsxDesign;
use Tab;
class ModuleTabsUninstaller
{
private const ADMIN_THEMES_TAB = 'AdminThemes';
private const DEFAULT_ADMIN_THEMES_PARENT_TAB = 'AdminParentThemes';
/* @var TabRepository */
private $tabRepository;
/* @var PsxDesign */
private $module;
public function __construct(TabRepository $tabRepository, PsxDesign $module)
{
$this->tabRepository = $tabRepository;
$this->module = $module;
}
public function uninstallTabs(): bool
{
$tabs = Tabs::getTabs();
foreach ($tabs as $tab) {
$tabId = (int) $this->tabRepository->findOneIdByClassName($tab['class_name']);
if (!$tabId) {
continue;
}
$tab = new Tab($tabId);
$tab->delete();
}
$this->modifyAdminThemesTab();
return true;
}
/**
* @return void
*
* @throws \PrestaShopDatabaseException
* @throws \PrestaShopException
*/
public function modifyAdminThemesTab()
{
$adminThemesTab = Tab::getInstanceFromClassName(self::ADMIN_THEMES_TAB);
$adminThemesParentTab = Tab::getInstanceFromClassName(self::DEFAULT_ADMIN_THEMES_PARENT_TAB);
$adminThemesTab->active = true;
$adminThemesTab->update();
if ((int) $adminThemesTab->id_parent !== (int) $adminThemesParentTab->id) {
$translator = $this->module->getTranslator();
$notDefaultParentTab = new Tab((int) $adminThemesTab->id_parent);
foreach (Language::getLanguages() as $lang) {
$notDefaultParentTab->name[$lang['id_lang']] = $translator->trans('Theme & Logo', [], 'Modules.Psxdesign.Admin', $lang['locale']);
}
$notDefaultParentTab->position = 0;
$notDefaultParentTab->update();
}
}
}