Вообщем есть скрипт
<?
CModule::IncludeModule("sale");
// получим всех покупателей
$dbRes = CUser::GetList($by = 'ID', $order = 'ASC', array());
while($arUser = $dbRes->Fetch()){
$UserId = $arUser['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(
'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($arUser[$value]) ){
$fieldsUser[$value] = $arPropVals['VALUE'];
}
}
}
// обновим пользователя взяв данные из профиля
$userUpdate = new CUser;
$userUpdate->Update($UserId, $fieldsUser);
}
?>
Я так понимаю при каждом его запуске он будет обходить профили всех покупателей, брать данные и отправлять их в соответствующие поля профилей пользователей. Подскажите пожалуйста как изменить этот скрипт, чтобы он брал только последнего зарегистрированного пользователя и проводил эти операции только с этим профилем.
<?
CModule::IncludeModule("sale");
// получим всех покупателей
$dbRes = CUser::GetList($by = 'ID', $order = 'ASC', array());
while($arUser = $dbRes->Fetch()){
$UserId = $arUser['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(
'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($arUser[$value]) ){
$fieldsUser[$value] = $arPropVals['VALUE'];
}
}
}
// обновим пользователя взяв данные из профиля
$userUpdate = new CUser;
$userUpdate->Update($UserId, $fieldsUser);
}
?>
Я так понимаю при каждом его запуске он будет обходить профили всех покупателей, брать данные и отправлять их в соответствующие поля профилей пользователей. Подскажите пожалуйста как изменить этот скрипт, чтобы он брал только последнего зарегистрированного пользователя и проводил эти операции только с этим профилем.