Блог Николая Семенцова

Партнер компании 1с-битрикс

Заполним поля пользователя из профилей покупателя

В одном из интернет-магазинов я дополнил личный кабинет пользователя новыми полями, магазин был живой зарегистрировано более 6 тысяч пользователей и что бы эти поля не пустовали я заполнил их данными из "профилей покупателя". Для этого написал код в котором получил всех покупателей , их последние профили, далее заполнил поля пользователя данными из профиля, вот код
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(
        'ZIP' => 'PERSONAL_ZIP',
        'LOCATION' => 'PERSONAL_CITY',
        'ADDRESS' => 'PERSONAL_STREET',  
        'PHONE' => 'PERSONAL_PHONE',         
    );
    $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);    
 
 
 
}
Удачного использования , если вам он оказался полезен ставьте лайки :)


Опубликовано: 9 августа 2012




Помогла заметка? Жмите кнопки ниже


ВКонтакт Facebook Google Plus Одноклассники Twitter Livejournal Liveinternet Mail.Ru





comments powered by Disqus