/** * Get information on the field translations * * @return array of fields sourceName => targetName * @throws \MUtil_Model_ModelException */ public function getFieldsTranslations() { if (!$this->_targetModel instanceof \MUtil_Model_ModelAbstract) { throw new \MUtil_Model_ModelTranslateException(sprintf('Called %s without a set target model.', __FUNCTION__)); } $this->_targetModel->set('gto_id_token', 'label', $this->_('Token'), 'import_descr', $this->loader->getTracker()->getTokenLibrary()->getFormat(), 'required', true, 'order', 2); return array('token' => 'gto_id_token') + parent::getFieldsTranslations(); }
/** * Get the error message for when no token exists * * @return string */ public function getNoTokenError(array $row, $key) { $messages = array(); if (!(isset($row[$this->patientNrField]) && $row[$this->patientNrField])) { $messages[] = sprintf($this->_('Missing respondent number in %s field.'), $this->patientNrField); } if (!(isset($row[$this->orgIdField]) && $row[$this->orgIdField])) { $messages[] = sprintf($this->_('Missing organization number in %s field.'), $this->orgIdField); } if (!$this->getSurveyId()) { $messages[] = $this->_('Missing survey definition.'); } if ($messages) { return implode(' ', $messages); } if (!$this->_skipUnknownPatients) { $respondent = $this->loader->getRespondent($row[$this->patientNrField], $row[$this->orgIdField]); $organization = $respondent->getOrganization(); if (!$organization->exists()) { return sprintf($this->_('Organization %s (specified for respondent %s) does not exist.'), $respondent->getOrganizationId(), $respondent->getPatientNumber()); } if (!$respondent->exists) { return sprintf($this->_('Respondent %s does not exist in organization %s.'), $respondent->getPatientNumber(), $organization->getName()); } $tracker = $this->loader->getTracker(); $trackId = $this->getTrackId(); if ($trackId) { $trackEngine = $tracker->getTrackEngine($trackId); if (!$trackEngine->getTrackName()) { return sprintf($this->_('Track id %d does not exist'), $trackId); } $select = $this->db->select(); $select->from('gems__respondent2track')->joinInner('gems__reception_codes', 'gr2t_reception_code = grc_id_reception_code', array())->where('gr2t_id_user = ?', $respondent->getId())->where('gr2t_id_organization = ?', $respondent->getOrganizationId())->where('grc_success = 1'); if (!$this->db->fetchOne($select)) { return sprintf($this->_('Respondent %s does not have a valid %s track.'), $respondent->getPatientNumber(), $trackEngine->getTrackName()); } } $survey = $tracker->getSurvey($this->getSurveyId()); $tokenSelect = $tracker->getTokenSelect(); $tokenSelect->andReceptionCodes()->forRespondent($respondent->getId(), $respondent->getOrganizationId())->forSurveyId($this->getSurveyId()); if ($tokenSelect->fetchOne()) { $tokenSelect->onlySucces(); if (!$tokenSelect->fetchOne()) { return sprintf($this->_('Respondent %s has only deleted %s surveys.'), $respondent->getPatientNumber(), $survey->getName()); } } else { return sprintf($this->_('Respondent %s has no %s surveys.'), $respondent->getPatientNumber(), $survey->getName()); } } return parent::getNoTokenError($row, $key); }