События - подписка на рассылки при регистрации пользователя
Задача
В форме регистрации пользователя добавить версткой поле типа чек-бокс, при установке которого будет происходить подписка на рассылки, для только что зарегистрировавшегося пользователя.
Решение
В форму регистрации добавим поле:
Подписаться на рассылки: <input type="checkbox" name="autoSubscribe" />
В папку classes/modules/dispatches/ добавим файл permissions.custom.php:
<?php
  $permissions = Array('subscribe' => Array('autoSubscribe'));
?>
Потом, в эту же папку добавим файл custom_events.php следующего содержания:
<?php
new umiEventListener('users_registrate', 'dispatches', 'autoSubscribe'); 
?>
А в файл classes/modules/dispatches/__custom.php, после слов "//TODO: Write here your own macroses" метод autoSubscribe:
  public function autoSubscribe(umiEventPoint $event) {
    if ($event->getMode() == "after") {      
       $user_id  = $event->getParam('user_id');
       $objects = umiObjectsCollection::getInstance();
       $user = $objects->getObject($user_id);
       $email = $user->getValue('e-mail');
       $fname = $user->fname;
       $lname = $user->lname;
       if(getRequest("autoSubscribe")) {
	   return $subscriber_id = $this->import_subscriber($email, $fname, $lname);
	} else {
	   return false;
       }
    }
  }
этот метод использует событие users_registrate:
$oEventPoint = new umiEventPoint("users_registrate");
$oEventPoint->setMode("after");
$oEventPoint->setParam("user_id", $object_id);
$this->setEventPoint($oEventPoint);
которое находится в методе registrate_do(), файл classes/modules/users/__register.php.
Когда пользователь регистрируется, он сможет поставить галку для поля "Подписаться на рассылки", тогда после регистрации он автоматически подпишется на рассылки.