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