/** * Common handler utility to initialize tokens from parameters * * @return boolean True if there is a real token specified in the request */ protected function _initToken() { if ($this->tracker) { return $this->token && $this->token->exists; } $this->tracker = $this->loader->getTracker(); $this->tokenId = $this->tracker->filterToken($this->_getParam(\MUtil_Model::REQUEST_ID)); if (!$this->tokenId) { return false; } $this->token = $this->tracker->getToken($this->tokenId); if (!$this->token->exists) { return false; } if (!($this->currentUser->isActive() || $this->token->getSurvey()->isTakenByStaff())) { $tokenLang = strtolower($this->token->getRespondentLanguage()); // \MUtil_Echo::track($tokenLang, $this->locale->getLanguage()); if ($tokenLang != $this->locale->getLanguage()) { $this->locale->setLocale($tokenLang); $this->translateAdapter->setLocale($this->locale); $this->currentUser->setLocale($tokenLang); \Gems_Cookies::setLocale($tokenLang, $this->basepath->getBasePath()); } $currentOrg = $this->loader->getOrganization(); $tokenOrgId = $this->token->getOrganizationId(); if ($tokenOrgId != $currentOrg->getId()) { $this->loader->getOrganization($tokenOrgId)->setAsCurrentOrganization(); } } return true; }
public function changeUiAction() { $request = $this->getRequest(); $lang = strtolower($request->getParam('language')); $url = base64_decode($request->getParam('current_uri')); if (!$url || '/' !== $url[0]) { throw new \Exception($this->_('Illegal language redirect url.')); } if (in_array($lang, $this->view->project->locales)) { $this->currentUser->setLocale($lang); if (\Gems_Cookies::setLocale($lang, $this->basepath->getBasePath())) { if ($url) { $this->getResponse()->setRedirect($url); } else { $this->currentUser->gotoStartPage($this->menu, $this->getRequest()); } return; } throw new \Exception($this->_('Cookies must be enabled for setting the language.')); } throw new \Exception($this->_('Invalid language setting.')); }