UMIhelp

Разработка дополнительного функционала => Custom макросы => Тема начата: AllaVK от 21 Октября 2011, 10:06:51

Название: Событие "Активация пользователя"
Отправлено: AllaVK от 21 Октября 2011, 10:06:51
Добрый день!
требуется, чтобы после активации нового пользователя модератором, пользователю приходило письмо об успешной активации.
Системой UMI предусмотрено событие systemSwitchElementActivity, в классах в модуле "Пользователи" я сделала кастомный обработчик этого события, но на активацию пользователя оно не срабатывает. Я предполагаю, что, наверное, здесь уместнее будет событие systemSwitchObjectActivity, но такого просто не существует.
Каким способом можно отследить активацию пользователя модератором?
Название: Re:Событие "Активация пользователя"
Отправлено: admin от 21 Октября 2011, 13:45:47
пользуйся событием "users_activate" у него есть в параметре id пользователя user_id ($oEventPoint->getParam('user_id'); )
Название: Re:Событие "Активация пользователя"
Отправлено: AllaVK от 21 Октября 2011, 14:36:46
пользуйся событием "users_activate" у него есть в параметре id пользователя user_id ($oEventPoint->getParam('user_id'); )

спасибо...
еще подскажи, пожалуйста, где я могу найти хоть какую-то документацию по этому событию?
ни на одном сайте я не нашла ни слова об этом событии... его написание именно такое?
Название: Re:Событие "Активация пользователя"
Отправлено: admin от 21 Октября 2011, 14:45:57
да, я смотрю по коду, файл /classes/modules/users/__register.php функция public function activate()
Название: Re:Событие "Активация пользователя"
Отправлено: AllaVK от 21 Октября 2011, 15:43:03
сделала так:

файл:   /classes/modules/users/custom_events.php:
 
<?php
new umiEventListener("users_activate", "users", "onActivateUser");
?>

Файл:  /classes/modules/users/__custom_adm.php:
 
<?php
abstract class __custom_adm_users {
                public function onActivateUser(iUmiEventPoint $event) {
if($event->getMode() == "after") {
//$user_id = $event->getParam('user_id');
$str = "event activate user \r \n";
file_put_contents(CURRENT_WORKING_DIR . '/statist.txt', $str, FILE_APPEND);
}
                }
      };
?>
т.е. по событию должен создаться в корне текстовый файл  в него записаться строка: event activate user

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

что я делаю не так?
Название: Re:Событие "Активация пользователя"
Отправлено: admin от 21 Октября 2011, 15:48:07
а почему макрос лежит в /classes/modules/users/__custom_adm.php это же публичное событие не в админке происходит, надо класть его в /classes/modules/users/__custom.php
Название: Re:Событие "Активация пользователя"
Отправлено: AllaVK от 21 Октября 2011, 15:57:32
перенесла макрос в /classes/modules/users/__custom.php  - не помогло (((( все равно не срабатывает ((((
Название: Re:Событие "Активация пользователя"
Отправлено: admin от 21 Октября 2011, 16:58:07
а у меня срабатывает, проверяйте пошагово
Название: Re:Событие "Активация пользователя"
Отправлено: Vladimir от 21 Октября 2011, 17:43:52
Дело в том, что событие users_activate срабатывает из клиентской части. При активации из админки такого события нет.
Пхоже, это событие вообще не перехватывается в админке, так что я бы не ломал особо голову, а просто дописал точку вызова в __admin.php
С др.стороны, если активировать пользователя, открывая страницу и сохраняя, то срабатывает событие systemModifyObject

События systemSwitchObjectActivity действительно нет, потому что у объекта нет такого понятия как активность.
Название: Re:Событие "Активация пользователя"
Отправлено: admin от 21 Октября 2011, 17:59:17
Владимир, очень рад видеть вас здесь)
Название: Re:Событие "Активация пользователя"
Отправлено: Vladimir от 21 Октября 2011, 18:05:32
Я тоже рад)
Название: Re:Событие "Активация пользователя"
Отправлено: Vladimir от 21 Октября 2011, 18:07:03
Кстати, Алла.  Если модератор узнает о новом пользователе по ссылке в письме, то все как раз неплохо складывается: он попадает стразу на страницу редактирования пользователя, ставит галочку, сохраняет, срабатывает событие.
Название: Re:Событие "Активация пользователя"
Отправлено: AllaVK от 24 Октября 2011, 09:53:06
В-общем, событие users_activate у меня совсем никак не срабатывает... а вот systemModifyObject  - срабатывает, если активировать пользователя из админки.... попробую воспользоваться им, проверяя активность объекта в режиме before и after...
Название: Re:Событие "Активация пользователя"
Отправлено: AllaVK от 24 Октября 2011, 09:54:32
Если модератор узнает о новом пользователе по ссылке в письме, то все как раз неплохо складывается: он попадает стразу на страницу редактирования пользователя, ставит галочку, сохраняет, срабатывает событие.

В письме модератору отправляется только сообщение, что зарегистрился новый пользователь, без ссылки на его страницу редактирование в админке...
Название: Re:Событие "Активация пользователя"
Отправлено: Vladimir от 24 Октября 2011, 10:02:58
Это не проблема. В шаблоне есть user_id (я о tpl), так что путь можно сконструировать
Отвечает за это блок mail_admin_registrated из tpls/users/register/default.tpl
Название: Re:Событие "Активация пользователя"
Отправлено: admin от 24 Октября 2011, 10:23:38
Цитировать
В-общем, событие users_activate у меня совсем никак не срабатывает...

а какая версия системы? и можно ли глянуть на неё в живую?
Название: Re:Событие "Активация пользователя"
Отправлено: AllaVK от 24 Октября 2011, 10:32:27
В шаблоне есть user_id (я о tpl), так что путь можно сконструировать
Отвечает за это блок mail_admin_registrated из tpls/users/register/default.tpl

ага, это я знаю... пасиб ) руки просто не дошли пока это сделать....
Название: Re:Событие "Активация пользователя"
Отправлено: AllaVK от 24 Октября 2011, 10:33:23
а какая версия системы? и можно ли глянуть на неё в живую?

версия 2.8.4.2
Название: Re:Событие "Активация пользователя"
Отправлено: AllaVK от 24 Октября 2011, 12:09:16
systemModifyObject  - срабатывает, если активировать пользователя из админки.... попробую воспользоваться им, проверяя активность объекта в режиме before и after...

сделала именно таким способом ) все работает )
всем большое спасибо за подсказки )
Название: Re:Событие "Активация пользователя"
Отправлено: AllaVK от 24 Октября 2011, 12:09:55
В шаблоне есть user_id (я о tpl), так что путь можно сконструировать
Отвечает за это блок mail_admin_registrated из tpls/users/register/default.tpl

и это заодно сделала, спасибо )