Current File : //var/www/prestashop/modules/psxdesign/upgrade/upgrade-1.1.0.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)
*/
if (!defined('_PS_VERSION_')) {
exit;
}
/**
* @param PsxDesign $module
*
* @return bool
*/
function upgrade_module_1_1_0(PsxDesign $module): bool
{
$tabs = getTabs_1_1_0($module);
createColorPaletteDb_1_1_0();
return uninstallTabs_1_1_0($tabs) &&
installTabs_1_1_0($tabs, $module) &&
$module->registerHook('actionObjectTabUpdateAfter') &&
$module->registerHook('actionAdminControllerSetMedia') &&
modifyAdminThemesTab_1_1_0($module);
}
function getTabs_1_1_0($module): array
{
$translator = $module->getTranslator();
return [
[
'class_name' => 'AdminPsxDesignParentTab',
'visible' => true,
'name' => $translator->trans('Theme settings', [], 'Modules.Psxdesign.Admin'),
'route_name' => '',
'parent_class_name' => 'AdminParentThemes',
'wording' => 'Theme settings',
'wording_domain' => 'Admin.Modules.PsxDesign',
'position' => 0,
],
[
'class_name' => 'AdminPsxDesignThemeGeneral',
'visible' => true,
'name' => $translator->trans('Themes', [], 'Modules.Psxdesign.Admin'),
'route_name' => 'admin_psxdesign_themes_index',
'parent_class_name' => 'AdminPsxDesignParentTab',
'wording' => 'Themes',
'wording_domain' => 'Admin.Modules.PsxDesign',
'position' => 0,
],
[
'class_name' => 'AdminPsxDesignLogos',
'visible' => true,
'name' => $translator->trans('Logos', [], 'Modules.Psxdesign.Admin'),
'route_name' => 'admin_logos_index',
'parent_class_name' => 'AdminPsxDesignParentTab',
'wording' => 'Logos',
'wording_domain' => 'Admin.Modules.PsxDesign',
'position' => 1,
],
[
'class_name' => 'AdminPsxDesignColors',
'visible' => true,
'name' => $translator->trans('Colors', [], 'Modules.Psxdesign.Admin'),
'route_name' => 'admin_colors_index',
'parent_class_name' => 'AdminPsxDesignParentTab',
'wording' => 'Colors',
'wording_domain' => 'Admin.Modules.PsxDesign',
'position' => 2,
],
];
}
/**
* @param array $tabs
*
* @return bool
*/
function uninstallTabs_1_1_0(array $tabs): bool
{
foreach ($tabs as $tab) {
$tabId = (int) Tab::getInstanceFromClassName($tab['class_name'])->id;
if (!$tabId) {
continue;
}
$tab = new Tab($tabId);
$tab->delete();
}
return true;
}
function installTabs_1_1_0(array $tabs, PsxDesign $module): bool
{
$translator = $module->getTranslator();
foreach ($tabs as $tab) {
$tabId = (int) Tab::getInstanceFromClassName($tab['class_name'])->id;
if (!$tabId) {
$tabId = null;
}
$newTab = new Tab($tabId);
$newTab->active = $tab['visible'];
$newTab->class_name = $tab['class_name'];
$newTab->route_name = $tab['route_name'];
$newTab->name = [];
$newTab->id_parent = Tab::getInstanceFromClassName($tab['parent_class_name'])->id;
foreach (Language::getLanguages() as $lang) {
$newTab->name[$lang['id_lang']] = $translator->trans($tab['name'], [], 'Modules.Psxdesign.Admin', $lang['locale']);
}
$newTab->module = $module->name;
if (!$newTab->save()) {
return false;
}
$newTab->position = $tab['position'];
$newTab->save();
}
return true;
}
function modifyAdminThemesTab_1_1_0(PsxDesign $module): bool
{
$adminThemesTab = Tab::getInstanceFromClassName('AdminThemes');
$adminThemesParentTab = Tab::getInstanceFromClassName('AdminParentThemes');
$adminThemes = new Tab($adminThemesTab->id);
$adminThemes->active = false;
$adminThemes->update();
if ($adminThemesTab->id_parent !== $adminThemesParentTab->id) {
$translator = $module->getTranslator();
$adminThemesParent = new Tab($adminThemes->id_parent);
foreach (Language::getLanguages() as $lang) {
$adminThemesParent->name[$lang['id_lang']] = $translator->trans('Theme modules', [], 'Modules.Psxdesign.Admin', $lang['locale']);
}
$adminThemesParent->position = 1;
$adminThemesParent->update();
}
return true;
}
function createColorPaletteDb_1_1_0(): void
{
$db = Db::getInstance();
$sqlDb = 'CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'psxdesign_color_palette` (
`id` INT(10) UNSIGNED AUTO_INCREMENT NOT NULL,
`name` VARCHAR(64) NOT NULL,
`primary` VARCHAR(7) NOT NULL,
`secondary` VARCHAR(7) NOT NULL,
`text` VARCHAR(7) NOT NULL,
`active` tinyint(1) DEFAULT 0 CHECK (`active` IN (0, 1)),
`default` tinyint(1) DEFAULT 0 CHECK (`default` IN (0, 1)),
PRIMARY KEY(`id`)
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARACTER SET `utf8mb4` COLLATE `utf8mb4_unicode_ci`;';
$db->execute($sqlDb);
$sqlDefaultPalette = 'INSERT INTO ' . _DB_PREFIX_ . "psxdesign_color_palette (`name`, `primary`, `secondary`, `text`, `active`, `default`)
VALUES ('Default', '#24b9d7', '#f39d72', '#363a42', 0, 1);";
$db->execute($sqlDefaultPalette);
$sqlDefaultSecondPalette = 'INSERT INTO ' . _DB_PREFIX_ . "psxdesign_color_palette (`name`, `primary`, `secondary`, `text`, `active`, `default`)
VALUES ('Theme colors', '#24b9d7', '#f39d72', '#363a42', 1, 0);";
$db->execute($sqlDefaultSecondPalette);
}