8 public static function Set($SECTION_ID, $PROPERTY_ID, $arLink =
array())
11 $SECTION_ID = (int)$SECTION_ID;
12 $PROPERTY_ID = (int)$PROPERTY_ID;
15 FROM b_iblock_section_property
16 WHERE SECTION_ID = ".$SECTION_ID.
" AND PROPERTY_ID = ".$PROPERTY_ID.
"
19 $sectionProperty =
$rs->Fetch();
22 $ar = self::CheckProperty($SECTION_ID, $PROPERTY_ID);
28 array_key_exists(
"SMART_FILTER", $arLink)
29 && $arLink[
"SMART_FILTER"] !== $sectionProperty[
"SMART_FILTER"]
32 $arUpdate[
"SMART_FILTER"] = $arLink[
"SMART_FILTER"] ===
"Y"?
"Y":
false;
36 array_key_exists(
"DISPLAY_TYPE", $arLink)
37 && $arLink[
"DISPLAY_TYPE"] !== $sectionProperty[
"DISPLAY_TYPE"]
40 $arUpdate[
"DISPLAY_TYPE"] = $arLink[
"DISPLAY_TYPE"];
44 array_key_exists(
"DISPLAY_EXPANDED", $arLink)
45 && $arLink[
"DISPLAY_EXPANDED"] !== $sectionProperty[
"DISPLAY_EXPANDED"]
48 $arUpdate[
"DISPLAY_EXPANDED"] = $arLink[
"DISPLAY_EXPANDED"] ===
"Y"?
"Y":
false;
51 if (array_key_exists(
"FILTER_HINT", $arLink))
53 $filterHint = self::cleanFilterHint($arLink[
"FILTER_HINT"]);
54 if ($filterHint !== $sectionProperty[
"FILTER_HINT"])
56 $arUpdate[
"FILTER_HINT"] = $filterHint;
61 array_key_exists(
"IBLOCK_ID", $arLink)
62 && $arLink[
"IBLOCK_ID"] !== $sectionProperty[
"IBLOCK_ID"]
65 $arUpdate[
"IBLOCK_ID"] = $arLink[
"IBLOCK_ID"];
68 if (!empty($arUpdate))
69 $strUpdate =
$DB->PrepareUpdate(
"b_iblock_section_property", $arUpdate);
76 UPDATE b_iblock_section_property
78 WHERE SECTION_ID = ".
$ar[
"SECTION_ID"].
"
79 AND PROPERTY_ID = ".
$ar[
"PROPERTY_ID"].
"
83 isset($arUpdate[
"SMART_FILTER"])
84 && $arUpdate[
"SMART_FILTER"] ===
"Y"
88 isset($arUpdate[
"IBLOCK_ID"]) && $arUpdate[
"IBLOCK_ID"]
89 ? $arUpdate[
"IBLOCK_ID"]
98 self::Add($SECTION_ID, $PROPERTY_ID, $arLink);
102 public static function Add($SECTION_ID, $PROPERTY_ID, $arLink =
array())
105 $SECTION_ID = (int)$SECTION_ID;
106 $PROPERTY_ID = (int)$PROPERTY_ID;
109 FROM b_iblock_section_property
110 WHERE SECTION_ID = ".$SECTION_ID.
" AND PROPERTY_ID = ".$PROPERTY_ID.
"
115 $ar = self::CheckProperty($SECTION_ID, $PROPERTY_ID);
119 $DB->Add(
"b_iblock_section_property",
$ar);
122 if (array_key_exists(
"SMART_FILTER", $arLink))
123 $arUpdate[
"SMART_FILTER"] = $arLink[
"SMART_FILTER"];
124 if (array_key_exists(
"DISPLAY_TYPE", $arLink))
125 $arUpdate[
"DISPLAY_TYPE"] = $arLink[
"DISPLAY_TYPE"];
126 if (array_key_exists(
"DISPLAY_EXPANDED", $arLink))
127 $arUpdate[
"DISPLAY_EXPANDED"] = $arLink[
"DISPLAY_EXPANDED"];
128 if (array_key_exists(
"FILTER_HINT", $arLink))
129 $arUpdate[
"FILTER_HINT"] = self::cleanFilterHint($arLink[
"FILTER_HINT"]);
130 if (array_key_exists(
"IBLOCK_ID", $arLink))
131 $arUpdate[
"IBLOCK_ID"] = $arLink[
"IBLOCK_ID"];
133 if (!empty($arUpdate))
134 $strUpdate =
$DB->PrepareUpdate(
"b_iblock_section_property", $arUpdate);
138 if ($strUpdate <>
'')
141 UPDATE b_iblock_section_property
143 WHERE IBLOCK_ID = ".
$ar[
"IBLOCK_ID"].
"
144 AND SECTION_ID = ".
$ar[
"SECTION_ID"].
"
145 AND PROPERTY_ID = ".
$ar[
"PROPERTY_ID"].
"
149 isset($arUpdate[
"SMART_FILTER"])
150 && $arUpdate[
"SMART_FILTER"] ===
"Y"
151 && (!isset($arLink[
"INVALIDATE"]) || $arLink[
"INVALIDATE"] !==
"N")
155 isset($arUpdate[
"IBLOCK_ID"]) && $arUpdate[
"IBLOCK_ID"]
156 ? $arUpdate[
"IBLOCK_ID"]
168 $SECTION_ID = (int)$SECTION_ID;
169 $PROPERTY_ID = (int)$PROPERTY_ID;
171 if ($SECTION_ID == 0)
174 SELECT bp.IBLOCK_ID, 0 SECTION_ID, bp.ID PROPERTY_ID
175 FROM b_iblock_property bp
176 WHERE bp.ID = ".$PROPERTY_ID.
"
183 SELECT bs.IBLOCK_ID, bs.ID SECTION_ID, bp.ID PROPERTY_ID
184 FROM b_iblock_property bp
186 WHERE bp.ID = ".$PROPERTY_ID.
"
187 AND bs.ID = ".$SECTION_ID.
"
197 public static function Delete($SECTION_ID, $PROPERTY_ID)
200 $SECTION_ID = intval($SECTION_ID);
201 $PROPERTY_ID = intval($PROPERTY_ID);
202 $DB->Query(
"DELETE FROM b_iblock_section_property WHERE SECTION_ID = ".$SECTION_ID.
" AND PROPERTY_ID = ".$PROPERTY_ID);
209 $DB->Query(
"DELETE FROM b_iblock_section_property WHERE IBLOCK_ID = ".
$IBLOCK_ID);
210 $DB->Query(
"UPDATE b_iblock SET SECTION_PROPERTY = 'N' WHERE ID = ".
$IBLOCK_ID);
218 $SECTION_ID = intval($SECTION_ID);
219 if (is_array($PROPERTY_ID))
220 $PROPERTY_ID = array_map(
"intval", $PROPERTY_ID);
221 elseif ($PROPERTY_ID !==
null)
222 $PROPERTY_ID =
array(intval($PROPERTY_ID));
225 DELETE FROM b_iblock_section_property
226 WHERE SECTION_ID = ".$SECTION_ID.
"
227 ".($PROPERTY_ID?
"AND PROPERTY_ID NOT IN (".implode(
", ", $PROPERTY_ID).
")":
"").
"
234 $PROPERTY_ID = intval($PROPERTY_ID);
235 $DB->Query(
"DELETE FROM b_iblock_section_property WHERE PROPERTY_ID = ".$PROPERTY_ID);
257 INNER JOIN b_iblock_property BP ON BP.IBLOCK_ID = B.ID
258 LEFT JOIN b_iblock_section_property BSP ON BSP.IBLOCK_ID = B.ID AND BSP.PROPERTY_ID = BP.ID
260 B.ID = ".$IBLOCK_ID.
"
262 BSP.SECTION_ID IS NOT NULL
263 OR BSP.SMART_FILTER = 'Y'
274 if (Loader::includeModule(
'catalog'))
284 INNER JOIN b_iblock_property BP ON BP.IBLOCK_ID = B.ID
285 LEFT JOIN b_iblock_section_property BSP ON BSP.IBLOCK_ID = ".$IBLOCK_ID.
" AND BSP.PROPERTY_ID = BP.ID
289 BSP.SECTION_ID IS NOT NULL
290 OR BSP.SMART_FILTER = 'Y'
323 $SECTION_ID = intval($SECTION_ID);
329 BSP.SECTION_ID LINK_ID,
332 BSP.DISPLAY_EXPANDED,
342 INNER JOIN b_iblock_property BP ON BP.IBLOCK_ID = B.ID
343 LEFT JOIN b_iblock_section_property BSP ON BSP.SECTION_ID = 0 AND BSP.PROPERTY_ID = BP.ID
347 BP.SORT ASC, BP.ID ASC
349 while (
$ar =
$rs->Fetch())
351 $displayTypesAvailable = self::getDisplayTypes(
$ar[
"PROPERTY_TYPE"],
$ar[
"USER_TYPE"]);
352 if (isset($displayTypesAvailable[
$ar[
"DISPLAY_TYPE"]]))
353 $DISPLAY_TYPE =
$ar[
"DISPLAY_TYPE"];
355 $DISPLAY_TYPE = key($displayTypesAvailable);
357 if (
$ar[
"SECTION_PROPERTY"] ===
"Y")
359 if(
$ar[
"LINK_ID"] <>
'')
362 "PROPERTY_ID" =>
$ar[
"PROPERTY_ID"],
363 "SMART_FILTER" =>
$ar[
"SMART_FILTER"],
364 "DISPLAY_TYPE" => $DISPLAY_TYPE,
365 "DISPLAY_EXPANDED" =>
$ar[
"DISPLAY_EXPANDED"],
366 "FILTER_HINT" =>
$ar[
"FILTER_HINT"],
367 "INHERITED" => $SECTION_ID == 0 && !$bNewSection?
"N" :
"Y",
368 "INHERITED_FROM" => 0,
369 "SORT" =>
$ar[
"SORT"],
370 "LEFT_MARGIN" =>
$ar[
"LEFT_MARGIN"],
371 "LINK_TITLE" =>
$ar[
"LINK_TITLE"],
372 "PROPERTY_TYPE" =>
$ar[
"PROPERTY_TYPE"],
373 "USER_TYPE" =>
$ar[
"USER_TYPE"],
374 "ACTIVE" =>
$ar[
"ACTIVE"],
381 "PROPERTY_ID" =>
$ar[
"PROPERTY_ID"],
382 "SMART_FILTER" =>
"N",
383 "DISPLAY_TYPE" => $DISPLAY_TYPE,
384 "DISPLAY_EXPANDED" =>
$ar[
"DISPLAY_EXPANDED"],
385 "FILTER_HINT" =>
$ar[
"FILTER_HINT"],
386 "INHERITED" => $SECTION_ID == 0 && !$bNewSection?
"N" :
"Y",
387 "INHERITED_FROM" => 0,
388 "SORT" =>
$ar[
"SORT"],
389 "LEFT_MARGIN" =>
$ar[
"LEFT_MARGIN"],
390 "LINK_TITLE" =>
$ar[
"LINK_TITLE"],
391 "PROPERTY_TYPE" =>
$ar[
"PROPERTY_TYPE"],
392 "USER_TYPE" =>
$ar[
"USER_TYPE"],
393 "ACTIVE" =>
$ar[
"ACTIVE"],
404 BSP.SECTION_ID LINK_ID,
407 BSP.DISPLAY_EXPANDED,
417 INNER JOIN b_iblock_property BP ON BP.IBLOCK_ID = B.ID
418 INNER JOIN b_iblock_section M ON M.ID = ".$SECTION_ID.
"
419 INNER JOIN b_iblock_section BS ON BS.IBLOCK_ID = M.IBLOCK_ID
420 AND M.LEFT_MARGIN >= BS.LEFT_MARGIN
421 AND M.RIGHT_MARGIN <= BS.RIGHT_MARGIN
422 INNER JOIN b_iblock_section_property BSP ON BSP.IBLOCK_ID = BS.IBLOCK_ID AND BSP.SECTION_ID = BS.ID AND BSP.PROPERTY_ID = BP.ID
426 BP.SORT ASC, BP.ID ASC, BS.LEFT_MARGIN ASC
428 while (
$ar =
$rs->Fetch())
430 $displayTypesAvailable = self::getDisplayTypes(
$ar[
"PROPERTY_TYPE"],
$ar[
"USER_TYPE"]);
431 if (isset($displayTypesAvailable[
$ar[
"DISPLAY_TYPE"]]))
432 $DISPLAY_TYPE =
$ar[
"DISPLAY_TYPE"];
434 $DISPLAY_TYPE = key($displayTypesAvailable);
437 "PROPERTY_ID" =>
$ar[
"PROPERTY_ID"],
438 "SMART_FILTER" =>
$ar[
"SMART_FILTER"],
439 "DISPLAY_TYPE" => $DISPLAY_TYPE,
440 "DISPLAY_EXPANDED" =>
$ar[
"DISPLAY_EXPANDED"],
441 "FILTER_HINT" =>
$ar[
"FILTER_HINT"],
442 "INHERITED" => $SECTION_ID ==
$ar[
"LINK_ID"] ?
"N" :
"Y",
443 "INHERITED_FROM" =>
$ar[
"LINK_ID"],
444 "SORT" =>
$ar[
"SORT"],
445 "LEFT_MARGIN" =>
$ar[
"LEFT_MARGIN"],
446 "LINK_TITLE" =>
$ar[
"LINK_TITLE"],
447 "PROPERTY_TYPE" =>
$ar[
"PROPERTY_TYPE"],
448 "USER_TYPE" =>
$ar[
"USER_TYPE"],
449 "ACTIVE" =>
$ar[
"ACTIVE"],
460 "PROPERTY_ID" => SORT_ASC,
478 $property_type ==
"S"
479 && $user_type ==
"directory"
492 $property_type ==
"S"
493 && $user_type ==
"DateTime"
504 $property_type ==
"S"
505 || $property_type ==
"L"
506 || $property_type ==
"E"
507 || $property_type ==
"G"
517 $property_type ==
"N"
540 function getDisplayTypes(property_type, user_type)
544 && user_type == "directory"
548 "F": "'.GetMessageJS(
"SP_DISPLAY_TYPE_F").
'",
558 || property_type == "L"
559 || property_type == "E"
560 || property_type == "G"
589 if(
$a[
"SORT"] > $b[
"SORT"])
599 if ($filterHint ===
null)
603 $cleanHint = trim($filterHint);
604 if ($cleanHint ===
'')
613 $TextParser->ApplyDoubleEncode(
false);
616 $cleanHint = $TextParser->SanitizeHtml($cleanHint);
617 if (preg_match(
'/^(<br>)+$/', $cleanHint))
static markAsInvalid($iblockId)
static deleteIndex($iblockId)
static sortByColumn(array &$array, $columns, $callbacks='', $defaultValueIfNotSetValue=null, $preserveKeys=false)
static CheckProperty($SECTION_ID, $PROPERTY_ID)
static CleanIBlockLinks(int $iblockId)
static DeleteBySection($SECTION_ID, $PROPERTY_ID=null)
static cleanFilterHint(?string $filterHint)
static DeleteByIBlock($IBLOCK_ID)
static GetArray($IBLOCK_ID, $SECTION_ID=0, $bNewSection=false)
static Delete($SECTION_ID, $PROPERTY_ID)
static getDisplayTypes($property_type, $user_type)
static HasIBlockLinks($IBLOCK_ID)
static getDisplayTypesJsFunction()
static Add($SECTION_ID, $PROPERTY_ID, $arLink=array())
static Set($SECTION_ID, $PROPERTY_ID, $arLink=array())
static DeleteByProperty($PROPERTY_ID)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
GetMessageJS($name, $aReplace=false)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)