Делаю плагин, в котором пользователям, выбранным по значению добавленного поля, отсылается сообщение — всё примерно как с отправкой сообщений подписчикам блога, но шаблон сообщения пришлось изменить. Для этого сделал модуль, наследующий Notify, и добавил свою функцию по образцу SendTopicNewToSubscribeBlog:
public function SendNewMatch(ModuleUser_EntityUser $oUserTo, ModuleTopic_EntityTopic $oTopic, ModuleBlog_EntityBlog $oBlog, ModuleUser_EntityUser $oUserTopic) {
/**
* Передаём в шаблон переменные
*/
$this->oViewerLocal->Assign('oUserTo',$oUserTo);
$this->oViewerLocal->Assign('oTopic',$oTopic);
$this->oViewerLocal->Assign('oBlog',$oBlog);
$this->oViewerLocal->Assign('oUserTopic',$oUserTopic);
/**
* Формируем шаблон
*/
//ошибка
$sBody=$this->oViewerLocal->Fetch(Plugin::GetTemplatePath(__CLASS__).'notify.new_match.tpl');
/**
* Если в конфигураторе указан отложенный метод отправки,
* то добавляем задание в массив. В противном случае,
* сразу отсылаем на email
*/
if(Config::Get('module.notify.delayed')) {
$oNotifyTask=Engine::GetEntity(
'Notify_Task',
array(
'user_mail' => $oUserTo->getMail(),
'user_login' => $oUserTo->getLogin(),
'notify_text' => $sBody,
'notify_subject' => $this->Lang_Get('notify_subject_new_match').' «'.htmlspecialchars($oBlog->getTitle()).'»',
'date_created' => date("Y-m-d H:i:s"),
'notify_task_status' => self::NOTIFY_TASK_STATUS_NULL,
)
);
if(Config::Get('module.notify.insert_single')) {
$this->aTask[] = $oNotifyTask;
} else {
$this->oMapper->AddTask($oNotifyTask);
}
} else {
/**
* Отправляем email
*/
$this->Mail_SetAdress($oUserTo->getMail(),$oUserTo->getLogin());
$this->Mail_SetSubject($this->Lang_Get('notify_subject_new_match').' «'.htmlspecialchars($oBlog->getTitle()).'»');
$this->Mail_SetBody($sBody);
$this->Mail_setHTML();
$this->Mail_Send();
}
}
Почему-то при заполнении тела письма шаблоном(oViewerLocal->Fetch) в браузер выводится этот шаблон и все дальнейшие шаги не выполняются. Если присвоить переменной $sBody простую текстовую строку, этого не происходит, но и письмо тоже не доставляется, но с этим уже позже разберусь