Exemplo n.º 1
0
 function Update($ID, $arFields)
 {
     global $DB;
     global $CACHE_MANAGER;
     global $stackCacheManager;
     global $CATALOG_BASE_GROUP;
     $ID = intval($ID);
     if (0 >= $ID) {
         return false;
     }
     if (!CCatalogGroup::CheckFields("UPDATE", $arFields, $ID)) {
         return false;
     }
     $db_events = GetModuleEvents("catalog", "OnBeforeGroupUpdate");
     while ($arEvent = $db_events->Fetch()) {
         if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) {
             return false;
         }
     }
     if (isset($arFields["BASE"]) && $arFields["BASE"] == "Y") {
         $strSql = "UPDATE b_catalog_group SET BASE = 'N' WHERE ID != " . $ID . " AND BASE = 'Y'";
         $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if (isset($CATALOG_BASE_GROUP)) {
             unset($CATALOG_BASE_GROUP);
         }
     }
     $strUpdate = $DB->PrepareUpdate("b_catalog_group", $arFields);
     $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, LID, 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");
     $events = GetModuleEvents("catalog", "OnGroupUpdate");
     while ($arEvent = $events->Fetch()) {
         ExecuteModuleEventEx($arEvent, array($ID, $arFields));
     }
     return true;
 }
Exemplo n.º 2
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;
 }
Exemplo n.º 3
0
	/**
	 * <p>Функция изменяет параметры типа цены с кодом ID на значения из массива arFields. При этом сохраняются как языкозависимые параметры типа, так и параметры, которые не зависят от языка. Так же есть возможность указать группы пользователей, члены которых могут просматривать и покупать товары по ценам этого типа. </p>
	 *
	 *
	 *
	 *
	 * @param int $ID  Код изменяемого типа цены.
	 *
	 *
	 *
	 * @param array $arFields  Ассоциативный массив параметров типа цены, ключами которого
	 * являются названия параметров, а значениями - новые значения.
	 * Допустимые параметры: <ul> <li>BASE - флаг (Y/N) является ли тип
	 * базовым;</li> <li>NAME - внутреннее название типа цены;</li> <li>SORT - индекс
	 * сортировки;</li> <li>XML_ID - внешний код;</li> <li>MODIFIED_BY - ID последнего
	 * изменившего тип цен;</li> <li>USER_GROUP - массив кодов групп
	 * пользователей, члены которых могут видеть цены этого типа;</li>
	 * <li>USER_GROUP_BUY - массив кодов групп пользователей, члены которых могут
	 * покупать товары по ценам этого типа;</li> <li>USER_LANG - ассоциативный
	 * массив языкозависимых параметров типа цены, ключами которого
	 * являются коды языков, а значениями - названия этого типа цены на
	 * соответствующем языке.</li> </ul>
	 *
	 *
	 *
	 * @return bool <p>Возвращает <i>true</i> в случае успешного изменения параметров типа
	 * цени и <i>false</i> - в случае ошибки.</p><a name="examples"></a>
	 *
	 *
	 * <h4>Example</h4> 
	 * <pre>
	 * &lt;?
	 * $arFields = array(
	 *    "NAME" =&gt; "retail",
	 *    "SORT" =&gt; 100,
	 *    "USER_GROUP" =&gt; array(2, 4),   // видят цены члены групп 2 и 4
	 *    "USER_GROUP_BUY" =&gt; array(2),  // покупают по этой цене
	 *                                   // только члены группы 2
	 *    "USER_LANG" =&gt; array(
	 *       "ru" =&gt; "Розничная",
	 *       "en" =&gt; "Retail"
	 *       )
	 * );
	 * 
	 * if (!CCatalogGroup::Update($ID, $arFields))
	 *    echo "Ошибка добавления типа цены";
	 * ?&gt;
	 * </pre>
	 *
	 *
	 * @static
	 * @link http://dev.1c-bitrix.ru/api_help/catalog/classes/ccataloggroup/ccataloggroup__update.a6d06df4.php
	 * @author Bitrix
	 */
	public static function Update($ID, $arFields)
	{
		global $DB;
		global $CACHE_MANAGER;
		global $stackCacheManager;
		global $CATALOG_BASE_GROUP;
		global $USER;

		$ID = intval($ID);
		if (0 >= $ID)
			return false;

		$arFields1 = array();
		if (array_key_exists('CREATED_BY',$arFields))
			unset($arFields['CREATED_BY']);
		if (array_key_exists('DATE_CREATE',$arFields))
			unset($arFields['DATE_CREATE']);
		if (array_key_exists('TIMESTAMP_X', $arFields))
			unset($arFields['TIMESTAMP_X']);

		$intUserID = 0;
		if (CCatalog::IsUserExists())
		{
			$intUserID = intval($USER->GetID());
			if (!array_key_exists('MODIFIED_BY', $arFields) || intval($arFields["MODIFIED_BY"]) <= 0)
				$arFields["MODIFIED_BY"] = $intUserID;
		}
		$arFields1['TIMESTAMP_X'] = $DB->GetNowFunction();

		if (!CCatalogGroup::CheckFields("UPDATE", $arFields, $ID))
			return false;

		foreach(GetModuleEvents("catalog", "OnBeforeGroupUpdate", true) as $arEvent)
		{
			if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields))===false)
				return false;
		}

		if (isset($arFields["BASE"]) && $arFields["BASE"] == "Y")
		{
			$strUpdate = "BASE = 'N', TIMESTAMP_X = ".$DB->GetNowFunction();
			if (array_key_exists('MODIFIED_BY', $arFields))
			{
				$strUpdate .= ", MODIFIED_BY = ".$arFields["MODIFIED_BY"];
			}
			$strSql = "UPDATE b_catalog_group SET ".$strUpdate." WHERE ID != ".$ID." AND BASE = 'Y'";
			$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			if (isset($CATALOG_BASE_GROUP))
				unset($CATALOG_BASE_GROUP);
		}

		$strUpdate = $DB->PrepareUpdate("b_catalog_group", $arFields);
		foreach ($arFields1 as $key => $value)
		{
			if (strlen($strUpdate)>0) $strUpdate .= ", ";
			$strUpdate .= $key."=".$value." ";
		}

		$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, LID, 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;
	}