1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Analytics\Model\Config;
/**
* Transforms Analytics configuration data.
*/
class Mapper
{
/**
* Transforms Analytics configuration data.
*
* @param array $configData
* @return array $files
* $files = [
* 'file_name' => [
* 'name' => 'file_name',
* 'providers' => [
* 'reportProvider' => [
* 'name' => 'report_provider_name',
* 'class' => 'Magento\Analytics\ReportXml\ReportProvider',
* 'parameters' =>[
* 'name' => 'report_name',
* ],
* ],
* 'customProvider' => [
* 'name' => 'custom_provider_name',
* 'class' => 'Magento\Analytics\Model\CustomProvider',
* ],
* ],
* ]
* ];
*/
public function execute($configData)
{
if (!isset($configData['config'][0]['file'])) {
return [];
}
$files = [];
foreach ($configData['config'][0]['file'] as $fileData) {
/** just one set of providers is allowed by xsd */
$providers = reset($fileData['providers']);
foreach ($providers as $providerType => $providerDataSet) {
/** just one set of provider data is allowed by xsd */
$providerData = reset($providerDataSet);
/** just one set of parameters is allowed by xsd */
$providerData['parameters'] = !empty($providerData['parameters'])
? reset($providerData['parameters'])
: [];
$providerData['parameters'] = array_map(
'reset',
$providerData['parameters']
);
$providers[$providerType] = $providerData;
}
$files[$fileData['name']] = $fileData;
$files[$fileData['name']]['providers'] = $providers;
}
return $files;
}
}