* @copyright 2007-2020 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) * International Registered Trademark & Property of PrestaShop SA */ if (!defined('_PS_VERSION_')) { exit; } class Ps_faviconnotificationbo extends Module { const CONFIG_COUNT_ORDER_NOTIFICATION = 'CHECKBOX_ORDER'; const CONFIG_COUNT_CUSTOMER_NOTIFICATION = 'CHECKBOX_CUSTOMER'; const CONFIG_COUNT_MSG_NOTIFICATION = 'CHECKBOX_MESSAGE'; const CONFIG_FAVICON_BACKGROUND_COLOR = 'BACKGROUND_COLOR_FAVICONBO'; const CONFIG_FAVICON_TXT_COLOR = 'TEXT_COLOR_FAVICONBO'; const HOOKS = [ 'displayBackOfficeHeader', ]; const ADMINCONTROLLERS = [ 'adminConfigure' => 'AdminConfigureFaviconBo', ]; public function __construct() { $this->name = 'ps_faviconnotificationbo'; $this->tab = 'administration'; $this->version = '2.1.3'; $this->author = 'PrestaShop'; $this->module_key = '91315ca88851b6c2852ee4be0c59b7b1'; parent::__construct(); $this->displayName = $this->trans('Order Notifications on the Favicon', [], 'Modules.Faviconnotificationbo.Admin'); $this->description = $this->trans('Get notified directly on your browser tab each time you get a new order, customer or message.', [], 'Modules.Faviconnotificationbo.Admin'); $this->ps_versions_compliancy = ['min' => '1.7.6.0', 'max' => _PS_VERSION_]; } /** * @return bool */ public function install() { return parent::install() && $this->registerHook(static::HOOKS) && $this->installConfiguration() && $this->installTabs(); } /** * @return bool */ public function installConfiguration() { return (bool) Configuration::updateValue(static::CONFIG_COUNT_ORDER_NOTIFICATION, '1') && (bool) Configuration::updateValue(static::CONFIG_COUNT_CUSTOMER_NOTIFICATION, '1') && (bool) Configuration::updateValue(static::CONFIG_COUNT_MSG_NOTIFICATION, '1') && (bool) Configuration::updateValue(static::CONFIG_FAVICON_BACKGROUND_COLOR, '#DF0067') && (bool) Configuration::updateValue(static::CONFIG_FAVICON_TXT_COLOR, '#FFFFFF'); } /** * @return bool */ public function installTabs() { $result = true; foreach (static::ADMINCONTROLLERS as $controller_name) { if (Tab::getIdFromClassName($controller_name)) { continue; } $tab = new Tab(); $tab->class_name = $controller_name; $tab->module = $this->name; $tab->active = true; $tab->id_parent = -1; $tab->name = array_fill_keys( Language::getIDs(false), $this->displayName ); $result = $result && (bool) $tab->add(); } return $result; } /** * @return bool */ public function uninstall() { return parent::uninstall() && $this->uninstallConfiguration() && $this->uninstallTabs(); } /** * @return bool */ public function uninstallConfiguration() { return (bool) Configuration::deleteByName(static::CONFIG_COUNT_ORDER_NOTIFICATION) && (bool) Configuration::deleteByName(static::CONFIG_COUNT_CUSTOMER_NOTIFICATION) && (bool) Configuration::deleteByName(static::CONFIG_COUNT_MSG_NOTIFICATION) && (bool) Configuration::deleteByName(static::CONFIG_FAVICON_BACKGROUND_COLOR) && (bool) Configuration::deleteByName(static::CONFIG_FAVICON_TXT_COLOR); } /** * @return bool */ public function uninstallTabs() { $result = true; foreach (Tab::getCollectionFromModule($this->name) as $tab) { /** @var Tab $tab */ $result = $result && (bool) $tab->delete(); } return $result; } /** * Redirect to our ModuleAdminController when click on Configure button */ public function getContent() { Tools::redirectAdmin($this->context->link->getAdminLink(static::ADMINCONTROLLERS['adminConfigure'])); } /** * @param array $params * * @return string */ public function hookDisplayBackOfficeHeader(array $params) { $this->context->controller->addJS([ $this->getPathUri() . 'views/js/favico.js', $this->getPathUri() . 'views/js/ps_faviconnotificationbo.js', ]); $this->context->smarty->assign([ 'bofaviconBgColor' => Configuration::get(static::CONFIG_FAVICON_BACKGROUND_COLOR), 'bofaviconTxtColor' => Configuration::get(static::CONFIG_FAVICON_TXT_COLOR), 'bofaviconOrder' => Configuration::get(static::CONFIG_COUNT_ORDER_NOTIFICATION), 'bofaviconCustomer' => Configuration::get(static::CONFIG_COUNT_CUSTOMER_NOTIFICATION), 'bofaviconMsg' => Configuration::get(static::CONFIG_COUNT_MSG_NOTIFICATION), 'bofaviconUrl' => $this->context->link->getAdminLink('AdminCommon'), ]); return $this->context->smarty->fetch($this->getLocalPath() . 'views/templates/hook/displayBackOfficeHeader.tpl'); } }