• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/lib/grid/row/assembler/property/listfieldassembler.php
  • Класс: BitrixIblockGridRowAssemblerPropertyListFieldAssembler
  • Вызов: ListFieldAssembler::prepareRow
protected function prepareRow(array $row): array
{
	if (!self::isElementRow($row))
	{
		return $row;
	}

	$columnIds = $this->getColumnIds();
	if (empty($columnIds))
	{
		return $row;
	}

	$row['columns'] ??= [];

	$columnToPropertyIds = ElementPropertyProvider::getPropertyIdsFromColumnsIds($columnIds);
	foreach ($columnToPropertyIds as $columnId => $propertyId)
	{
		// edit
		$value = $this->getColumnValues($row['data'][$columnId] ?? null, 'VALUE_ENUM_ID');
		MainTypeCollection::normalizeArrayValuesByInt($value, false);
		if ($this->isMultipleColumn($columnId))
		{
			$row['data']['~' . $columnId] = $value;
		}
		else
		{
			$row['data']['~' . $columnId] = empty($value) ? '' : reset($value);
		}

		// view
		$value = $this->getColumnValues($row['data'][$columnId] ?? null, 'VALUE');
		$viewValue = '';
		if (!empty($value))
		{
			$viewValue = join(' / ', $value);
		}
		$viewValue = MainTextHtmlFilter::encode($viewValue);
		$row['columns'][$columnId] ??= $viewValue;
	}

	/*
	$columnToPropertyIds = ElementPropertyProvider::getPropertyIdsFromColumnsIds($columnIds);
	foreach ($columnToPropertyIds as $columnId => $propertyId)
	{
		if (isset($row['columns'][$columnId]))
		{
			continue;
		}

		$value = $row['data'][$columnId] ?? null;
		if (is_array($value))
		{
			$tmp = [];
			foreach ($value as $valueItem)
			{
				if (is_numeric($valueItem))
				{
					$tmp[] = $this->getEnumValue($propertyId, $valueItem);
				}
				else
				{
					$tmp[] = $valueItem;
				}

			}

			$value = join(' / ', $tmp);
		}
		elseif (is_numeric($value))
		{
			$value = $this->getEnumValue($propertyId, $value);
		}

		$row['columns'][$columnId] = $value;
	}

	*/

	return $row;
}