• Модуль: ldap
  • Путь к файлу: ~/bitrix/modules/ldap/classes/general/ldap_server.php
  • Класс: CLdapServer
  • Вызов: CLdapServer::Update
static function Update($ID, $arFields)
{
	global $DB, $APPLICATION;
	$APPLICATION->ResetException();

	$ID = intval($ID);

	if(is_set($arFields, "ACTIVE") && $arFields["ACTIVE"]!="Y")
		$arFields["ACTIVE"]="N";

	if(is_set($arFields, "SYNC") && $arFields["SYNC"]!="Y")
		$arFields["SYNC"]="N";

	if(is_set($arFields, "SYNC_USER_ADD") && $arFields["SYNC_USER_ADD"] != "Y")
		$arFields["SYNC_USER_ADD"] = "N";

	if(is_set($arFields, "CONVERT_UTF8") && $arFields["CONVERT_UTF8"]!="Y")
		$arFields["CONVERT_UTF8"]="N";

	if(is_set($arFields, "USER_GROUP_ACCESSORY") && $arFields["USER_GROUP_ACCESSORY"]!="Y")
		$arFields["USER_GROUP_ACCESSORY"]="N";

	if(is_set($arFields, "IMPORT_STRUCT") && $arFields["IMPORT_STRUCT"]!="Y")
		$arFields["IMPORT_STRUCT"]="N";

	if(is_set($arFields, "STRUCT_HAVE_DEFAULT") && $arFields["STRUCT_HAVE_DEFAULT"]!="Y")
		$arFields["STRUCT_HAVE_DEFAULT"]="N";

	if(is_set($arFields, "SET_DEPARTMENT_HEAD") && $arFields["SET_DEPARTMENT_HEAD"]!="Y")
		$arFields["SET_DEPARTMENT_HEAD"]="N";

	if(!CLdapServer::CheckFields($arFields, $ID))
		return false;

	if(is_set($arFields, "ADMIN_PASSWORD"))
		$arFields["ADMIN_PASSWORD"] = Encryption::encrypt($arFields["ADMIN_PASSWORD"]);

	if(is_set($arFields, "FIELD_MAP") && is_array($arFields["FIELD_MAP"]))
	{
		$arFields["USER_NAME_ATTR"] = "".$arFields["FIELD_MAP"]["NAME"];
		$arFields["USER_LAST_NAME_ATTR"] = "".$arFields["FIELD_MAP"]["LAST_NAME"];
		$arFields["USER_EMAIL_ATTR"] = "".$arFields["FIELD_MAP"]["EMAIL"];

		$arFields["FIELD_MAP"] = serialize($arFields["FIELD_MAP"]);
	}

	if(isset($arFields["SYNC"]) || isset($arFields["SYNC_PERIOD"]))
	{
		$dbld = CLdapServer::GetById($ID);
		$arLdap = $dbld->Fetch();
	}

	$strUpdate = $DB->PrepareUpdate("b_ldap_server", $arFields);

	$strSql =
		"UPDATE b_ldap_server SET ".
			$strUpdate." ".
		"WHERE ID=".$ID;

	$DB->Query($strSql);

	if(is_set($arFields, 'GROUPS'))
		CLdapServer::SetGroupMap($ID, $arFields['GROUPS']);

	if(isset($arFields["SYNC"]) || isset($arFields["SYNC_PERIOD"]))
	{
		if($arLdap)
		{
			if(isset($arFields["SYNC"]))
			{
				if($arFields["SYNC"]!="Y" && $arLdap["SYNC"]=="Y")
					CLdapServer::__UpdateAgentPeriod($ID, 0);
				elseif($arFields["SYNC"]=="Y" && $arLdap["SYNC"]!="Y")
					CLdapServer::__UpdateAgentPeriod($ID, (isset($arFields["SYNC_PERIOD"])? $arFields["SYNC_PERIOD"] : $arLdap["SYNC_PERIOD"]));
				elseif(isset($arFields["SYNC_PERIOD"]) && $arLdap["SYNC_PERIOD"]!=$arFields["SYNC_PERIOD"])
					CLdapServer::__UpdateAgentPeriod($ID, $arFields["SYNC_PERIOD"]);
			}
			elseif($arLdap["SYNC_PERIOD"]!=$arFields["SYNC_PERIOD"])
				CLdapServer::__UpdateAgentPeriod($ID, $arFields["SYNC_PERIOD"]);
		}
	}

	return true;
}