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