• Модуль: 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;
}