/**
  * Create the snippets content
  *
  * This is a stub function either override getHtmlOutput() or override render()
  *
  * @param \Zend_View_Abstract $view Just in case it is needed here
  * @return \MUtil_Html_HtmlInterface Something that can be rendered
  */
 public function getHtmlOutput(\Zend_View_Abstract $view)
 {
     $delay = $this->project->getAskDelay($this->request, $this->wasAnswered);
     $href = $this->getTokenHref($this->showToken);
     $html = $this->getHtmlSequence();
     $org = $this->showToken->getOrganization();
     $url = $href->render($this->view);
     switch ($delay) {
         case 0:
             // Redirect at once
             header('Location: ' . $url);
             exit;
         case -1:
             break;
         default:
             // Let the page load after stated interval
             $this->view->headMeta()->appendHttpEquiv('Refresh', $delay . '; url=' . $url);
     }
     $html->h3($this->_('Token'));
     if ($this->token->hasRelation()) {
         $p = $html->pInfo(sprintf($this->_('Welcome %s,'), $this->showToken->getRelation()->getName()));
         $html->pInfo(sprintf($this->_('We kindly ask you to answer a survey about %s.'), $this->showToken->getRespondent()->getName()));
     } else {
         $p = $html->pInfo(sprintf($this->_('Welcome %s,'), $this->showToken->getRespondentName()));
     }
     if ($this->wasAnswered) {
         $html->pInfo(sprintf($this->_('Thank you for answering the "%s" survey.'), $this->token->getSurveyName()));
         $html->pInfo($this->_('Please click the button below to answer the next survey.'));
     } else {
         if ($welcome = $org->getWelcome()) {
             $html->pInfo()->raw(\MUtil_Markup::render($this->_($welcome), 'Bbcode', 'Html'));
         }
         $html->pInfo(sprintf($this->_('Please click the button below to answer the survey for token %s.'), strtoupper($this->showToken->getTokenId())));
     }
     if ($delay > 0) {
         $html->pInfo(sprintf($this->plural('Wait one second to open the survey automatically or click on Cancel to stop.', 'Wait %d seconds to open the survey automatically or click on Cancel to stop.', $delay), $delay));
     }
     $buttonDiv = $html->buttonDiv(array('class' => 'centerAlign'));
     $buttonDiv->actionLink($href, $this->showToken->getSurveyName());
     if ($delay > 0) {
         $buttonDiv->actionLink(array('delay_cancelled' => 1), $this->_('Cancel'));
     }
     if ($next = $this->showToken->getTokenCountUnanswered()) {
         $html->pInfo(sprintf($this->plural('After this survey there is one other survey we would like you to answer.', 'After this survey there are another %d surveys we would like you to answer.', $next), $next));
     }
     if ($sig = $org->getSignature()) {
         $html->pInfo()->raw(\MUtil_Markup::render($this->_($sig), 'Bbcode', 'Html'));
     }
     return $html;
 }
 /**
  * Returns an array of {field_names} => values for this token for
  * use in an e-mail tamplate.
  *
  * @param array $tokenData
  * @return array
  */
 public function tokenMailFields()
 {
     if ($this->token) {
         $locale = $this->respondent->getLanguage();
         $survey = $this->token->getSurvey();
         // Count todo
         $tSelect = $this->loader->getTracker()->getTokenSelect(array('all' => 'COUNT(*)', 'track' => $this->db->quoteInto('SUM(CASE WHEN gto_id_respondent_track = ? THEN 1 ELSE 0 END)', $this->token->getRespondentTrackId())));
         $tSelect->andSurveys(array())->forRespondent($this->token->getRespondentId(), $this->organizationId)->forGroupId($survey->getGroupId())->onlyValid();
         $todo = $tSelect->fetchRow();
         // Set the basic fields
         $result['round'] = $this->token->getRoundDescription();
         $organizationLoginUrl = $this->organization->getLoginUrl();
         $result['site_ask_url'] = $organizationLoginUrl . '/ask/';
         // Url's
         $url = $organizationLoginUrl . '/ask/forward/' . \MUtil_Model::REQUEST_ID . '/';
         $url .= $this->token->getTokenId();
         $urlInput = $result['site_ask_url'] . 'index/' . \MUtil_Model::REQUEST_ID . '/' . $this->token->getTokenId();
         $result['survey'] = $survey->getName();
         $result['todo_all'] = sprintf($this->translate->plural('%d survey', '%d surveys', $todo['all'], $locale), $todo['all']);
         $result['todo_all_count'] = $todo['all'];
         $result['todo_track'] = sprintf($this->translate->plural('%d survey', '%d surveys', $todo['track'], $locale), $todo['track']);
         $result['todo_track_count'] = $todo['track'];
         $result['token'] = strtoupper($this->token->getTokenId());
         $result['token_from'] = \MUtil_Date::format($this->token->getValidFrom(), \Zend_Date::DATE_LONG, 'yyyy-MM-dd', $locale);
         $result['token_link'] = '[url=' . $url . ']' . $survey->getName() . '[/url]';
         $result['token_until'] = \MUtil_Date::format($this->token->getValidUntil(), \Zend_Date::DATE_LONG, 'yyyy-MM-dd', $locale);
         $result['token_url'] = $url;
         $result['token_url_input'] = $urlInput;
         $result['track'] = $this->token->getTrackName();
         // Add the code fields
         $codes = $this->token->getRespondentTrack()->getCodeFields();
         foreach ($codes as $code => $data) {
             $key = 'track.' . $code;
             if (is_array($data)) {
                 $data = implode(' ', $data);
             }
             $result[$key] = $data;
         }
         if ($this->token->hasRelation()) {
             $allFields = $this->getMailFields(false);
             // Set about to patient name
             $results['relation_about'] = $allFields['name'];
             $results['relation_about_first_name'] = $allFields['first_name'];
             $results['relation_about_full_name'] = $allFields['full_name'];
             $results['relation_about_greeting'] = $allFields['greeting'];
             $results['relation_about_last_name'] = $allFields['last_name'];
             $results['relation_field_name'] = $this->token->getRelationFieldName();
             if ($relation = $this->token->getRelation()) {
                 // Now update all respondent fields to be of the relation
                 $results['name'] = $relation->getName();
                 $results['first_name'] = $relation->getFirstName();
                 $results['last_name'] = $relation->getLastName();
                 $results['full_name'] = $relation->getHello($locale);
                 $results['greeting'] = $relation->getGreeting($locale);
                 $results['to'] = $relation->getEmail();
                 $this->addTo($results['to'], $results['name']);
             } else {
                 $results['name'] = $this->translate->getAdapter()->_('Undefined relation');
                 $results['first_name'] = '';
                 $results['last_name'] = '';
                 $results['full_name'] = '';
                 $results['greeting'] = '';
                 $results['to'] = '';
             }
         } else {
             $results['relation_about'] = $this->translate->getAdapter()->_('yourself', $this->token->getRespondentLanguage());
             $results['relation_about_first_name'] = '';
             $results['relation_about_full_name'] = '';
             $results['relation_about_greeting'] = '';
             $results['relation_about_last_name'] = '';
             $results['relation_field_name'] = '';
         }
     } else {
         $result['round'] = '';
         $result['site_ask_url'] = '';
         $result['survey'] = '';
         $result['todo_all'] = '';
         $result['todo_all_count'] = '';
         $result['todo_track'] = '';
         $result['todo_track_count'] = '';
         $result['token'] = '';
         $result['token_from'] = '';
         $result['token_link'] = '';
         $result['token_until'] = '';
         $result['token_url'] = '';
         $result['token_url_input'] = '';
         $result['track'] = '';
         $result['relation_about'] = $this->translate->getAdapter()->_('yourself');
         $result['relation_about_first_name'] = '';
         $result['relation_about_full_name'] = '';
         $result['relation_about_greeting'] = '';
         $result['relation_about_last_name'] = '';
         $result['relation_field_name'] = '';
     }
     return $result;
 }