- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblockpropresult.php
- Класс: CIBlockPropertyResult
- Вызов: CIBlockPropertyResult::setIBlock
function setIBlock($IBLOCK_ID, $propertyID = array())
{
$this->VERSION = CIBlockElement::GetIBVersion($IBLOCK_ID);
if (!empty($propertyID))
{
Collection::normalizeArrayValuesByInt($propertyID);
}
$this->arProperties = array();
if (
!empty($propertyID)
|| (empty($propertyID) && !isset(self::$propertiesCache[$IBLOCK_ID]))
)
{
$propertyIterator = PropertyTable::getList(array(
'select' => array(
'ID', 'IBLOCK_ID', 'NAME', 'ACTIVE', 'SORT', 'CODE', 'DEFAULT_VALUE', 'PROPERTY_TYPE',
'MULTIPLE', 'LINK_IBLOCK_ID', 'VERSION', 'USER_TYPE', 'USER_TYPE_SETTINGS'
),
'filter' => (empty($propertyID) ? array('IBLOCK_ID' => $IBLOCK_ID) : array('ID' => $propertyID, 'IBLOCK_ID' => $IBLOCK_ID)),
'order' => array('ID' => 'ASC')
));
while ($property = $propertyIterator->fetch())
{
if ($property['USER_TYPE'])
{
$userType = CIBlockProperty::GetUserType($property['USER_TYPE']);
if (isset($userType["ConvertFromDB"]))
{
if (array_key_exists("DEFAULT_VALUE", $property))
{
$value = array("VALUE" => $property["DEFAULT_VALUE"], "DESCRIPTION" => "");
$value = call_user_func_array($userType["ConvertFromDB"], array($property, $value));
$property["DEFAULT_VALUE"] = $value["VALUE"] ?? null;
}
}
}
if ($property['USER_TYPE_SETTINGS'] !== '' && $property['USER_TYPE_SETTINGS'] !== null)
$property['USER_TYPE_SETTINGS'] = unserialize($property['USER_TYPE_SETTINGS'], ['allowed_classes' => false]);
$this->arProperties[$property['ID']] = $property;
}
unset($property, $propertyIterator);
if (empty($propertyID))
{
self::$propertiesCache[$IBLOCK_ID] = $this->arProperties;
}
}
else
{
$this->arProperties = self::$propertiesCache[$IBLOCK_ID];
}
}