• Модуль: 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];
	}
}