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