События - подписка на рассылки при регистрации пользователя
Задача
В форме регистрации пользователя добавить версткой поле типа чек-бокс, при установке которого будет происходить подписка на рассылки, для только что зарегистрировавшегося пользователя.
Решение
В форму регистрации добавим поле:
Подписаться на рассылки: <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.
Когда пользователь регистрируется, он сможет поставить галку для поля "Подписаться на рассылки", тогда после регистрации он автоматически подпишется на рассылки.