/home/sharedstore/public_html/prestashop.sharedstore.ma/modules/ps_customtext
Edit: /home/sharedstore/public_html/prestashop.sharedstore.ma/modules/ps_customtext/ps_customtext.php (13881B)
* @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\Adapter\Presenter\Object\ObjectPresenter;
use PrestaShop\PrestaShop\Core\Addon\Module\ModuleManagerBuilder;
use PrestaShop\PrestaShop\Core\Module\WidgetInterface;
require_once _PS_MODULE_DIR_ . 'ps_customtext/classes/CustomText.php';
class Ps_Customtext extends Module implements WidgetInterface
{
// Equivalent module on PrestaShop 1.6, sharing the same data
const MODULE_16 = 'blockcmsinfo';
/**
* @var string Template used by widget
*/
private $templateFile;
public function __construct()
{
$this->name = 'ps_customtext';
$this->tab = 'front_office_features';
$this->author = 'PrestaShop';
$this->version = '4.2.1';
$this->need_instance = 0;
$this->bootstrap = true;
parent::__construct();
Shop::addTableAssociation('info', ['type' => 'shop']);
$this->displayName = $this->trans('Custom text block', [], 'Modules.Customtext.Admin');
$this->description = $this->trans('Give your visitors extra information, display a customized block of content on your homepage.', [], 'Modules.Customtext.Admin');
$this->ps_versions_compliancy = ['min' => '1.7.5.0', 'max' => _PS_VERSION_];
$this->templateFile = 'module:ps_customtext/ps_customtext.tpl';
}
/**
* @return bool
*/
public function install()
{
// Remove 1.6 equivalent module to avoid DB issues
$moduleManagerBuilder = ModuleManagerBuilder::getInstance();
$moduleManager = $moduleManagerBuilder->build();
if ($moduleManager->isInstalled(self::MODULE_16)) {
return $this->installFrom16Version();
}
return $this->runInstallSteps()
&& $this->installFixtures();
}
/**
* @return bool
*/
public function runInstallSteps()
{
return parent::install()
&& $this->installDB()
&& $this->registerHook('displayHome')
&& $this->registerHook('actionShopDataDuplication');
}
/**
* @return bool
*/
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();
}
/**
* @return bool
*/
public function uninstall()
{
return parent::uninstall() && $this->uninstallDB();
}
/**
* @return bool
*/
public function installDB()
{
$return = Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'info` (
`id_info` INT UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id_info`)
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8 ;'
);
$return = $return && Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'info_shop` (
`id_info` INT(10) UNSIGNED NOT NULL,
`id_shop` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (`id_info`, `id_shop`)
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8 ;'
);
$return = $return && Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'info_lang` (
`id_info` 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_info`, `id_lang`, `id_shop`)
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8 ;'
);
return $return;
}
/**
* @param bool $drop_table
*
* @return bool
*/
public function uninstallDB($drop_table = true)
{
if (!$drop_table) {
return true;
}
return Db::getInstance()->execute('DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'info`, `' . _DB_PREFIX_ . 'info_shop`, `' . _DB_PREFIX_ . 'info_lang`');
}
/**
* @return string
*/
public function getContent()
{
$output = '';
if (Tools::isSubmit('saveps_customtext')) {
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->processSaveCustomText();
if (!$update) {
$output = '
'
. $this->trans('An error occurred on saving.', [], 'Admin.Notifications.Error')
. '
';
}
$this->_clearCache($this->templateFile);
if ($update) {
Tools::redirectAdmin($this->context->link->getAdminLink('AdminModules') . '&configure=' . $this->name . '&conf=4');
}
}
}
return $output . $this->renderForm();
}
/**
* @return bool
*/
public function processSaveCustomText()
{
$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']);
if (!Configuration::get('PS_ALLOW_HTML_IFRAME') && preg_match('/
<\/iframe>/isU', $text[$lang['id_lang']])) {
$this->context->controller->errors[] = $this->trans('To use