Стоит регистрация пользователя при оформлении заказа. Хочу заполнить карточку пользователя полями из профиля покупателя, такими как: Город, Телефон, Адрес.
Вот код в Init.php, который не работает
UPDATE:
Событие OnBeforeUserUpdate меняет поля пользователя, заполняя их из профиля покупателя. Почему же OnBeforeUserRegister не отрабатывает, я не пойму...
Вот код в Init.php, который не работает
Код |
---|
AddEventHandler("main", "OnBeforeUserRegister", "OnBeforeUserUpdateHandler"); function OnBeforeUserUpdateHandler(&$arFields) { CModule::IncludeModule("sale"); $UserId = $arFields['ID']; $db_sales = CSaleOrderUserProps::GetList( array("DATE_UPDATE" => "DESC"), array("USER_ID" => $UserId), false, array("nTopCount" => 1) ); $profileID = ''; while ($ar_sales = $db_sales->Fetch()) { $profileID = $ar_sales['ID']; } $propsUser = array( 'FIO' => 'NAME', 'ZIP' => 'PERSONAL_ZIP', 'LOCATION' => 'PERSONAL_CITY', 'ADDRESS' => 'PERSONAL_STREET', 'PHONE' => 'PERSONAL_MOBILE', ); $fieldsUser = array(); // получим свойства профиля $db_propVals = CSaleOrderUserPropsValue::GetList(($b="SORT"), ($o="ASC"), Array("USER_PROPS_ID"=>$profileID)); while ($arPropVals = $db_propVals->Fetch()) { foreach($propsUser as $key => $value) { if($arPropVals['CODE'] == $key && empty($arFields[$value])) { if($key == 'LOCATION') { $city_name = CSaleLocation::GetByID($arPropVals['VALUE'], LANGUAGE_ID); $arFields[$value] = $city_name['CITY_NAME']; } else { $arFields[$value] = $arPropVals['VALUE']; } } } } } define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/tmp.txt"); AddMessage2Log(print_r($arFields, true)); return $arFields; } |
Событие OnBeforeUserUpdate меняет поля пользователя, заполняя их из профиля покупателя. Почему же OnBeforeUserRegister не отрабатывает, я не пойму...