示例#1
0
 function Update($ID, $arFields)
 {
     global $DB, $CACHE_MANAGER, $stackCacheManager;
     $ID = (int) $ID;
     if ($ID <= 0) {
         return false;
     }
     foreach (GetModuleEvents("catalog", "OnBeforeGroupUpdate", true) as $arEvent) {
         if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) {
             return false;
         }
     }
     if (!CCatalogGroup::CheckFields("UPDATE", $arFields, $ID)) {
         return false;
     }
     $strUpdate = $DB->PrepareUpdate("b_catalog_group", $arFields);
     if (!empty($strUpdate)) {
         if (isset($arFields["BASE"]) && $arFields["BASE"] == "Y") {
             $strBaseUpdate = "BASE = 'N', TIMESTAMP_X = " . $DB->GetNowFunction();
             if (array_key_exists('MODIFIED_BY', $arFields)) {
                 $strBaseUpdate .= ", MODIFIED_BY = " . $arFields["MODIFIED_BY"];
             }
             $strSql = "UPDATE b_catalog_group SET " . $strBaseUpdate . " WHERE ID != " . $ID . " AND BASE = 'Y'";
             $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
             self::$arBaseGroupCache = array();
             if (defined('CATALOG_GLOBAL_VARS') && 'Y' == CATALOG_GLOBAL_VARS) {
                 global $CATALOG_BASE_GROUP;
                 $CATALOG_BASE_GROUP = self::$arBaseGroupCache;
             }
         }
         $strSql = "UPDATE b_catalog_group SET " . $strUpdate . " WHERE ID = " . $ID;
         $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     if (isset($arFields["USER_GROUP"]) && is_array($arFields["USER_GROUP"]) && !empty($arFields["USER_GROUP"])) {
         $DB->Query("DELETE FROM b_catalog_group2group WHERE CATALOG_GROUP_ID = " . $ID . " AND BUY <> 'Y'");
         foreach ($arFields["USER_GROUP"] as &$intValue) {
             $strSql = "INSERT INTO b_catalog_group2group(CATALOG_GROUP_ID, GROUP_ID, BUY) VALUES(" . $ID . ", " . $intValue . ", 'N')";
             $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         }
         if (isset($intValue)) {
             unset($intValue);
         }
     }
     if (isset($arFields["USER_GROUP_BUY"]) && is_array($arFields["USER_GROUP_BUY"]) && !empty($arFields["USER_GROUP_BUY"])) {
         $DB->Query("DELETE FROM b_catalog_group2group WHERE CATALOG_GROUP_ID = " . $ID . " AND BUY = 'Y'");
         foreach ($arFields["USER_GROUP_BUY"] as &$intValue) {
             $strSql = "INSERT INTO b_catalog_group2group(CATALOG_GROUP_ID, GROUP_ID, BUY) VALUES(" . $ID . ", " . $intValue . ", 'Y')";
             $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         }
         if (isset($intValue)) {
             unset($intValue);
         }
     }
     if (isset($arFields["USER_LANG"]) && is_array($arFields["USER_LANG"]) && !empty($arFields["USER_LANG"])) {
         $DB->Query("DELETE FROM b_catalog_group_lang WHERE CATALOG_GROUP_ID = " . $ID);
         foreach ($arFields["USER_LANG"] as $key => $value) {
             $strSql = "INSERT INTO b_catalog_group_lang(CATALOG_GROUP_ID, LANG, NAME) VALUES(" . $ID . ", '" . $DB->ForSql($key) . "', '" . $DB->ForSql($value) . "')";
             $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         }
     }
     if (!defined("CATALOG_SKIP_CACHE") || !CATALOG_SKIP_CACHE) {
         $CACHE_MANAGER->CleanDir("catalog_group");
         $CACHE_MANAGER->Clean("catalog_group_perms");
     }
     $stackCacheManager->Clear("catalog_GetQueryBuildArrays");
     $stackCacheManager->Clear("catalog_discount");
     foreach (GetModuleEvents("catalog", "OnGroupUpdate", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array($ID, $arFields));
     }
     return true;
 }