- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/controller_member.php
- Класс: CControllerClient
- Вызов: CControllerClient::UpdateUser
static function UpdateUser($arFields = Array(), $FORMAT_DATE = false, $FORMAT_DATETIME = false)
{
global $DB;
$arFields["ACTIVE"] = "Y";
$arFields["PASSWORD"] = BitrixMainSecurityRandom::getString(32);
$oUser = new CUser;
unset($arFields["ID"]);
unset($arFields["TIMESTAMP_X"]);
unset($arFields["DATE_REGISTER"]);
if (
isset($arFields["PERSONAL_BIRTHDAY"])
&& $arFields["PERSONAL_BIRTHDAY"] != ''
&& $FORMAT_DATE !== false
)
{
$arFields["PERSONAL_BIRTHDAY"] = $DB->FormatDate($arFields["PERSONAL_BIRTHDAY"], $FORMAT_DATE, FORMAT_DATE);
}
$dbr_user = CUser::GetList('', '', array(
"LOGIN_EQUAL_EXACT" => $arFields["LOGIN"],
"EXTERNAL_AUTH_ID" => "__controller",
));
if ($ar_user = $dbr_user->Fetch())
{
$arFields['EXTERNAL_AUTH_ID'] = "__controller";
$USER_ID = $ar_user["ID"];
if(is_array($arFields["GROUPS_TO_ADD"]) && is_array($arFields["GROUPS_TO_DELETE"]))
{
$arFields["GROUP_ID"] = CUser::GetUserGroup($USER_ID);
foreach($arFields["GROUPS_TO_DELETE"] as $group_id)
{
$group_id = CGroup::GetIDByCode($group_id);
if($group_id > 0)
{
$p = array_search($group_id, $arFields["GROUP_ID"]);
if($p !== false)
unset($arFields["GROUP_ID"][$p]);
}
}
foreach($arFields["GROUPS_TO_ADD"] as $group_id)
{
$group_id = CGroup::GetIDByCode($group_id);
if($group_id > 0)
$arFields["GROUP_ID"][] = $group_id;
}
}
elseif(is_array($arFields["GROUP_ID"]))
{
$groups = $arFields["GROUP_ID"];
$arFields["GROUP_ID"] = array();
foreach($groups as $group_id)
{
$group_id = CGroup::GetIDByCode($group_id);
if($group_id > 0)
$arFields["GROUP_ID"][] = $group_id;
}
}
if(!$oUser->Update($USER_ID, $arFields))
return false;
}
else
{
$arFields['EXTERNAL_AUTH_ID'] = "__controller";
$arFields["LID"] = SITE_ID;
if(is_array($arFields["GROUP_ID"]))
{
$groups = $arFields["GROUP_ID"];
$arFields["GROUP_ID"] = array();
foreach($groups as $group_id)
{
$group_id = CGroup::GetIDByCode($group_id);
if($group_id > 0)
$arFields["GROUP_ID"][] = $group_id;
}
}
$USER_ID = $oUser->Add($arFields);
}
return $USER_ID;
}