/home/sharedstore/.trash/modules/cz_bannercmsblock
NameSizeModeActions
classes/-0755rm
translations/-0755rm
views/-0755rm
config.xml4960644editdlrm
cz_bannercmsblock.php136600644editdlrm
index.php13830644editdlrm
logo.png25890644editdlrm
Edit: /home/sharedstore/.trash/modules/cz_bannercmsblock/cz_bannercmsblock.php (13660B)
* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) */ if (!defined('_PS_VERSION_')) { exit; } use PrestaShop\PrestaShop\Core\Module\WidgetInterface; require_once _PS_MODULE_DIR_ . 'cz_bannercmsblock/classes/BannerCmsBlock.php'; class Cz_Bannercmsblock extends Module implements WidgetInterface { // Equivalent module on PrestaShop 1.6, sharing the same data const MODULE_16 = 'blockcmsinfo'; private $templateFile; public function __construct() { $this->name = 'cz_bannercmsblock'; $this->tab = 'front_office_features'; $this->author = 'Codezeel'; $this->version = '4.1.1'; $this->need_instance = 0; $this->bootstrap = true; parent::__construct(); Shop::addTableAssociation('czbannercmsblockinfo', ['type' => 'shop']); $this->displayName = $this->trans('CZ - Banner CMS Block', [], 'Modules.BannerCmsBlock.Admin'); $this->description = $this->trans('Adds custom information block in your store', [], 'Modules.BannerCmsBlock.Admin'); $this->ps_versions_compliancy = ['min' => '1.7.4.0', 'max' => _PS_VERSION_]; $this->templateFile = 'module:cz_bannercmsblock/views/templates/hook/cz_bannercmsblock.tpl'; } public function install() { // Remove 1.6 equivalent module to avoid DB issues if (Module::isInstalled(self::MODULE_16)) { return $this->installFrom16Version(); } return $this->runInstallSteps() && $this->installFixtures(); } public function runInstallSteps() { return parent::install() && $this->installDB() && $this->registerHook('displayHome') && $this->registerHook('actionShopDataDuplication'); } public function installFrom16Version() { require_once _PS_MODULE_DIR_ . $this->name . '/classes/MigrateData.php'; $migration = new MigrateData(); $migration->retrieveOldData(); $oldModule = Module::getInstanceByName(self::MODULE_16); if ($oldModule) { $oldModule->uninstall(); } return $this->uninstallDB() && $this->runInstallSteps() && $migration->insertData(); } public function uninstall() { return parent::uninstall() && $this->uninstallDB(); } public function installDB() { $return = true; $return &= Db::getInstance()->execute(' CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'czbannercmsblockinfo` ( `id_czbannercmsblockinfo` INT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id_czbannercmsblockinfo`) ) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8 ;' ); $return &= Db::getInstance()->execute(' CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'czbannercmsblockinfo_shop` ( `id_czbannercmsblockinfo` INT(10) UNSIGNED NOT NULL, `id_shop` INT(10) UNSIGNED NOT NULL, PRIMARY KEY (`id_czbannercmsblockinfo`, `id_shop`) ) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8 ;' ); $return &= Db::getInstance()->execute(' CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'czbannercmsblockinfo_lang` ( `id_czbannercmsblockinfo` INT UNSIGNED NOT NULL, `id_shop` INT(10) UNSIGNED NOT NULL, `id_lang` INT(10) UNSIGNED NOT NULL , `text` text NOT NULL, PRIMARY KEY (`id_czbannercmsblockinfo`, `id_lang`, `id_shop`) ) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8 ;' ); return $return; } public function uninstallDB($drop_table = true) { $ret = true; if ($drop_table) { $ret &= Db::getInstance()->execute('DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'czbannercmsblockinfo`') && Db::getInstance()->execute('DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'czbannercmsblockinfo_shop`') && Db::getInstance()->execute('DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'czbannercmsblockinfo_lang`'); } return $ret; } public function getContent() { $output = ''; if (Tools::isSubmit('savecz_bannercmsblock')) { if (!Tools::getValue('text_' . (int) Configuration::get('PS_LANG_DEFAULT'), false)) { $output = $this->displayError($this->trans('Please fill out all fields.', [], 'Admin.Notifications.Error')); } else { $update = $this->processSaveBannerCmsBlock(); if (!$update) { $output = '
' . $this->trans('An error occurred on saving.', [], 'Admin.Notifications.Error') . '
'; } $this->_clearCache($this->templateFile); } } return $output . $this->renderForm(); } public function processSaveBannerCmsBlock() { $shops = Tools::getValue('checkBoxShopAsso_configuration', [$this->context->shop->id]); $text = []; $languages = Language::getLanguages(false); foreach ($languages as $lang) { $text[$lang['id_lang']] = (string) Tools::getValue('text_' . $lang['id_lang']); } $saved = true; foreach ($shops as $shop) { Shop::setContext(Shop::CONTEXT_SHOP, $shop); $czbannercmsblockinfo = new BannerCmsBlock(Tools::getValue('id_czbannercmsblockinfo', 1)); $czbannercmsblockinfo->text = $text; $saved &= $czbannercmsblockinfo->save(); } return $saved; } protected function renderForm() { $default_lang = (int) Configuration::get('PS_LANG_DEFAULT'); $fields_form = [ 'tinymce' => true, 'legend' => [ 'title' => $this->trans('CMS block', [], 'Modules.BannerCmsBlock.Admin'), ], 'input' => [ 'id_info' => [ 'type' => 'hidden', 'name' => 'id_czbannercmsblockinfo', ], 'content' => [ 'type' => 'textarea', 'label' => $this->trans('Text block', [], 'Modules.BannerCmsBlock.Admin'), 'lang' => true, 'name' => 'text', 'cols' => 40, 'rows' => 10, 'class' => 'rte', 'autoload_rte' => true, ], ], 'submit' => [ 'title' => $this->trans('Save', [], 'Admin.Actions'), ], 'buttons' => [ [ 'href' => AdminController::$currentIndex . '&configure=' . $this->name . '&token=' . Tools::getAdminTokenLite('AdminModules'), 'title' => $this->trans('Back to list', [], 'Admin.Actions'), 'icon' => 'process-icon-back', ], ], ]; if (Shop::isFeatureActive() && Tools::getValue('id_czbannercmsblockinfo') == false) { $fields_form['input'][] = [ 'type' => 'shop', 'label' => $this->trans('Shop association', [], 'Admin.Global'), 'name' => 'checkBoxShopAsso_theme', ]; } $helper = new HelperForm(); $helper->module = $this; $helper->name_controller = 'cz_bannercmsblock'; $helper->identifier = $this->identifier; $helper->token = Tools::getAdminTokenLite('AdminModules'); foreach (Language::getLanguages(false) as $lang) { $helper->languages[] = [ 'id_lang' => $lang['id_lang'], 'iso_code' => $lang['iso_code'], 'name' => $lang['name'], 'is_default' => ($default_lang == $lang['id_lang'] ? 1 : 0), ]; } $helper->currentIndex = AdminController::$currentIndex . '&configure=' . $this->name; $helper->default_form_language = $default_lang; $helper->allow_employee_form_lang = $default_lang; $helper->toolbar_scroll = true; $helper->title = $this->displayName; $helper->submit_action = 'savecz_bannercmsblock'; $helper->fields_value = $this->getFormValues(); return $helper->generateForm([['form' => $fields_form]]); } public function getFormValues() { $fields_value = []; $idShop = $this->context->shop->id; $idInfo = BannerCmsBlock::getBannerCmsBlockIdByShop($idShop); Shop::setContext(Shop::CONTEXT_SHOP, $idShop); $czbannercmsblockinfo = new BannerCmsBlock((int) $idInfo); $fields_value['text'] = $czbannercmsblockinfo->text; $fields_value['id_czbannercmsblockinfo'] = $idInfo; return $fields_value; } public function renderWidget($hookName = null, array $configuration = []) { if (!$this->isCached($this->templateFile, $this->getCacheId('cz_bannercmsblock'))) { $this->smarty->assign($this->getWidgetVariables($hookName, $configuration)); } return $this->fetch($this->templateFile, $this->getCacheId('cz_bannercmsblock')); } public function getWidgetVariables($hookName = null, array $configuration = []) { $sql = 'SELECT * FROM `' . _DB_PREFIX_ . 'czbannercmsblockinfo_lang` WHERE `id_lang` = ' . (int) $this->context->language->id . ' AND `id_shop` = ' . (int) $this->context->shop->id; return [ 'czbannercmsblockinfos' => Db::getInstance()->getRow($sql), ]; } public function installFixtures() { $return = true; $html = '
Flat 20% Discount
Gamer Holding Black
Flat 30% Discount
Tablet Lenovo Yoga Tab
'; $newhtml = str_replace('BASE_URL', $this->context->shop->getBaseURL(true), $html); $tabTexts = [ [ 'text' => $newhtml ], ]; $shopsIds = Shop::getShops(true, null, true); $languages = Language::getLanguages(false); $text = []; foreach ($tabTexts as $tab) { $czbannercmsblockinfo = new BannerCmsBlock(); foreach ($languages as $lang) { $text[$lang['id_lang']] = $tab['text']; } $czbannercmsblockinfo->text = $text; $return &= $czbannercmsblockinfo->add(); } if ($return && count($shopsIds) > 1) { foreach ($shopsIds as $idShop) { Shop::setContext(Shop::CONTEXT_SHOP, $idShop); $czbannercmsblockinfo->text = $text; $return &= $czbannercmsblockinfo->save(); } } return $return; } /** * Add BannerCmsBlock when adding a new Shop * * @param array $params */ public function hookActionShopDataDuplication($params) { if ($czbannercmsblockinfoId = BannerCmsBlock::getBannerCmsBlockIdByShop($params['old_id_shop'])) { Shop::setContext(Shop::CONTEXT_SHOP, $params['old_id_shop']); $oldInfo = new BannerCmsBlock($infoId); Shop::setContext(Shop::CONTEXT_SHOP, $params['new_id_shop']); $newInfo = new BannerCmsBlock($infoId, null, $params['new_id_shop']); $newInfo->text = $oldInfo->text; $newInfo->save(); } } }