. * */ namespace SP\Controller; defined('APP_ROOT') || die(_('No es posible acceder directamente a este archivo')); use SP\Auth\Auth2FA; use SP\Config\Config; use SP\Core\ActionsInterface; use SP\Core\Language; use SP\Core\Session; use SP\Core\SessionUtil; use SP\Core\Themes; use SP\Mgmt\User\UserPreferences; /** * Class PreferencesC encargada de mostrar las preferencias de los usuarios * * @package SP\Controller */ class UsersPrefs extends Controller implements ActionsInterface { /** * @var int */ private $tabIndex = 0; /** * @var UserPreferences */ private $userPrefs; /** * @var int */ private $userId; /** * Constructor * * @param $template \SP\Core\Template con instancia de plantilla */ public function __construct(\SP\Core\Template $template = null) { parent::__construct($template); $this->view->assign('tabs', array()); $this->view->assign('sk', SessionUtil::getSessionKey(true)); $this->userId = Session::getUserId(); $this->userPrefs = UserPreferences::getPreferences($this->userId); } /** * Obtener la pestaña de seguridad */ public function getSecurityTab() { $this->setAction(self::ACTION_USR_PREFERENCES_SECURITY); $this->view->addTemplate('preferences-security'); $twoFa = new Auth2FA($this->userId, Session::getUserLogin()); if (!$this->userPrefs->isUse2Fa()) { $this->view->assign('qrCode', $twoFa->getUserQRCode()); } $this->view->assign('userId', $this->userId); $this->view->assign('chk2FAEnabled', $this->userPrefs->isUse2Fa()); $this->view->append('tabs', array('title' => _('Seguridad'))); $this->view->assign('tabIndex', $this->getTabIndex(), 'security'); $this->view->assign('actionId', $this->getAction(), 'security'); } /** * Obtener el índice actual de las pestañas * * @return int */ private function getTabIndex() { $index = $this->tabIndex; $this->tabIndex++; return $index; } /** * Obtener la pestaña de preferencias */ public function getPreferencesTab() { $this->setAction(self::ACTION_USR_PREFERENCES_GENERAL); $this->view->addTemplate('preferences-site'); $this->view->assign('userId', $this->userId); $this->view->assign('langsAvailable', Language::getAvailableLanguages()); $this->view->assign('currentLang', $this->userPrefs->getLang()); $this->view->assign('themesAvailable', Themes::getThemesAvailable()); $this->view->assign('currentTheme', ($this->userPrefs->getTheme()) ? $this->userPrefs->getTheme() : Config::getConfig()->getSiteTheme()); $this->view->assign('chkAccountLink', ($this->userPrefs->isAccountLink()) ? 'checked="checked"' : ''); $this->view->assign('resultsPerPage', ($this->userPrefs->getResultsPerPage()) ? $this->userPrefs->getResultsPerPage() : Config::getConfig()->getAccountCount()); $this->view->assign('chkSortViews', ($this->userPrefs->isSortViews()) ? 'checked="checked"' : ''); $this->view->assign('chkTopNavbar', ($this->userPrefs->isTopNavbar()) ? 'checked="checked"' : ''); $this->view->assign('chkOptionalActions', ($this->userPrefs->isOptionalActions()) ? 'checked="checked"' : ''); $this->view->append('tabs', array('title' => _('Preferencias'))); $this->view->assign('tabIndex', $this->getTabIndex(), 'preferences'); $this->view->assign('actionId', $this->getAction(), 'preferences'); } }