Уведомление модератора о новом сообщении на форуме — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
Строка 1: Строка 1:
 +
Актуально для версии 2.9.6
 +
 +
----
 +
'''Задача:''' уведомлять модератора о новом сообщении в форуме.
 +
 +
'''Решение:'''
 
В настройках модуля Форум существует настройка, позволяющая запретить публикацию сообщений модерации модератором. Однако, в стандартном функционале системы не предусмотрена возможность автоматического уведомления модератора о новом сообщении.
 
В настройках модуля Форум существует настройка, позволяющая запретить публикацию сообщений модерации модератором. Однако, в стандартном функционале системы не предусмотрена возможность автоматического уведомления модератора о новом сообщении.
  
Строка 7: Строка 13:
  
 
<source lang="php">
 
<source lang="php">
public function newPostMail(umiEventPoint $event) {
+
public function onAddCommentForum(iUmiEventPoint $oEventPoint) {
 
$message_id  = $event->getParam('message_id');
 
 
$Name = "Admin ИМЯ_ДОМЕНА.ru"; //senders name
 
$email = "no-replay@pИМЯ_ДОМЕНА.ru"; //senders e-mail adress
 
$recipient = "addres@gmail.com"; //recipient
 
$mail_body = "В форум было добавлено новое сообщение. Ссылка на редактирование http://ВАШ_ДОМЕН.ru/admin/forum/edit/$message_id"; //mail body
 
$subject = "Новое сообщение в форуме"; //subject
 
$header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields
 
  
if(mail($recipient, $subject, $mail_body, $header)){
+
// берем необходимые параметры
return true;
+
$iCommentId = $oEventPoint->getParam("message_id");
} else {
+
 
return false;
+
  $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", "newPostMail");
+
$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");