278
modules/an_banners/an_banners.php
Normal file
278
modules/an_banners/an_banners.php
Normal file
@@ -0,0 +1,278 @@
|
||||
<?php
|
||||
/**
|
||||
* 2022 Anvanto
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
*
|
||||
* @author Anvanto <anvantoco@gmail.com>
|
||||
* @copyright 2022 Anvanto
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
*/
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
use PrestaShop\PrestaShop\Core\Module\WidgetInterface;
|
||||
|
||||
require_once _PS_MODULE_DIR_ . 'an_banners/classes/anBanners.php';
|
||||
require_once _PS_MODULE_DIR_ . 'an_banners/hooks_ignore.php';
|
||||
|
||||
class an_banners extends Module implements WidgetInterface
|
||||
{
|
||||
|
||||
const PREFIX = 'an_b_';
|
||||
|
||||
protected $_tabs = [
|
||||
|
||||
[
|
||||
'class_name' => 'AdminAnBanners',
|
||||
'parent' => 'AdminParentModulesSf',
|
||||
'name' => 'Banners',
|
||||
'active' => 0
|
||||
],
|
||||
];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->name = 'an_banners';
|
||||
$this->tab = 'others';
|
||||
$this->version = '1.0.8';
|
||||
$this->author = 'Anvanto';
|
||||
$this->need_instance = 0;
|
||||
|
||||
$this->bootstrap = true;
|
||||
$this->module_key = '';
|
||||
|
||||
parent::__construct();
|
||||
|
||||
$this->displayName = $this->l('Banners, Simple text and others for theme');
|
||||
$this->description = $this->l('Banners, Simple Text and others for themes y Anvanto');
|
||||
|
||||
$this->confirmUninstall = $this->l('Are you sure you want to uninstall the module?');
|
||||
|
||||
$this->ps_versions_compliancy = array('min' => '1.7', 'max' => _PS_VERSION_);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
|
||||
public function install()
|
||||
{
|
||||
$sql = include _PS_MODULE_DIR_ . $this->name . '/sql/install.php';
|
||||
foreach ($sql as $_sql) {
|
||||
Db::getInstance()->Execute($_sql);
|
||||
}
|
||||
|
||||
$languages = Language::getLanguages();
|
||||
foreach ($this->_tabs as $tab) {
|
||||
$_tab = new Tab();
|
||||
$_tab->active = $tab['active'];
|
||||
$_tab->class_name = $tab['class_name'];
|
||||
$_tab->id_parent = Tab::getIdFromClassName($tab['parent']);
|
||||
if (empty($_tab->id_parent)) {
|
||||
$_tab->id_parent = 0;
|
||||
}
|
||||
|
||||
$_tab->module = $this->name;
|
||||
foreach ($languages as $language) {
|
||||
$_tab->name[$language['id_lang']] = $this->l($tab['name']);
|
||||
}
|
||||
|
||||
$_tab->add();
|
||||
}
|
||||
|
||||
$parent = parent::install();
|
||||
|
||||
$hooks = anBanners::importJsonBanners();
|
||||
$listHooksForRegister = [];
|
||||
foreach ($hooks as $hook) {
|
||||
$listHooksForRegister[$hook] = $hook;
|
||||
}
|
||||
|
||||
$this->registerHook('displayHeader');
|
||||
|
||||
foreach ($listHooksForRegister as $hook) {
|
||||
$this->registerHook($hook);
|
||||
}
|
||||
|
||||
return $parent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
|
||||
public function uninstall()
|
||||
{
|
||||
$sql = include _PS_MODULE_DIR_ . $this->name . '/sql/uninstall.php';
|
||||
foreach ($sql as $_sql) {
|
||||
Db::getInstance()->Execute($_sql);
|
||||
}
|
||||
|
||||
foreach ($this->_tabs as $tab) {
|
||||
$_tab_id = Tab::getIdFromClassName($tab['class_name']);
|
||||
$_tab = new Tab($_tab_id);
|
||||
$_tab->delete();
|
||||
}
|
||||
|
||||
return parent::uninstall();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $hookName
|
||||
* @param array $params
|
||||
* @return mixed|void
|
||||
*/
|
||||
|
||||
public function renderWidget($hookName, array $params)
|
||||
{
|
||||
$banners = anBanners::getBanners($hookName);
|
||||
|
||||
$this->smarty->assign('banners', $banners);
|
||||
|
||||
return $this->fetch('module:' . $this->name . '/views/templates/front/banners.tpl');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $hookName
|
||||
* @param array $params
|
||||
* @return array
|
||||
*/
|
||||
|
||||
public function getWidgetVariables($hookName, array $params)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public function getHooksList($file = 'hooks')
|
||||
{
|
||||
if (Tools::file_exists_no_cache(_PS_MODULE_DIR_ . 'an_banners/'.$file.'.php')) {
|
||||
return include _PS_MODULE_DIR_ . 'an_banners/'.$file.'.php';
|
||||
} else {
|
||||
return array();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
|
||||
public function hookFilter($hook)
|
||||
{
|
||||
$res = strpos(Tools::strtolower($hook['name']), 'admin') === false;
|
||||
$res &= strpos(Tools::strtolower($hook['name']), 'backoffice') === false;
|
||||
|
||||
$ignoreHooks = $this->getHooksList('hooks_ignore');
|
||||
if (in_array($hook['name'], $ignoreHooks)){
|
||||
$res &= false;
|
||||
}
|
||||
|
||||
return $res;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
|
||||
public function getHooksQuery()
|
||||
{
|
||||
$hooksQuery = array();
|
||||
|
||||
$hooks = Hook::getHooks(true, true);
|
||||
$prestaHooks = array_filter($hooks, array($this, 'hookFilter'));
|
||||
|
||||
if (version_compare(_PS_VERSION_, '1.7.0.0', '<') == 1) {
|
||||
foreach ($this->getHooksList() as $hookname) {
|
||||
$hooksQuery[] = array('name' => $hookname);
|
||||
}
|
||||
|
||||
return array_merge($hooksQuery);
|
||||
} else {
|
||||
foreach ($this->getHooksList() as $hookname) {
|
||||
if (!in_array($hookname, array_column($prestaHooks, 'name'))) {
|
||||
$hooksQuery[] = array('name' => $hookname);
|
||||
}
|
||||
}
|
||||
|
||||
return array_merge($hooksQuery, $prestaHooks);
|
||||
}
|
||||
}
|
||||
|
||||
public function getContent()
|
||||
{
|
||||
Tools::redirectAdmin($this->context->link->getAdminLink('AdminAnBanners'));
|
||||
}
|
||||
|
||||
public function hookHeader()
|
||||
{
|
||||
$this->hookDisplayHeader();
|
||||
}
|
||||
|
||||
public function hookDisplayHeader()
|
||||
{
|
||||
$this->context->controller->registerStylesheet(
|
||||
$this->name . "_css",
|
||||
'modules/' . $this->name . '/views/css/front.css',
|
||||
['server' => 'local', 'priority' => 150]
|
||||
);
|
||||
|
||||
$this->context->controller->registerJavascript(
|
||||
$this->name . "_js",
|
||||
'modules/' . $this->name . '/views/js/front.js',
|
||||
['server' => 'local', 'priority' => 150]
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
public function topPromo()
|
||||
{
|
||||
$this->context->smarty->assign('theme', $this->getThemeInfo());
|
||||
return $this->display(__FILE__, 'views/templates/admin/top.tpl');
|
||||
}
|
||||
|
||||
public function getThemeInfo()
|
||||
{
|
||||
$theme = [];
|
||||
$themeFileJson = _PS_THEME_DIR_.'/config/theme.json';
|
||||
if (Tools::file_exists_no_cache($themeFileJson)) {
|
||||
$theme = (array)json_decode(Tools::file_get_contents($themeFileJson), 1);
|
||||
}
|
||||
|
||||
if (!isset($theme['url_contact_us']) || $theme['url_contact_us'] == ''){
|
||||
|
||||
$urlContactUs = 'https://addons.prestashop.com/contact-form.php';
|
||||
|
||||
if (isset($theme['addons_id']) && $theme['addons_id'] != ''){
|
||||
$urlContactUs .= '?id_product=' .$theme['addons_id'];
|
||||
} elseif (isset($this->url_contact_us) && $this->url_contact_us != ''){
|
||||
$urlContactUs = $this->url_contact_us;
|
||||
} elseif (isset($this->addons_product_id) && $this->addons_product_id != ''){
|
||||
$urlContactUs .= '?id_product=' .$this->addons_product_id;
|
||||
}
|
||||
|
||||
$theme['url_contact_us'] = $urlContactUs;
|
||||
}
|
||||
|
||||
if (!isset($theme['url_rate']) || $theme['url_rate'] == ''){
|
||||
|
||||
$urlRate = 'https://addons.prestashop.com/ratings.php';
|
||||
|
||||
if (isset($theme['addons_id']) && $theme['addons_id'] != ''){
|
||||
$urlRate .= '?id_product=' .$theme['addons_id'];
|
||||
} elseif (isset($this->url_rate) && $this->url_rate != ''){
|
||||
$urlRate = $this->url_rate;
|
||||
} elseif (isset($this->addons_product_id) && $this->addons_product_id != ''){
|
||||
$urlRate .= '?id_product=' .$this->addons_product_id;
|
||||
}
|
||||
|
||||
$theme['url_rate'] = $urlRate;
|
||||
}
|
||||
|
||||
return $theme;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user