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