Отправка сообщения-уведомления при добавлении комментария на сайте

Материал из 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');
?>