public 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 (!CLdapServer::CheckFields($arFields, $ID)) { return false; } if (is_set($arFields, "ADMIN_PASSWORD")) { $arFields["ADMIN_PASSWORD"] = CLdapUtil::Crypt($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; }