- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/general/section_property.php
- Класс: CIBlockSectionPropertyLink
- Вызов: CIBlockSectionPropertyLink::Set
static function Set($SECTION_ID, $PROPERTY_ID, $arLink = array())
{
global $DB;
$SECTION_ID = (int)$SECTION_ID;
$PROPERTY_ID = (int)$PROPERTY_ID;
$rs = $DB->Query("
SELECT *
FROM b_iblock_section_property
WHERE SECTION_ID = ".$SECTION_ID." AND PROPERTY_ID = ".$PROPERTY_ID."
");
$sectionProperty = $rs->Fetch();
if ($sectionProperty)
{
$ar = self::CheckProperty($SECTION_ID, $PROPERTY_ID);
if (is_array($ar))
{
$arUpdate = array();
if (
array_key_exists("SMART_FILTER", $arLink)
&& $arLink["SMART_FILTER"] !== $sectionProperty["SMART_FILTER"]
)
{
$arUpdate["SMART_FILTER"] = $arLink["SMART_FILTER"] === "Y"? "Y": false;
}
if (
array_key_exists("DISPLAY_TYPE", $arLink)
&& $arLink["DISPLAY_TYPE"] !== $sectionProperty["DISPLAY_TYPE"]
)
{
$arUpdate["DISPLAY_TYPE"] = $arLink["DISPLAY_TYPE"];
}
if (
array_key_exists("DISPLAY_EXPANDED", $arLink)
&& $arLink["DISPLAY_EXPANDED"] !== $sectionProperty["DISPLAY_EXPANDED"]
)
{
$arUpdate["DISPLAY_EXPANDED"] = $arLink["DISPLAY_EXPANDED"] === "Y"? "Y": false;
}
if (array_key_exists("FILTER_HINT", $arLink))
{
$filterHint = self::cleanFilterHint($arLink["FILTER_HINT"]);
if ($filterHint !== $sectionProperty["FILTER_HINT"])
{
$arUpdate["FILTER_HINT"] = $filterHint;
}
}
if (
array_key_exists("IBLOCK_ID", $arLink)
&& $arLink["IBLOCK_ID"] !== $sectionProperty["IBLOCK_ID"]
)
{
$arUpdate["IBLOCK_ID"] = $arLink["IBLOCK_ID"];
}
if (!empty($arUpdate))
$strUpdate = $DB->PrepareUpdate("b_iblock_section_property", $arUpdate);
else
$strUpdate = "";
if ($strUpdate <> '')
{
$DB->Query("
UPDATE b_iblock_section_property
SET ".$strUpdate."
WHERE SECTION_ID = ".$ar["SECTION_ID"]."
AND PROPERTY_ID = ".$ar["PROPERTY_ID"]."
");
if (
isset($arUpdate["SMART_FILTER"])
&& $arUpdate["SMART_FILTER"] === "Y"
)
{
BitrixIblockPropertyIndexManager::markAsInvalid(
isset($arUpdate["IBLOCK_ID"]) && $arUpdate["IBLOCK_ID"]
? $arUpdate["IBLOCK_ID"]
: $ar["IBLOCK_ID"]
);
}
}
}
}
else
{
self::Add($SECTION_ID, $PROPERTY_ID, $arLink);
}
}