/**
  * 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.'));
 }