• Модуль: documentgenerator
  • Путь к файлу: ~/bitrix/modules/documentgenerator/lib/dataprovidermanager.php
  • Класс: BitrixDocumentGeneratorDataProviderManager
  • Вызов: DataProviderManager::getArray
public function getArray(DataProvider $dataProvider, array $params = [], array $stack = []): array
{
	$result = [];
	if(in_array(get_class($dataProvider), $stack, true))
	{
		return $result;
	}
	$stack[] = get_class($dataProvider);

	foreach($dataProvider->getFields() as $placeholder => $field)
	{
		$value = $dataProvider->getValue($placeholder);
		if(isset($params['rawValue']) && $params['rawValue'] === true && $value instanceof Value)
		{
			$value = $value->getValue();
		}
		elseif($value instanceof ArrayDataProvider && $value->getItemKey())
		{
			$values = $this->getArray($value, $params, $stack);
			foreach($value as $item)
			{
				$values[$value->getItemKey()][] = $this->getArray($item, $params, $stack);
			}
			$value = $values;
		}
		elseif($value instanceof DataProvider)
		{
			$value = $this->getArray($value, $params, $stack);
		}
		elseif(is_array($value))
		{
			if(isset($params['listAsArray']) && $params['listAsArray'] === true)
			{

			}
			elseif(isset($field['PROVIDER']))
			{
				$value = $this->getValueFromList($value);
				$value = $this->createDataProvider($field, $value, $dataProvider, $placeholder);
				if($value instanceof DataProvider)
				{
					$value = $this->getArray($value, $params, $stack);
				}
				else
				{
					$value = null;
				}
			}
		}
		$result[$placeholder] = $value;
	}

	return $result;
}