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; }