- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/general/section_property.php
- Класс: CIBlockSectionPropertyLink
- Вызов: CIBlockSectionPropertyLink::Add
static function Add($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."
");
if (!$rs->Fetch())
{
$ar = self::CheckProperty($SECTION_ID, $PROPERTY_ID);
if (is_array($ar))
{
$ar["ID"] = 1;
$DB->Add("b_iblock_section_property", $ar);
$arUpdate = array();
if (array_key_exists("SMART_FILTER", $arLink))
$arUpdate["SMART_FILTER"] = $arLink["SMART_FILTER"];
if (array_key_exists("DISPLAY_TYPE", $arLink))
$arUpdate["DISPLAY_TYPE"] = $arLink["DISPLAY_TYPE"];
if (array_key_exists("DISPLAY_EXPANDED", $arLink))
$arUpdate["DISPLAY_EXPANDED"] = $arLink["DISPLAY_EXPANDED"];
if (array_key_exists("FILTER_HINT", $arLink))
$arUpdate["FILTER_HINT"] = self::cleanFilterHint($arLink["FILTER_HINT"]);
if (array_key_exists("IBLOCK_ID", $arLink))
$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 IBLOCK_ID = ".$ar["IBLOCK_ID"]."
AND SECTION_ID = ".$ar["SECTION_ID"]."
AND PROPERTY_ID = ".$ar["PROPERTY_ID"]."
");
if (
isset($arUpdate["SMART_FILTER"])
&& $arUpdate["SMART_FILTER"] === "Y"
&& (!isset($arLink["INVALIDATE"]) || $arLink["INVALIDATE"] !== "N")
)
{
BitrixIblockPropertyIndexManager::markAsInvalid(
isset($arUpdate["IBLOCK_ID"]) && $arUpdate["IBLOCK_ID"]
? $arUpdate["IBLOCK_ID"]
: $ar["IBLOCK_ID"]
);
}
}
}
}
}