Для модулей, входящих в поставку UMI.CMS точки вызова событий уже определены. Если Вы хотите просто назначить обработчик события в каком-либо модуле, пропустите данный раздел и переходите к следующему.
Рассмотрим создание точки вызова события на примере добавления нового комментария (модуль comments). Для добавления нового комментария в этом модуле, служит метод post.
Добавим в начало и конец этого метода точки вызова события comments_message_post_do:
<?php
class CommentsMacros {
...
public function post($parent_element_id = false) {
// создаем event point c идентификатором comments_message_post_do
$oEventPoint = new umiEventPoint("comments_message_post_do");
// устанавливаем режим работы точки вызова
$oEventPoint->setMode("before");
// передаем в него необходимые параметры, которые могут понадобиться в обработчике
$oEventPoint->setParam("topic_id", $parent_element_id);
// устанавливаем event point. В этом месте будет вызван обработчик события, если он назначен.
$this->setEventPoint($oEventPoint);
...
$element->commit();
$parentElement->commit();
// создаем event point c идентификатором comments_message_post_do
$oEventPoint = new umiEventPoint("comments_message_post_do");
// устанавливаем режим работы точки вызова
$oEventPoint->setMode("after");
// передаем в него необходимые параметры, которые могут понадобиться в обработчике
$oEventPoint->setParam("topic_id", $parent_element_id);
$oEventPoint->setParam("message_id", $element_id);
// устанавливаем event point. В этом месте будет вызван обработчик события, если он назначен.
$this->setEventPoint($oEventPoint);
$this->module->redirect($referer_url);
}
...
}
?>
Для определения события с одним идентификатором можно использовать несколько режимов event point:
-
before - событие возникает перед действием
-
after - событие возникает после действия
-
process - режим работы "по умолчанию"
Обработчик события должен сам следить за режимами работы и выполнять различные действия в том или ином случае.