* @copyright 2015 PrestaShow.pl * @license http://PrestaShow.pl/license */ class PShowAdminController extends ModuleAdminController { public $bootstrap = true; public $alerts = array(); public $filepath = null; public $template_isset = false; /** * Tips * * @var array */ public $tips = array(); /** * * @param warning|success|info|danger $type * @param string $id Uniq id * @param string $message */ public function addTip($type, $id, $message) { $this->tips[] = array( 'type' => $type, 'id' => $id, 'message' => $message ); } public function __construct() { @ini_set('display_errors', 'on'); @error_reporting(E_ERROR | E_PARSE | E_STRICT); if (version_compare(_PS_VERSION_, '1.7.0') >= 0) { $this->translator = Context::getContext()->getTranslator(); } $this->addTip( 'info', 'tips_information', $this->l('The module provides instructions on how to use the module.' . 'You can close each tip. At any time you can restore all the ' . 'instructions by going to the module settings and activating ' . 'the `Show hints` option.') ); $reflection = new ReflectionClass($this); $this->filepath = $reflection->getFileName(); parent::__construct(); if (Tools::getValue('controller') != 'PShowImporterImport') { PShowUpdate::getInstance($this->filepath)->getNewestVersionNumber(); } $this->modulepath = PShowUpdate::getInstance($this->filepath)->getModulePath(); $this->modulename = PShowUpdate::getInstance($this->filepath)->getModuleName(); $this->module = new $this->modulename(); $this->context->smarty->assign( 'prestashow_logo_url', 'http://' . $_SERVER['SERVER_NAME'] . __PS_BASE_URI__ . 'modules/' . $this->modulename . '/system/view/img/prestashow-logo.jpg' ); $displayModuleVersion = (Tools::getValue('controller') == 'PShowImporterImport') ? 'ajax' : PShowUpdate::getInstance($this->filepath)->formatVersionToDisplay( PShowUpdate::getInstance($this->filepath)->getModuleVersionNumber() ); $this->context->smarty->assign('moduleVersion', $displayModuleVersion); $this->context->smarty->assign('module', $this->module); $isUpdateAvailable = (Tools::getValue('controller') == 'PShowImporterImport') ? false : (!PShowUpdate::getInstance($this->filepath)->compareModuleAndNewestVersion()); $this->context->smarty->assign('isUpdateAvailable', $isUpdateAvailable); $settings = PShow_Settings::getInstance(__FILE__)->getAll(); $this->mod_settings = array(); foreach ($settings as $s) { $this->mod_settings[$s['name']] = PShow_Settings::getInstance(__FILE__)->get($s['name']); } $this->context->smarty->assign('mod_settings', $this->mod_settings); } public function createTemplate($tpl_name) { if (file_exists($this->getTemplatePath() . $tpl_name) && $this->viewAccess()) { return $this->context->smarty->createTemplate($this->getTemplatePath() . $tpl_name, $this->context->smarty); } return parent::createTemplate($tpl_name); } public function getTemplatePath() { return _PS_MODULE_DIR_ . $this->modulename . '/views/templates/admin/'; } public function initContent() { parent::initContent(); if (!$this->display) { $this->display = $this->default_action; } // Temporary bypass to helpers if (method_exists($this, $this->display . 'HelperAction') === false) { $this->action = Tools::getValue('page'); if (!$this->action || !method_exists($this, $this->action . 'Action')) { $this->action = $this->default_action; } $this->{$this->action . 'Action'}(); } if (!$this->template_isset) { $this->setTemplate("../../../system/view/admin_controller.tpl"); } if (version_compare(_PS_VERSION_, '1.6', '<')) { // PS 1.5 is not compatibile with bootstrap $this->context->controller->addCSS(__PS_BASE_URI__ . 'modules/' . $this->modulename . '/system/view/css/backward-compatibility.css'); } $this->context->controller->addJS(__PS_BASE_URI__ . 'modules/' . $this->modulename . '/system/view/js/select_tab.js'); $this->context->controller->addJS(__PS_BASE_URI__ . 'modules/' . $this->modulename . '/system/view/js/tips.js'); $this->context->smarty->assign('moduleurl', __PS_BASE_URI__ . 'modules/' . $this->modulename . '/'); $this->context->smarty->assign('TOKEN', Tools::getValue('token')); $mainClassContent = Tools::file_get_contents($this->modulepath . $this->modulename . '.php'); preg_match_all('~class ([a-zA-Z]+) ~', $mainClassContent, $matches); $arrayWithClass = end($matches); $classname = end($arrayWithClass); $this->context->smarty->assign('PSHOW_MODULE_CLASS_NAME_', $classname); $recommended = PShowUpdate::getInstance($this->filepath)->getRecommendedProduct(); $this->context->smarty->assign('recommended', $recommended); $this->context->smarty->assign('action', $this->action); $this->context->smarty->assign('alerts', $this->alerts); $this->context->smarty->assign('tips', $this->tips); $this->context->smarty->assign('action_displayName', $this->action_displayName); $this->context->smarty->assign('controller_displayName', $this->controller_displayName); $this->context->smarty->assign('select_menu_tab', $this->select_menu_tab); $modulename_low = Tools::strtolower($this->modulename); $classname_low = Tools::strtolower(get_class($this)); $controllername = str_replace(array("controller", $modulename_low), "", $classname_low); $this->context->smarty->assign('controllername', $controllername); } }