traParams * * @return string */ public function getLegacyAdminLink($controller, $withToken = true, $extraParams = []) { return $this->getContext()->link->getLegacyAdminLink($controller, $withToken, $extraParams); } /** * Adapter to get Front controller HTTP link. * * @param string $controller the controller name * * @return string */ public function getFrontUrl($controller) { $legacyContext = $this->getContext(); return $legacyContext->link->getPageLink($controller); } /** * Adapter to get Root Url. * * @return string The lagacy root URL */ public function getRootUrl() { return __PS_BASE_URI__; } /** * Adapter to get upload directory * * @return string */ public function getUploadDirectory() { return _PS_UPLOAD_DIR_; } /** * Url to the mail themes folder * * @return string */ public function getMailThemesUrl() { return $this->tools->getShopDomainSsl(true) . __PS_BASE_URI__ . $this->mailThemesUri; } /** * This fix is used to have a ready translation in the smarty 'l' function. * Called by AutoResponseFormatTrait in beforeActionSuggestResponseFormat(). * So if you do not use this Trait, you must call this method by yourself in the action. * * @param string $legacyController */ public function setupLegacyTranslationContext($legacyController = 'AdminTab') { Context::getContext()->override_controller_name_for_translations = $legacyController; } /** * Adapter to get admin legacy layout into legacy controller context. * * @param string $controllerName The legacy controller name * @param string $title The page title to override default one * @param array $headerToolbarBtn The header toolbar to override * @param string $displayType The legacy display type variable * @param bool $showContentHeader can force header toolbar (buttons and title) to be hidden with false value * @param string $headerTabContent * @param bool $enableSidebar Allow to use right sidebar to display docs for instance * @param string $helpLink If specified, will be used instead of legacy one * @param string[] $jsRouterMetadata array to provide base_url and security token for JS Router * @param string $metaTitle * @param bool $useRegularH1Structure allows complex

structure if set to false * * @return string The html layout */ public function getLegacyLayout( $controllerName, $title, $headerToolbarBtn, $displayType, $showContentHeader, $headerTabContent, $enableSidebar, $helpLink = '', $jsRouterMetadata = [], $metaTitle = '', $useRegularH1Structure = true ) { $originCtrl = new AdminLegacyLayoutControllerCore( $controllerName, $title, $headerToolbarBtn, $displayType, $showContentHeader, $headerTabContent, $enableSidebar, $helpLink, $jsRouterMetadata, $metaTitle, $useRegularH1Structure ); $originCtrl->run(); return $originCtrl->outPutHtml; } /** * Returns available languages. The first one is the employee default one. * * @param bool $active Select only active languages * @param int|bool $id_shop Shop ID * @param bool $ids_only If true, returns an array of language IDs * * @return array Languages */ public function getLanguages($active = true, $id_shop = false, $ids_only = false) { $languages = Language::getLanguages($active, $id_shop, $ids_only); $defaultLanguageFirst = $this->getLanguage(); usort($languages, function ($a, $b) use ($defaultLanguageFirst) { if ($a['id_lang'] == $defaultLanguageFirst->id) { return -1; // $a is the default one. } if ($b['id_lang'] == $defaultLanguageFirst->id) { return 1; // $b is the default one. } return 0; }); return $languages; } /** * Returns language ISO code set for the current employee. * * @return string Languages */ public function getEmployeeLanguageIso() { return Language::getIsoById($this->getContext()->employee->id_lang); } /** * Returns Currency set for the current employee. * * @return Currency */ public function getEmployeeCurrency() { if (null === $this->employeeCurrency && $this->getContext()->currency) { $this->employeeCurrency = $this->getContext()->currency->sign; } return $this->employeeCurrency; } /** * @return Language */ public function getLanguage() { $context = $this->getContext(); if ($context->language instanceof Language) { return $context->language; } return new Language(); } /** * Get employee's default tab name. * * @return string Default tab name for employee * * @throws RuntimeException Throws exception if employee does not exist in context */ public function getDefaultEmployeeTab() { $employee = $this->getContext()->employee; if (!$employee instanceof Employee) { throw new RuntimeException('Cannot retrieve default employee tab. Employee does not exist in context!'); } $idTab = $employee->default_tab; $tab = new Tab($idTab); return $tab->class_name; } /** * @return string */ public function getMailThemesUri() { return $this->mailThemesUri; } /** * @return array Returns both enabled and disabled languages */ public function getAvailableLanguages() { return $this->getLanguages(false); } /** * @param Context $testInstance * Unit testing purpose only */ public static function setInstanceForTesting(Context $testInstance) { static::$instance = $testInstance; } }