Есть пользователи с набором пользовательских свойств типа "список".
Иногда появляется потребность одному из пользователей с помощью АПИ поставить галочку в одном из свойств (т.е. добавить одно из значений для одного из свойств).
При этом код должен быть более менее универсальным.
Т.е. получается логика:
считываем значение свойства для конкретного пользователя, добавляем значение (если его нет) в массив, пишем обратно с помощью CUser::Update.
Проблема в том, что считать свойство нельзя по коду, как я понимаю. Только по ИД.
Однако если у юзера нет ни одного значения в свойстве ещё, то у него нет никаких уведомлений о свойстве.
Т.е. надо держать технического юзера со всеми значениями всех свойств и делать лишний запрос:
На входе при этом мне нужны 2 переменных - $ID - Ид юзера, $Code - символьный код пользовательского свойства типа "UF_CODE"
Можно ли как-то упростить код?
Иногда появляется потребность одному из пользователей с помощью АПИ поставить галочку в одном из свойств (т.е. добавить одно из значений для одного из свойств).
При этом код должен быть более менее универсальным.
Т.е. получается логика:
считываем значение свойства для конкретного пользователя, добавляем значение (если его нет) в массив, пишем обратно с помощью CUser::Update.
Проблема в том, что считать свойство нельзя по коду, как я понимаю. Только по ИД.
Однако если у юзера нет ни одного значения в свойстве ещё, то у него нет никаких уведомлений о свойстве.
Т.е. надо держать технического юзера со всеми значениями всех свойств и делать лишний запрос:
| Код |
|---|
$rsUser = CUser::GetList($by, $order,array("ID" => $ID,),array("SELECT" => array($Code,),));
$User = $rsUser->Fetch();
$fields[$Code] = $User[$Code];
if (empty($fields)){
$fields = Array(
$Code => array(),
);
}
$fields[$Code][]=6;
asort($fields[$Code]);
$r_fields[$Code] = array_unique($fields[$Code]);
$user->Update($ID, $r_fields);
|
Можно ли как-то упростить код?