Отправка сообщения-уведомления при добавлении комментария на сайте
Материал из Umicms
Задача: При добавлении комментария на сайте пользователями, отправлять сообщение-уведомление администратору с информацией об авторе комментария и его текстом.
Реализация:
В файл classes\modules\comments\__custom.php необходимо добавить код метода commentMail:
public function commentMail(iUmiEventPoint $event){
if ($event->getMode()=='after'){
$topic_id = $event->getParam('topic_id');
$comment_id = $event->getParam('message_id');
$message = array();
$hcoll = umiHierarchy::getInstance();
$objcoll = umiObjectsCollection::getInstance();
$topic = $hcoll->getElement($topic_id);
$comment = $hcoll->getElement($comment_id);
if (($topic instanceof umiHierarchyElement) && ($comment instanceof umiHierarchyElement)){
//Получаем данные автора комментария и текст комментария
$pageName = $topic->getName();
$message['mess'] = $comment->getValue('message');
$message['author_id'] = $comment->getValue('author_id');
$author = $objcoll->getObject($message['author_id']);
if (!permissionsCollection::getInstance()->isAuth()){
$message['author_nick'] = $author->getValue('nickname');
$message['author_email'] = $author->getValue('email');
$message['author_ip'] = $author->getValue('ip');
}
else{
$author = $objcoll->getObject(permissionsCollection::getInstance()->getUserId());
$message['author_nick'] = $author->getValue('fname');
$message['author_email'] = $author->getValue('e-mail');
$message['author_ip'] = '127.0.0.1';
}
$message['name'] = $comment->getName();
$recipient = regedit::getInstance()->getVal('//settings/admin_email');
$subject = 'Новый комментарий';
$from = 'UMI.CMS';
$from_mail = regedit::getInstance()->getVal('//settings/email_from');
//Формируем сообщение
$content = "
<html>
<body>
<div>
<p> На сайте был добавлен новый комментарий к странице с названием '{$pageName}'
<p> <b>Заголовок комментария:</b> {$message['name']}
<div>
<p> <b>Данные автора комментария:</b>
<p> <b>Прозвище:</b> {$message['author_nick']}
<p> <b>E-mail адрес:</b> {$message['author_email']}
<p> <b>IP-адрес:</b> {$message['author_ip']}
</div>
<p> <b>Текст комментария:</b>
<p> {$message['mess']}
</div>
</body>
</html>
";
//Формируем письмо
$mail = new umiMail();
$mail->addRecipient($recipient);
$mail->setFrom($from_mail,$from);
$mail->setSubject($subject);
$mail->setContent($content);
$mail->commit();
$mail->send();
}
}
}
В директорию classes\modules\comments необходимо добавить файл permissions.custom.php со следующим содержанием:
<?php
$permissions = Array(
'insert' => Array('commentMail'));
?>
Также в директорию classes\modules\comments необходимо добавить файл custom_events.php со следующим содержанием:
<?php
new umiEventListener('comments_message_post_do', 'comments', 'commentMail');
?>