Beispiel #1
0
 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;
 }