20 FROM b_iblock_property BP
24 $arSqlSearch =
array();
38 $arSqlSearch[] =
"BP.".$key.
" = '".
$val.
"'";
42 $arSqlSearch[] = CIBlock::FilterCreate(
"BP.".mb_substr(
$key, 1),
$val,
"string",
"E");
46 $arSqlSearch[] =
"UPPER(BP.".$key.
") LIKE UPPER('".
$val.
"')";
50 $arSqlSearch[] =
"BP.XML_ID LIKE '".$val.
"'";
54 $arSqlSearch[] =
"(BP.XML_ID IS NULL OR NOT (BP.XML_ID LIKE '".$val.
"'))";
57 $arSqlSearch[] =
"BP.TMP_ID LIKE '".$val.
"'";
60 $arSqlSearch[] =
"(BP.TMP_ID IS NULL OR NOT (BP.TMP_ID LIKE '".$val.
"'))";
67 $arSqlSearch[] =
"BP.USER_TYPE = '".$ar[1].
"'";
69 $arSqlSearch[] =
"BP.".$key.
" = '".
$val.
"'";
72 $arSqlSearch[] =
"BP.".$key.
" = '".
$val.
"'";
76 case "LINK_IBLOCK_ID":
78 $arSqlSearch[] =
"BP.".$key.
" = ".(int)
$val;
81 $arSqlSearch[] =
"UPPER(B.CODE) = UPPER('".$val.
"')";
89 INNER JOIN b_iblock B ON B.ID = BP.IBLOCK_ID
92 if(!empty($arSqlSearch))
94 WHERE ".implode(
"\n\t\t\t\tAND ", $arSqlSearch).
"
106 $orderKeys =
array();
107 $arSqlOrder =
array();
108 foreach($arOrder as $by =>
$order)
110 $by = mb_strtoupper($by);
111 if (!isset($allowKeys[$by]))
113 if (isset($orderKeys[$by]))
115 $orderKeys[$by] =
true;
118 $arSqlOrder[] =
"BP.".$by.
" ".
$order;
121 if(!empty($arSqlOrder))
123 ORDER BY ".implode(
", ", $arSqlOrder).
"
144 foreach (
GetModuleEvents(
"iblock",
"OnBeforeIBlockPropertyDelete",
true) as $arEvent)
161 foreach (
GetModuleEvents(
"iblock",
"OnIBlockPropertyDelete",
true) as $arEvent)
167 CIBlockSectionPropertyLink::DeleteByProperty(
$ID);
171 $arProperty = $rsProperty->Fetch();
172 if($arProperty[
"VERSION"] == 2)
174 if($arProperty[
"PROPERTY_TYPE"]==
"F")
176 if($arProperty[
"MULTIPLE"]==
"Y")
180 FROM b_iblock_element_prop_m".$arProperty[
"IBLOCK_ID"].
"
181 WHERE IBLOCK_PROPERTY_ID=".
$ID.
"
187 SELECT PROPERTY_".$ID.
" VALUE
188 FROM b_iblock_element_prop_s".$arProperty[
"IBLOCK_ID"].
"
189 WHERE PROPERTY_".
$ID.
" is not null
194 CFile::Delete(
$arr[
"VALUE"]);
196 if(!
$DB->Query(
"DELETE FROM b_iblock_section_element WHERE ADDITIONAL_PROPERTY_ID=".$ID,
true))
200 FROM b_iblock_element_prop_m".$arProperty[
"IBLOCK_ID"].
"
201 WHERE IBLOCK_PROPERTY_ID=".
$ID.
"
203 if(!
$DB->Query($strSql))
205 $arSql = CIBlockProperty::DropColumnSQL(
"b_iblock_element_prop_s".$arProperty[
"IBLOCK_ID"],
array(
"PROPERTY_".
$ID,
"DESCRIPTION_".
$ID));
206 foreach($arSql as $strSql)
208 if(!
$DB->DDL($strSql))
214 $res =
$DB->Query(
"SELECT EP.VALUE FROM b_iblock_property P, b_iblock_element_property EP WHERE P.ID=".
$ID.
" AND P.ID=EP.IBLOCK_PROPERTY_ID AND P.PROPERTY_TYPE='F'");
216 CFile::Delete(
$arr[
"VALUE"]);
217 if(!
$DB->Query(
"DELETE FROM b_iblock_section_element WHERE ADDITIONAL_PROPERTY_ID=".$ID,
true))
219 if(!
$DB->Query(
"DELETE FROM b_iblock_element_property WHERE IBLOCK_PROPERTY_ID=".$ID,
true))
226 CIBlock::clearIblockTagCache($arProperty[
"IBLOCK_ID"]);
230 $res =
$DB->Query(
"DELETE FROM b_iblock_property WHERE ID=".
$ID,
true);
232 foreach (
GetModuleEvents(
"iblock",
"OnAfterIBlockPropertyDelete",
true) as $arEvent)
268 $userTypeId = (string)
$arFields[
'USER_TYPE'];
269 if ($userTypeId !==
'')
273 if (isset($arUserType[
'ConvertToDB']))
277 'DEFAULT_VALUE' =>
true,
279 $arValue = call_user_func_array(
280 $arUserType[
'ConvertToDB'],
286 if (isset($arUserType[
'PrepareSettings']))
288 $arFieldsResult = call_user_func_array(
289 $arUserType[
'PrepareSettings'],
292 if (is_array($arFieldsResult) && array_key_exists(
'USER_TYPE_SETTINGS', $arFieldsResult))
299 $arFields[
'USER_TYPE_SETTINGS'] = serialize($arFieldsResult);
315 $arFields[
'~TIMESTAMP_X'] = $helper->getCurrentDateTimeFunction();
329 $DB->Query(
"DELETE FROM b_iblock_property WHERE ID = ".(
int)
$ID);
332 "#CODE#"=>
"[14]".
$DB->GetErrorSQL(),
346 if(array_key_exists(
"VALUES",
$arFields))
349 if(CIBlock::GetArrayByID(
$arFields[
"IBLOCK_ID"],
"SECTION_PROPERTY") ===
"Y")
352 !array_key_exists(
"SECTION_PROPERTY",
$arFields)
357 "SMART_FILTER" =>
$arFields[
"SMART_FILTER"] ??
null,
359 if (array_key_exists(
"DISPLAY_TYPE",
$arFields))
360 $arLink[
"DISPLAY_TYPE"] =
$arFields[
"DISPLAY_TYPE"];
361 if (array_key_exists(
"DISPLAY_EXPANDED",
$arFields))
362 $arLink[
"DISPLAY_EXPANDED"] =
$arFields[
"DISPLAY_EXPANDED"];
363 if (array_key_exists(
"FILTER_HINT",
$arFields))
364 $arLink[
"FILTER_HINT"] =
$arFields[
"FILTER_HINT"];
365 CIBlockSectionPropertyLink::Add(0,
$ID, $arLink);
376 unset($featureResult);
387 CIBlock::clearIblockTagCache(
$arFields[
"IBLOCK_ID"]);
392 foreach (
GetModuleEvents(
"iblock",
"OnAfterIBlockPropertyAdd",
true) as $arEvent)
403 $this->LAST_ERROR =
"";
407 $this->LAST_ERROR .=
GetMessage(
"IBLOCK_PROPERTY_BAD_NAME").
"<br>";
412 if(mb_strpos(
"0123456789", mb_substr(
$arFields[
"CODE"], 0, 1)) !==
false)
414 if(preg_match(
"/[^A-Za-z0-9_]/",
$arFields[
"CODE"]))
421 $this->LAST_ERROR .=
GetMessage(
"IBLOCK_BAD_BLOCK_ID").
"<br>";
426 $r = CIBlock::GetList(
array(),
array(
"ID"=>
$arFields[
"IBLOCK_ID"],
"CHECK_PERMISSIONS" =>
"N"));
428 $this->LAST_ERROR .=
GetMessage(
"IBLOCK_BAD_BLOCK_ID").
"<br>";
440 isset($arUserType[
'CheckFields'])
441 && (
$ID ===
false || array_key_exists(
'DEFAULT_VALUE',
$arFields))
447 $arError = call_user_func_array(
448 $arUserType[
'CheckFields'],
454 if (!empty($arError) && is_array($arError))
456 $this->LAST_ERROR .= implode(
'<br>', $arError) .
'<br>';
466 $userTypeId = (string)(
$arFields[
'USER_TYPE'] ??
'');
467 if ($userTypeId !==
'')
470 $simpleType = empty($userType);
472 if ($simpleType && isset(
$arFields[
'DEFAULT_VALUE']) && !is_scalar(
$arFields[
'DEFAULT_VALUE']))
474 $this->LAST_ERROR .=
GetMessage(
'IBLOCK_PROPERTY_BAD_DEFAULT_VALUE') .
'<br>';
483 $db_events =
GetModuleEvents(
"iblock",
"OnBeforeIBlockPropertyAdd",
true);
488 $db_events =
GetModuleEvents(
"iblock",
"OnBeforeIBlockPropertyUpdate",
true);
491 foreach($db_events as $arEvent)
494 if($bEventRes===
false)
498 $this->LAST_ERROR .= $err->GetString().
"<br>";
503 $this->LAST_ERROR .=
"Unknown error.<br>";
510 return $this->LAST_ERROR ===
'';
545 $userTypeId = (string)(
$arFields[
'USER_TYPE'] ??
'');
546 if ($userTypeId !==
'')
550 if (!empty($arUserType))
552 if (array_key_exists(
'DEFAULT_VALUE',
$arFields))
554 if (isset($arUserType[
'ConvertToDB']))
558 'DEFAULT_VALUE' =>
true,
560 $arValue = call_user_func_array(
561 $arUserType[
'ConvertToDB'],
569 if (!is_scalar(
$arFields[
'DEFAULT_VALUE']))
576 if (isset($arUserType[
'PrepareSettings']))
578 if (!isset(
$arFields[
"USER_TYPE_SETTINGS"]))
585 'USER_TYPE_SETTINGS',
591 if (!empty($oldData))
593 if (
$arFields[
"USER_TYPE"] == $oldData[
"USER_TYPE"] && !empty($oldData[
"USER_TYPE_SETTINGS"]))
596 is_array($oldData[
"USER_TYPE_SETTINGS"])
597 ? $oldData[
"USER_TYPE_SETTINGS"]
598 : unserialize($oldData[
"USER_TYPE_SETTINGS"], [
'allowed_classes' =>
false])
604 $arFieldsResult = call_user_func_array($arUserType[
"PrepareSettings"],
array(
$arFields));
605 if (is_array($arFieldsResult) && array_key_exists(
'USER_TYPE_SETTINGS', $arFieldsResult))
612 $arFields[
"USER_TYPE_SETTINGS"] = serialize($arFieldsResult);
614 unset($arFieldsResult);
627 if (isset(
$arFields[
"USER_TYPE_SETTINGS"]))
629 if (is_array(
$arFields[
"USER_TYPE_SETTINGS"]))
633 if (!is_scalar(
$arFields[
"USER_TYPE_SETTINGS"]))
646 $arFields[
'~TIMESTAMP_X'] = $helper->getCurrentDateTimeFunction();
649 $strUpdate =
$DB->PrepareUpdate(
"b_iblock_property",
$arFields);
652 $strSql =
"UPDATE b_iblock_property SET ".$strUpdate.
" WHERE ID=".
$ID;
654 if (isset(
$arFields[
'USER_TYPE_SETTINGS']))
656 $bindList[
'USER_TYPE_SETTINGS'] =
$arFields[
'USER_TYPE_SETTINGS'];
658 $DB->QueryBind($strSql, $bindList);
666 && CIBlock::GetArrayByID(
$arFields[
"IBLOCK_ID"],
"SECTION_PROPERTY") ===
"Y"
670 !array_key_exists(
"SECTION_PROPERTY",
$arFields)
675 if (array_key_exists(
"SMART_FILTER",
$arFields))
677 $arLink[
"SMART_FILTER"] =
$arFields[
"SMART_FILTER"];
679 if (array_key_exists(
"DISPLAY_TYPE",
$arFields))
680 $arLink[
"DISPLAY_TYPE"] =
$arFields[
"DISPLAY_TYPE"];
681 if (array_key_exists(
"DISPLAY_EXPANDED",
$arFields))
682 $arLink[
"DISPLAY_EXPANDED"] =
$arFields[
"DISPLAY_EXPANDED"];
683 if (array_key_exists(
"FILTER_HINT",
$arFields))
684 $arLink[
"FILTER_HINT"] =
$arFields[
"FILTER_HINT"];
685 CIBlockSectionPropertyLink::Set(0,
$ID, $arLink);
689 CIBlockSectionPropertyLink::Delete(0,
$ID);
700 unset($featureResult);
709 CIBlock::clearIblockTagCache(
$arFields[
"IBLOCK_ID"]);
718 foreach (
GetModuleEvents(
"iblock",
"OnAfterIBlockPropertyUpdate",
true) as $arEvent)
739 if (is_string($IBLOCK_CODE))
741 $IBLOCK_CODE = trim($IBLOCK_CODE);
742 if ($IBLOCK_CODE !==
'')
744 $iblockCode = $IBLOCK_CODE;
755 '=IBLOCK.CODE' => $iblockCode,
760 $filter[
'=IBLOCK.CODE'] = $iblockCode;
789 $runtime[] = self::getUpperExpressionFields();
799 if (!empty($runtime))
809 if (!is_int(
$ID) && !is_string(
$ID))
815 $iblockCodeList = [];
821 if (is_numeric($value))
823 $value = (int)$value;
826 $iblockIdList[$value] = $value;
829 elseif (is_string($value))
831 $value = trim($value);
834 $iblockCodeList[$value] = $value;
851 if ($iblockCode !==
'')
853 $iblockCodeList[$iblockCode] = $iblockCode;
857 $iblockIdList = array_values($iblockIdList);
858 $iblockCodeList = array_values($iblockCodeList);
860 $cacheId =
$ID .
'|' . implode(
', ', $iblockIdList) .
'|' . implode(
', ', $iblockCodeList);
872 if (!empty($iblockIdList) && !empty($iblockCode))
876 '@ID' => $iblockIdList,
877 '@CODE' => $iblockCodeList
880 elseif (!empty($iblockIdList))
882 $iblockFilter[
'@ID'] = $iblockIdList;
884 elseif (!empty($iblockCodeList))
886 $iblockFilter[
'@CODE'] = $iblockCodeList;
888 if (!empty($iblockFilter))
895 'filter' => $iblockFilter,
910 if (empty($iblockIds))
914 $filter[
'@IBLOCK_ID'] = $iblockIds;
917 unset($iblockFilter);
920 $propertyCode =
null;
921 $propertyFullCode =
null;
922 $existsValuePostfix =
false;
929 $upperId = mb_strtoupper(
$ID);
931 if (preg_match(
'/^([A-Za-z0-9_]+)(_VALUE)$/', $upperId, $preparedId))
933 $existsValuePostfix =
true;
934 $value = (int)$preparedId[1];
937 $propertyId = $value;
941 $propertyCode = $preparedId[1];
942 $propertyFullCode = $preparedId[0];
947 $value = (int)$upperId;
950 $propertyId = $value;
954 $propertyCode = $upperId;
964 if ($propertyId !==
null)
973 $fieldName =
'=CODE';
977 $fieldName =
'=UPPER_PROPERTY_CODE';
978 $runtime[] = self::getUpperExpressionFields();
981 if ($existsValuePostfix)
986 $fieldName => $propertyFullCode,
990 $fieldName => $propertyCode,
997 $filter[$fieldName] = $propertyCode;
1008 if (!empty($runtime))
1010 $params[
'runtime'] = $runtime;
1015 if (!empty($propertyRow))
1017 unset($propertyRow[
'USER_TYPE_SETTINGS_LIST']);
1020 $propertyRow[
'TIMESTAMP_X'] = $propertyRow[
'TIMESTAMP_X']->format(
'Y-m-d H:i:s');
1022 $propertyRow[
'ORIG_ID'] = $propertyRow[
'ID'];
1023 $propertyRow[
'IS_CODE_UNIQUE'] =
true;
1024 $propertyRow[
'IS_VERSION_MIXED'] =
false;
1028 $propertyRow[
'IS_CODE_UNIQUE'] =
false;
1029 if ($propertyRow[
'VERSION'] !== $row[
'VERSION'])
1031 $propertyRow[
'IS_VERSION_MIXED'] =
true;
1039 && mb_strtoupper((
string)$propertyRow[
'CODE']) === $propertyCode
1042 $propertyRow[
'ID'] = mb_substr(
$ID, 0, -6);
1046 $propertyRow[
'ID'] =
$ID;
1053 return $propertyRow;
1056 private static function getUpperExpressionFields():
Main\
ORM\
Fields\ExpressionField
1059 'UPPER_PROPERTY_CODE',
1078 $strSqlSearch .=
"AND (BPE.ID=".intval(
$val).
")\n";
1081 $strSqlSearch .=
"AND (BP.IBLOCK_ID=".intval(
$val).
")\n";
1084 $strSqlSearch .=
"AND (BPE.VALUE LIKE '".$DB->ForSql(
$val).
"')\n";
1088 $strSqlSearch .=
"AND (BPE.XML_ID LIKE '".$DB->ForSql(
$val).
"')\n";
1094 $arSqlOrder =
array();
1095 if(is_array($arOrder))
1097 foreach($arOrder as $by =>
$order)
1099 $by = mb_strtolower($by);
1105 $arSqlOrder[
"BPE.VALUE"] =
"BPE.VALUE ".$order;
1107 $arSqlOrder[
"BPE.ID"] =
"BPE.ID ".$order;
1108 elseif ($by ==
"external_id")
1109 $arSqlOrder[
"BPE.XML_ID"] =
"BPE.XML_ID ".$order;
1111 $arSqlOrder[
"BPE.XML_ID"] =
"BPE.XML_ID ".$order;
1113 $arSqlOrder[
"BPE.SORT"] =
"BPE.SORT ".$order;
1117 if(empty($arSqlOrder))
1120 $strSqlOrder =
" ORDER BY ".implode(
", ", $arSqlOrder);
1123 SELECT BPE.*, BPE.XML_ID as EXTERNAL_ID
1125 b_iblock_property_enum BPE
1126 INNER JOIN b_iblock_property BP ON BP.ID = BPE.PROPERTY_ID
1129 is_numeric(mb_substr($PROP_ID, 0, 1))?
1130 "BP.ID = ".(
int)$PROP_ID:
1131 "BP.CODE = '".
$DB->ForSql($PROP_ID).
"'"
1143 if(!is_array($arVALUES) || (empty($arVALUES) && $bForceDelete))
1149 $ar_XML_ID =
array();
1153 $ar_XML_ID[rtrim(
$res[
"XML_ID"],
" ")] =
$res[
"ID"];
1160 if($arProp = $rsProp->Fetch())
1162 if($arProp[
"VERSION"] == 1)
1163 $sqlWhere =
"AND NOT EXISTS (
1165 FROM b_iblock_element_property
1166 WHERE b_iblock_element_property.IBLOCK_PROPERTY_ID = b_iblock_property_enum.PROPERTY_ID
1167 AND b_iblock_element_property.VALUE_ENUM = b_iblock_property_enum.ID
1169 elseif($arProp[
"MULTIPLE"] ==
"N")
1170 $sqlWhere =
"AND NOT EXISTS (
1172 FROM b_iblock_element_prop_s".$arProp[
"IBLOCK_ID"].
"
1173 WHERE b_iblock_element_prop_s".$arProp[
"IBLOCK_ID"].
".PROPERTY_".$arProp[
"ID"].
" = b_iblock_property_enum.ID
1176 $sqlWhere =
"AND NOT EXISTS (
1178 FROM b_iblock_element_prop_m".$arProp[
"IBLOCK_ID"].
"
1179 WHERE b_iblock_element_prop_m".$arProp[
"IBLOCK_ID"].
".IBLOCK_PROPERTY_ID = b_iblock_property_enum.PROPERTY_ID
1180 AND b_iblock_element_prop_m".$arProp[
"IBLOCK_ID"].
".VALUE_ENUM = b_iblock_property_enum.ID
1188 $VALUE = $arVALUES[
$res[
"ID"]];
1189 $VAL = is_array($VALUE)? $VALUE[
"VALUE"]: $VALUE;
1190 UnSet($arVALUES[
$res[
"ID"]]);
1192 if((
string)$VAL ==
'')
1194 unset($ar_XML_ID[rtrim(
$res[
"XML_ID"],
" ")]);
1197 DELETE FROM b_iblock_property_enum
1198 WHERE ID=".$res[
"ID"].
"
1202 $DB->Query($strSql);
1209 if(is_array($VALUE))
1211 if(array_key_exists(
"DEF", $VALUE))
1212 $DEF = $VALUE[
"DEF"]==
"Y"?
"Y":
"N";
1214 if(array_key_exists(
"SORT", $VALUE))
1215 $SORT = intval($VALUE[
"SORT"]);
1219 if(array_key_exists(
"XML_ID", $VALUE) && mb_strlen($VALUE[
"XML_ID"]))
1220 $XML_ID = mb_substr(rtrim($VALUE[
"XML_ID"],
" "), 0, 200);
1221 elseif(array_key_exists(
"EXTERNAL_ID", $VALUE) && mb_strlen($VALUE[
"EXTERNAL_ID"]))
1222 $XML_ID = mb_substr(rtrim($VALUE[
"EXTERNAL_ID"],
" "), 0, 200);
1227 unset($ar_XML_ID[mb_strtolower(rtrim(
$res[
"XML_ID"],
" "))]);
1228 if (isset($ar_XML_ID[mb_strtolower($XML_ID)]))
1229 $XML_ID = md5(uniqid(
""));
1230 $ar_XML_ID[mb_strtolower($XML_ID)] =
$res[
"ID"];
1234 UPDATE b_iblock_property_enum
1236 ".($DEF?
" DEF = '".$DEF.
"', ":
"").
"
1237 ".($SORT?
" SORT = ".$SORT.
", ":
"").
"
1238 ".($XML_ID?
" XML_ID = '".$DB->ForSQL($XML_ID, 200).
"', ":
"").
"
1239 VALUE = '".
$DB->ForSQL($VAL, 255).
"'
1244 $DB->Query($strSql);
1248 foreach($arVALUES as $id => $VALUE)
1250 $VAL = is_array($VALUE)? $VALUE[
"VALUE"]: $VALUE;
1251 if((
string)$id <>
'' && (
string)$VAL <>
'')
1256 if(is_array($VALUE))
1258 if(array_key_exists(
"DEF", $VALUE))
1259 $DEF = $VALUE[
"DEF"]==
"Y"?
"Y":
"N";
1261 if(array_key_exists(
"SORT", $VALUE))
1262 $SORT = intval($VALUE[
"SORT"]);
1266 if(array_key_exists(
"XML_ID", $VALUE) && mb_strlen($VALUE[
"XML_ID"]))
1267 $XML_ID = mb_substr(rtrim($VALUE[
"XML_ID"],
" "), 0, 200);
1268 elseif(array_key_exists(
"EXTERNAL_ID", $VALUE) && mb_strlen($VALUE[
"EXTERNAL_ID"]))
1269 $XML_ID = mb_substr(rtrim($VALUE[
"EXTERNAL_ID"],
" "), 0, 200);
1274 if (isset($ar_XML_ID[mb_strtolower($XML_ID)]))
1275 $XML_ID = md5(uniqid(
"",
true));
1279 $XML_ID = md5(uniqid(
"",
true));
1281 $ar_XML_ID[mb_strtolower($XML_ID)] = 0;
1284 INSERT INTO b_iblock_property_enum
1287 ".($DEF?
",DEF":
"").
"
1288 ".($SORT?
",SORT":
"").
"
1293 ".($DEF?
",'".$DEF.
"'":
"").
"
1294 ".($SORT?
",".$SORT.
"":
"").
"
1295 ,'".
$DB->ForSQL($VAL, 255).
"'
1296 ,'".
$DB->ForSQL($XML_ID, 200).
"'
1299 $DB->Query($strSql);
1303 if(CACHED_b_iblock_property_enum !==
false)
1306 if (defined(
"BX_COMP_MANAGED_CACHE"))
1309 Iblock\PropertyEnumerationTable::cleanCache();
1316 static $CACHE =
null;
1321 foreach(
GetModuleEvents(
"iblock",
"OnIBlockPropertyBuildList",
true) as $arEvent)
1324 if (is_array(
$res) && array_key_exists(
"USER_TYPE",
$res))
1331 if($USER_TYPE !==
false)
1333 if(array_key_exists($USER_TYPE, $CACHE))
1334 return $CACHE[$USER_TYPE];
1346 return GetMessage(
"IBLOCK_PROPERTY_CHANGE_ERROR",
array(
"#ID#"=>
$ID,
"#CODE#"=>$CODE));
1495 && isset($value[
'VALUE'])
if($_SERVER $defaultValue['REQUEST_METHOD']==="GET" &&!empty($RestoreDefaults) && $bizprocPerms==="W" &&check_bitrix_sessid())
static setFeatures($propertyId, array $features)
static addFeatures($propertyId, array $features)
static deleteByProperty($property)
static getConnection($name="")
static getRow(array $parameters)
static getList(array $parameters=array())
static _Sequence_GetUserTypeDescription()
static _SKU_GetUserTypeDescription()
static _DateTime_GetUserTypeDescription()
prepareDefaultValue(mixed $value)
Update($ID, $arFields, $bCheckDescription=false)
FormatUpdateError($ID, $CODE)
static _SectionAutoComplete_GetUserTypeDescription()
_Update($ID, $arFields, $bCheckDescription=false)
static GetPropertyEnum($PROP_ID, $arOrder=array("SORT"=>"asc"), $arFilter=array())
static GetList($arOrder=Array(), $arFilter=Array())
static GetUserType($USER_TYPE=false)
static GetPropertyArray($ID, $IBLOCK_ID, $bCached=true)
static DropColumnSQL($strTable, $arColumns)
static GetByID($ID, $IBLOCK_ID=false, $IBLOCK_CODE=false)
UpdateEnum($ID, $arVALUES, $bForceDelete=true)
CheckFields(&$arFields, $ID=false, $bFormValidate=false)
static _ElementList_GetUserTypeDescription()
static _FileMan_GetUserTypeDescription()
static _ElementAutoComplete_GetUserTypeDescription()
static _Date_GetUserTypeDescription()
static _XmlID_GetUserTypeDescription()
static _HTML_GetUserTypeDescription()
static GetUserTypeDescription()
static GetUserTypeDescription()
static GetUserTypeDescription()
static GetUserTypeDescription()
static DeleteByPropertyID($PROPERTY_ID, $bIgnoreError=false)
static GetUserTypeDescription()
static GetUserTypeDescription()
static GetUserTypeDescription()
static GetUserTypeDescription()
static GetUserTypeDescription()
static GetUserTypeDescription()
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
global $IBLOCK_CACHE_PROPERTY
global $BX_IBLOCK_PROP_CACHE
ExecuteModuleEventEx($arEvent, $arParams=[])
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']