function Update($ID, $arFields)
 {
     global $DB, $CACHE_MANAGER;
     if (!CSocNetGroup::__ValidateID($ID)) {
         return false;
     }
     $ID = IntVal($ID);
     $arFields1 = array();
     foreach ($arFields as $key => $value) {
         if (substr($key, 0, 1) == "=") {
             $arFields1[substr($key, 1)] = $value;
             unset($arFields[$key]);
         }
     }
     if (!CSocNetGroupSubject::CheckFields("UPDATE", $arFields, $ID)) {
         return false;
     } else {
         $arSiteID = array();
         if (is_set($arFields, "SITE_ID")) {
             if (is_array($arFields["SITE_ID"])) {
                 $arSiteID = $arFields["SITE_ID"];
             } else {
                 $arSiteID[] = $arFields["SITE_ID"];
             }
             $arFields["SITE_ID"] = false;
             $str_SiteID = "''";
             foreach ($arSiteID as $v) {
                 $arFields["SITE_ID"] = $v;
                 $str_SiteID .= ", '" . $DB->ForSql($v) . "'";
             }
         }
     }
     $strUpdate = $DB->PrepareUpdate("b_sonet_group_subject", $arFields);
     foreach ($arFields1 as $key => $value) {
         if (strlen($strUpdate) > 0) {
             $strUpdate .= ", ";
         }
         $strUpdate .= $key . "=" . $value . " ";
     }
     if (strlen($strUpdate) > 0) {
         $strSql = "UPDATE b_sonet_group_subject SET " . "\t" . $strUpdate . " " . "WHERE ID = " . $ID . " ";
         $DB->Query($strSql, False, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if (count($arSiteID) > 0) {
             $strSql = "DELETE FROM b_sonet_group_subject_site WHERE SUBJECT_ID=" . $ID;
             $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__);
             $strSql = "INSERT INTO b_sonet_group_subject_site(SUBJECT_ID, SITE_ID) " . "SELECT " . $ID . ", LID " . "FROM b_lang " . "WHERE LID IN (" . $str_SiteID . ") ";
             $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__);
         }
         if (CACHED_b_sonet_group_subjects != false) {
             $CACHE_MANAGER->CleanDir("b_sonet_group_subjects");
         }
     } else {
         $ID = False;
     }
     return $ID;
 }
 function Add($arFields)
 {
     global $DB, $CACHE_MANAGER;
     $arFields1 = array();
     foreach ($arFields as $key => $value) {
         if (substr($key, 0, 1) == "=") {
             $arFields1[substr($key, 1)] = $value;
             unset($arFields[$key]);
         }
     }
     if (!CSocNetGroupSubject::CheckFields("ADD", $arFields)) {
         return false;
     } else {
         $arSiteID = array();
         if (array_key_exists("SITE_ID", $arFields)) {
             if (is_array($arFields["SITE_ID"])) {
                 foreach ($arFields["SITE_ID"] as $site_id) {
                     $arSiteID[$site_id] = $DB->ForSQL($site_id);
                 }
             } else {
                 $arSiteID[$arFields["SITE_ID"]] = $DB->ForSQL($arFields["SITE_ID"]);
             }
         }
     }
     if (empty($arSiteID)) {
         unset($arFields["SITE_ID"]);
     } else {
         $arFields["SITE_ID"] = end($arSiteID);
     }
     $arInsert = $DB->PrepareInsert("b_sonet_group_subject", $arFields);
     foreach ($arFields1 as $key => $value) {
         if (strlen($arInsert[0]) > 0) {
             $arInsert[0] .= ", ";
         }
         $arInsert[0] .= $key;
         if (strlen($arInsert[1]) > 0) {
             $arInsert[1] .= ", ";
         }
         $arInsert[1] .= $value;
     }
     $ID = false;
     if (strlen($arInsert[0]) > 0) {
         $strSql = "INSERT INTO b_sonet_group_subject(" . $arInsert[0] . ") " . "VALUES(" . $arInsert[1] . ")";
         $DB->Query($strSql, False, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $ID = IntVal($DB->LastID());
         if ($ID > 0 && !empty($arSiteID)) {
             $DB->Query("\n\t\t\t\t\tDELETE FROM b_sonet_group_subject_site WHERE SUBJECT_ID = " . $ID . "\n\t\t\t\t", false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__);
             $DB->Query("\n\t\t\t\t\tINSERT INTO b_sonet_group_subject_site(SUBJECT_ID, SITE_ID)\n\t\t\t\t\tSELECT " . $ID . ", LID\n\t\t\t\t\tFROM b_lang\n\t\t\t\t\tWHERE LID IN ('" . implode("', '", $arSiteID) . "')\n\t\t\t\t", false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__);
         }
         if (CACHED_b_sonet_group_subjects != false) {
             $CACHE_MANAGER->CleanDir("b_sonet_group_subjects");
         }
     }
     return $ID;
 }