/**
  * The action where survey sources should return to after survey completion
  */
 public function returnAction()
 {
     if (!$this->_initToken()) {
         // In all other cases: the action that generates meaningfull warnings and is reachable for everyone
         $this->_forward('forward');
         return;
     }
     if ($url = $this->token->getReturnUrl()) {
         // Check for completed tokens
         $this->tracker->processCompletedTokens($this->token->getRespondentId(), $this->token->getChangedBy(), $this->token->getOrganizationId());
         // Redirect at once, might be another site url
         header('Location: ' . $url);
         exit;
     }
     // No return? Check for old style user based return
     if (!$this->currentUser->isActive()) {
         $this->_forward('forward');
         return;
     }
     // Check for completed tokens
     $this->tracker->processCompletedTokens($this->token->getRespondentId(), $this->currentUser->getUserId());
     // Get return route parameters
     $parameters = $this->currentUser->getSurveyReturn();
     if (!$parameters) {
         // Default fallback for the fallback
         $request = $this->getRequest();
         $parameters[$request->getControllerKey()] = 'respondent';
         $parameters[$request->getActionKey()] = 'show';
         $parameters[\MUtil_Model::REQUEST_ID] = $this->token->getPatientNumber();
     }
     $this->_reroute($parameters, true);
 }