Задать вопрос
@bitrixweb
Вечно молодой, вечно пьяный

Как отследить подтверждение регистрации пользователя?

Здравствуйте, друзья! С наступающим Вас Новым Годом!

Прошу Вашей помощи. Ситуация следующая: у меня есть простейший обработчик события: при регистрации пользователя выполняется CIBlockElement::Add() - добавляет в ИБ элемент с привязкой к зарегистрированному пользователю и еще несколькими свойствами. Сразу оговорюсь, что это действие нужно делать всего один раз - при регистрации - это некое "начисление бонуса за регистрацию".

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

Вопрос: на какое событие мне повесить этот обработчик, чтобы он выполнялся при подтверждении пользователем регистрации? Из гугления, я понял, что, возможно, надо использовать CUser::Update(). Так ли это?

Код существующего обработчика:
AddEventHandler("main", "OnAfterUserRegister", "AddBonusOnRegister");
function AddBonusOnRegister(&$arFields){
	include $_SERVER['DOCUMENT_ROOT'].'/cbk/vars.php';
	CModule::IncludeModule("iblock");
	if($arFields["USER_ID"] > 0){
		// Добавляем бонус как покупку
		$prop[164] = $arFields["USER_ID"]; 			// Привязка к пользователю
               /* ... Еще несколько свойств ... */

		$arLoadProductArray = Array( 
			"IBLOCK_SECTION_ID" => false, 
			"IBLOCK_ID" => $ORDERS_IBLOCK_ID, 
			"PROPERTY_VALUES"=> $prop, 
			"NAME" => "Бонус за регистрацию (".$arFields['LOGIN'].")", 
			"ACTIVE" => "Y"
		);
		
		$bonus = new CIBlockElement;
		if(!$bonus->Add($arLoadProductArray)){
			echo "Ошибка при начислении бонуса: ".$bonus->LAST_ERROR."<br/>";
		}
	}
}

Спасибо за внимание! Буду рад дельным советам :)

P.S что-то заработался.. хотел написать OnAfterUserUpdate, а не CUser::Update()
  • Вопрос задан
  • 1268 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@bitrixweb Автор вопроса
Вечно молодой, вечно пьяный
Задача решена. Так как подтверждение регистрации пользователя это всего лишь смена значения его активности, то обработчик повесил на OnBeforeUserUpdate с проверкой на $arUser["ACTIVE"] == 'N' && !isset($arUser["LAST_LOGIN"]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы