Добавить возвращаемое значение в методе CUser:: SendUserInfo

Рейтинг: 0.8902  
На голосовании
Предложил Пользователь 152742 19.11.2018 06:46:53

Добавить возвращаемое значение в методе CUser:: SendUserInfo

Сейчас метод SendUserInfo ничего не возвращает, и даже не прописывает в свойствах объекта, хотя вызывается не статически.

Метод понадобился для отправки пользователю предложения о замене пароля (после автоматического переноса пользователя с другого сайта). Иного способа оповещения не нашёл, т.к. для смены пароля требуется строка CHECKWORD - и этом совсем не та строка, которая выдаётся в информации о пользователе. Данное поле создаётся только в самом методе, поэтому обойти его никак нельзя.

Так вот при массовой рассылке весьма хотелось бы увидеть, что событие благополучно добавилось к отправке, если отправляется не сразу, а через CEvent::Send (т.е. 4-й параметр у метода стоит false).

Рейтинг: -1  
Пользователь 825961 27.11.2018 14:38:16
Так сформируйте сами поле CHECKWORD и отправьте его вручную через CEvent::Send  (которое возвращает значение).
Формировку поля гляньте в функции SendUserInfo, делов то.
Рейтинг: 0  
Пользователь 152742 27.11.2018 15:35:05
Да, делов...
Во-первых, это дублирование кода. Завтра способ создания в битриксе поменяется, а у вас будет отправляться всё так же и работать перестанет.
Во-вторых, уже не помню, нужно смотреть исходники, но там по-моему не всё так просто. Обычным копипастом не обойдёшься.
Рейтинг: 1  
Пользователь 825961 20.12.2018 18:03:34
Извините, не видел вашего сообщение.
1) Насчет изменения кода. Таким образом вообще /local/ не нужен, поскольку перенес я туда компонент битрикса, а потом опа, обновилась функция, какую я использовал там и все полетело. Как было с функцией со смайлами, которая место объекта стала возвращать (bool) false, и кастомный компонент падал. С таким подходом далеко не уйдешь.
2) Там просто.
$obUser = new CUser;
$arFields['CHECKWORD'] = md5(CMain::GetServerUniqID() . uniqid());
if ($obUser->Update($user_id, $arFields)) {
    //тут есть уже готовый для смены пароля
}else{
    //че-то пошло не так
}

3) Я просто помочь вам хочу, поскольку вы видите, как "быстро" идеи реализуются.
Как вариант смотрите в сторону cобытий для EventTable::add, и там проверяйте, успешно ли для вашего события записалось все или же нет
Не для демагогии ради, просто помочь хочу.