/** * Internal function to return an email template object from a row. * @param $row array * @return LocaleEmailTemplate */ function &_returnLocaleEmailTemplateFromRow(&$row) { $emailTemplate = new LocaleEmailTemplate(); $emailTemplate->setEmailId($row['email_id']); $emailTemplate->setAssocType($row['assoc_type']); $emailTemplate->setAssocId($row['assoc_id']); $emailTemplate->setEmailKey($row['email_key']); $emailTemplate->setEnabled($row['enabled'] == null ? 1 : $row['enabled']); $emailTemplate->setCanDisable($row['can_disable']); $emailTemplate->setFromRoleId($row['from_role_id']); $emailTemplate->setToRoleId($row['to_role_id']); $emailTemplate->setCustomTemplate(false); if (!HookRegistry::call('EmailTemplateDAO::_returnLocaleEmailTemplateFromRow', array(&$emailTemplate, &$row))) { $result =& $this->retrieve('SELECT dd.locale, dd.description, COALESCE(ed.subject, dd.subject) AS subject, COALESCE(ed.body, dd.body) AS body FROM email_templates_default_data dd LEFT JOIN email_templates_data ed ON (dd.email_key = ed.email_key AND dd.locale = ed.locale AND ed.assoc_type = ? AND ed.assoc_id = ?) WHERE dd.email_key = ?', array($row['assoc_type'], $row['assoc_id'], $row['email_key'])); while (!$result->EOF) { $dataRow =& $result->GetRowAssoc(false); $emailTemplate->addLocale($dataRow['locale']); $emailTemplate->setSubject($dataRow['locale'], $dataRow['subject']); $emailTemplate->setBody($dataRow['locale'], $dataRow['body']); $emailTemplate->setDescription($dataRow['locale'], $dataRow['description']); $result->MoveNext(); } $result->Close(); unset($result); // Retrieve custom email contents as well; this is done in PHP to avoid // using a SQL outer join or union. $result =& $this->retrieve('SELECT ed.locale, ed.subject, ed.body FROM email_templates_data ed LEFT JOIN email_templates_default_data dd ON (ed.email_key = dd.email_key AND dd.locale = ed.locale) WHERE ed.assoc_type = ? AND ed.assoc_id = ? AND ed.email_key = ? AND dd.email_key IS NULL', array($row['assoc_type'], $row['assoc_id'], $row['email_key'])); while (!$result->EOF) { $dataRow =& $result->GetRowAssoc(false); $emailTemplate->addLocale($dataRow['locale']); $emailTemplate->setSubject($dataRow['locale'], $dataRow['subject']); $emailTemplate->setBody($dataRow['locale'], $dataRow['body']); $result->MoveNext(); $emailTemplate->setCustomTemplate(true); } $result->Close(); unset($result); } return $emailTemplate; }