События - подписка на рассылки при регистрации пользователя — различия между версиями
VITL' (обсуждение | вклад) (Новая страница: «'''Задача:''' В форме регистрации пользователя добавить версткой поле типа чек-бокс, при уст…») |
VITL' (обсуждение | вклад) |
||
Строка 15: | Строка 15: | ||
<?php | <?php | ||
$permissions = Array('subscribe' => Array('autoSubscribe')); | $permissions = Array('subscribe' => Array('autoSubscribe')); | ||
+ | ?> | ||
+ | </source> | ||
+ | |||
+ | Потом, в эту же папку добавим файл '''custom_events.php''' следующего содержания: | ||
+ | <source lang="php"> | ||
+ | <?php | ||
+ | new umiEventListener('users_registrate', 'dispatches', 'autoSubscribe'); | ||
?> | ?> | ||
</source> | </source> |
Версия 09:38, 5 мая 2011
Задача:
В форме регистрации пользователя добавить версткой поле типа чек-бокс, при установке которого будет происходить подписка на рассылки, для только что зарегистрировавшегося пользователя.
Решение:
В форму регистрации добавим поле:
Подписаться на рассылки: <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.
Когда пользователь регистрируется, он сможет поставить галку для поля "Подписаться на рассылки", тогда после регистрации он автоматически подпишется на рассылки.