Создание точки вызова

Для модулей, входящих в поставку UMI.CMS точки вызова событий уже определены. Если Вы хотите просто назначить обработчик события в каком-либо модуле, пропустите данный раздел и переходите к следующему.

Рассмотрим создание точки вызова события на примере добавления нового комментария (модуль comments). Для добавления нового комментария в этом модуле, служит метод post.

Добавим в начало и конец этого метода точки вызова события comments_message_post_do:

<?php

class comments extends def_module {
 ...

 public function post() {
  // создаем 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);

  ....

  $parent_element_id = (int) $_REQUEST['param0'];

  ...

  $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->redirect($referer_url);
 }

 ...
}
?>

Для определения события с одним идентификатором можно использовать несколько режимов event point:

  • before - событие возникает перед действием

  • after - событие возникает после действия

  • process - режим работы "по умолчанию"

Обработчик события должен сам следить за режимами работы и выполнять различные действия в том или ином случае.