Здравствуйте, друзья! С наступающим Вас Новым Годом!
Прошу Вашей помощи. Ситуация следующая: у меня есть простейший обработчик события: при регистрации пользователя выполняется 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()