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