События - подписка на рассылки при регистрации пользователя — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
 
(не показаны 2 промежуточные версии 2 участников)
Строка 1: Строка 1:
'''Задача:'''
+
== Задача ==
  
 
В форме регистрации пользователя добавить версткой поле типа чек-бокс, при установке которого будет происходить
 
В форме регистрации пользователя добавить версткой поле типа чек-бокс, при установке которого будет происходить
 
подписка на рассылки, для только что зарегистрировавшегося пользователя.
 
подписка на рассылки, для только что зарегистрировавшегося пользователя.
  
'''Решение:'''
+
== Решение ==
  
 
В форму регистрации добавим поле:
 
В форму регистрации добавим поле:
Строка 57: Строка 57:
 
Когда пользователь регистрируется, он сможет поставить галку для поля "Подписаться на рассылки", тогда
 
Когда пользователь регистрируется, он сможет поставить галку для поля "Подписаться на рассылки", тогда
 
после регистрации он автоматически подпишется на рассылки.
 
после регистрации он автоматически подпишется на рассылки.
 +
[[Категория:API]]

Текущая версия на 09:24, 17 мая 2019

Задача

В форме регистрации пользователя добавить версткой поле типа чек-бокс, при установке которого будет происходить подписка на рассылки, для только что зарегистрировавшегося пользователя.

Решение

В форму регистрации добавим поле:

Подписаться на рассылки: <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.

Когда пользователь регистрируется, он сможет поставить галку для поля "Подписаться на рассылки", тогда после регистрации он автоматически подпишется на рассылки.