Уведомление модератора о новом сообщении на форуме — различия между версиями
Материал из Umicms
Velross (обсуждение | вклад) |
Velross (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
+ | Актуально для версии 2.9.6 | ||
+ | |||
+ | ---- | ||
+ | '''Задача:''' уведомлять модератора о новом сообщении в форуме. | ||
+ | |||
+ | '''Решение:''' | ||
В настройках модуля Форум существует настройка, позволяющая запретить публикацию сообщений модерации модератором. Однако, в стандартном функционале системы не предусмотрена возможность автоматического уведомления модератора о новом сообщении. | В настройках модуля Форум существует настройка, позволяющая запретить публикацию сообщений модерации модератором. Однако, в стандартном функционале системы не предусмотрена возможность автоматического уведомления модератора о новом сообщении. | ||
Строка 7: | Строка 13: | ||
<source lang="php"> | <source lang="php"> | ||
− | public function | + | public function onAddCommentForum(iUmiEventPoint $oEventPoint) { |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | // берем необходимые параметры | |
− | + | $iCommentId = $oEventPoint->getParam("message_id"); | |
− | + | ||
− | + | $recipient = regedit::getInstance()->getVal('//settings/admin_email'); | |
− | + | $subject = 'Добавлено новое сообщение в форум'; | |
+ | $from = 'UMI.CMS'; | ||
+ | $from_mail = "no_replay@example.com"; | ||
+ | //Формируем сообщение | ||
+ | $content = " | ||
+ | <html> | ||
+ | <body> | ||
+ | <div> | ||
+ | <p> В форуме появилось новое сообщение. </p> | ||
+ | <div> | ||
+ | <p> <b>Для редактирования сообщения, перейдите по ссылке:</b> </p> | ||
+ | http://ВАШ_ДОМЕН.ru/admin/forum/edit/$iCommentId" | ||
+ | </div> | ||
+ | </div> | ||
+ | </body> | ||
+ | </html> | ||
+ | "; | ||
+ | //Формируем письмо | ||
+ | $mail = new umiMail(); | ||
+ | $mail->addRecipient($email); | ||
+ | $mail->setFrom($from_mail,$from); | ||
+ | $mail->setSubject($subject); | ||
+ | $mail->setContent($content); | ||
+ | $mail->commit(); | ||
+ | $mail->send(); | ||
} | } | ||
</source> | </source> | ||
Строка 30: | Строка 51: | ||
<source lang="php"> | <source lang="php"> | ||
− | $oAddCommentListener = new umiEventListener("forum_message_post_do", "forum", " | + | $oAddCommentListener = new umiEventListener("forum_message_post_do", "forum", "onAddCommentForum"); |
</source> | </source> | ||
[[Категория:Модуль Форум]][[Категория:Написание кастомных макросов]] | [[Категория:Модуль Форум]][[Категория:Написание кастомных макросов]] |
Версия 13:02, 30 апреля 2014
Актуально для версии 2.9.6
Задача: уведомлять модератора о новом сообщении в форуме.
Решение: В настройках модуля Форум существует настройка, позволяющая запретить публикацию сообщений модерации модератором. Однако, в стандартном функционале системы не предусмотрена возможность автоматического уведомления модератора о новом сообщении.
Для реализации данной задачи потребуется написать несложный кастомный макрос.
В файл ~classes/modules/forum/__custom.php необходимо добавить следующий код:
public function onAddCommentForum(iUmiEventPoint $oEventPoint) {
// берем необходимые параметры
$iCommentId = $oEventPoint->getParam("message_id");
$recipient = regedit::getInstance()->getVal('//settings/admin_email');
$subject = 'Добавлено новое сообщение в форум';
$from = 'UMI.CMS';
$from_mail = "no_replay@example.com";
//Формируем сообщение
$content = "
<html>
<body>
<div>
<p> В форуме появилось новое сообщение. </p>
<div>
<p> <b>Для редактирования сообщения, перейдите по ссылке:</b> </p>
http://ВАШ_ДОМЕН.ru/admin/forum/edit/$iCommentId"
</div>
</div>
</body>
</html>
";
//Формируем письмо
$mail = new umiMail();
$mail->addRecipient($email);
$mail->setFrom($from_mail,$from);
$mail->setSubject($subject);
$mail->setContent($content);
$mail->commit();
$mail->send();
}
А также в файл ~classes\modules\forum\custom_events.php добавить:
$oAddCommentListener = new umiEventListener("forum_message_post_do", "forum", "onAddCommentForum");