• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/lib/grid/row/assembler/property/basefieldassembler.php
  • Класс: BitrixIblockGridRowAssemblerPropertyBaseFieldAssembler
  • Вызов: BaseFieldAssembler::getPropertyFilter
protected function getPropertyFilter(): array;

abstract protected function validateProperty(array $property): ?array;

protected function loadProperties(): void
{
	if (isset($this->properties))
	{
		return;
	}

	$this->properties = [];
	$iterator = PropertyTable::getList([
		'select' => [
			'ID',
			'IBLOCK_ID',
			'NAME',
			'SORT',
			'DEFAULT_VALUE',
			'PROPERTY_TYPE',
			'ROW_COUNT',
			'COL_COUNT',
			'LIST_TYPE',
			'MULTIPLE',
			'FILE_TYPE',
			'MULTIPLE_CNT',
			'LINK_IBLOCK_ID',
			'WITH_DESCRIPTION',
			'IS_REQUIRED',
			'USER_TYPE',
			'USER_TYPE_SETTINGS_LIST',
			'HINT',
		],
		'filter' => array_merge(
			[
				'=IBLOCK_ID' => $this->getIblockId(),
				'=ACTIVE' => 'Y',
			],
			$this->getPropertyFilter()
		),
		'order' => [
			'SORT' => 'ASC',
			'NAME' => 'ASC',
			'ID' => 'ASC',
		],
		'cache' => [
			'ttl' => 86400,
		],
	]);

	while ($row = $iterator->fetch())
	{
		$row['ID'] = (int)$row['ID'];
		$row['IBLOCK_ID'] = (int)$row['IBLOCK_ID'];

		$row['USER_TYPE'] = trim((string)$row['USER_TYPE']);
		if ($row['USER_TYPE'] === '')
		{
			$row['USER_TYPE'] = null;
		}

		$row['HINT'] = trim((string)$row['HINT']);
		if ($row['HINT'] === '')
		{
			$row['HINT'] = null;
		}

		$row = $this->validateProperty($row);

		if ($row)
		{
			$this->properties[ElementPropertyProvider::getColumnIdByPropertyId($row['ID'])] = $row;
		}
	}
	unset($row, $iterator);
}