Уведомление модератора о новом сообщении на форуме — различия между версиями
Материал из 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");