Стоит регистрация пользователя при оформлении заказа. Хочу заполнить карточку пользователя полями из профиля покупателя, такими как: Город, Телефон, Адрес.
Вот код в 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 не отрабатывает, я не пойму...
