protected function loadExport() { $this->export = $this->loader->getRespondentExport(); if ($this->token instanceof \Gems_Tracker_Token) { $this->addRespondent($this->token->getPatientNumber(), $this->token->getOrganizationId()); $this->export->addRespondentTrackFilter($this->token->getRespondentTrackId()); $this->export->addTokenFilter($this->token->getTokenId()); } elseif ($this->respondentTrack instanceof \Gems_Tracker_RespondentTrack) { $this->addRespondent($this->respondentTrack->getPatientNumber(), $this->respondentTrack->getOrganizationId()); $this->export->addRespondentTrackFilter($this->respondentTrack->getRespondentTrackId()); } elseif ($this->respondent instanceof \Gems_Tracker_Respondent) { $this->addRespondent($this->respondent->getPatientNumber(), $this->respondent->getOrganizationId()); } }
/** * 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; }