• Модуль: highloadblock
  • Путь к файлу: ~/bitrix/modules/highloadblock/classes/general/cusertypehlblock.php
  • Класс: CUserTypeHlblock
  • Вызов: CUserTypeHlblock::getHlRows
static function getHlRows($userfield, $clearValues = false): array
{
	global $USER_FIELD_MANAGER;

	$rows = array();

	$hlblock_id = (int)$userfield['SETTINGS']['HLBLOCK_ID'];
	$hlfield_id = (int)$userfield['SETTINGS']['HLFIELD_ID'];
	if ($hlfield_id <= 0)
	{
		$hlfield_id = 0;
	}

	if (!empty($hlblock_id))
	{
		$hlblock = BitrixHighloadblockHighloadBlockTable::getById($hlblock_id)->fetch();
	}

	if (!empty($hlblock))
	{
		$userfield = null;

		if ($hlfield_id > 0)
		{
			$iterator = MainUserFieldTable::getList([
				'select' => [
					'*',
				],
				'filter' => [
					'=ENTITY_ID' => HighloadBlockTable::compileEntityId($hlblock['ID']),
					'=ID' => $hlfield_id,
				],
			]);
			$row = $iterator->fetch();
			unset($iterator);
			if (!empty($row))
			{
				$row['USER_TYPE'] = $USER_FIELD_MANAGER->GetUserType($row['USER_TYPE_ID']);
				$userfield = $row;
			}
			else
			{
				$hlfield_id = 0;
			}
		}

		if ($hlfield_id == 0)
		{
			$userfield = array('FIELD_NAME' => 'ID');
		}

		if ($userfield)
		{
			// validated successfully. get data
			$hlDataClass = BitrixHighloadblockHighloadBlockTable::compileEntity($hlblock)->getDataClass();
			$rows = $hlDataClass::getList(array(
				'select' => array('ID', $userfield['FIELD_NAME']),
				'order' => 'ID'
			))->fetchAll();

			foreach ($rows as &$row)
			{
				$row['ID'] = (int)$row['ID'];
				if ($userfield['FIELD_NAME'] == 'ID')
				{
					$row['VALUE'] = $row['ID'];
				}
				else
				{
					//see #0088117
					if ($userfield['USER_TYPE_ID'] != 'enumeration' && $clearValues)
					{
						$row['VALUE'] = $row[$userfield['FIELD_NAME']];
					}
					else
					{
						$row['VALUE'] = $USER_FIELD_MANAGER->getListView($userfield, $row[$userfield['FIELD_NAME']]);
					}
					$row['VALUE'] .= ' ['.$row['ID'].']';
				}
			}
		}
	}

	return $rows;
}