Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CompositeReader.php
Go to the documentation of this file.
1 <?php
7 
9 
14 {
20  private $validator;
21 
27  private $readers;
28 
32  private $defaultValueProvider;
33 
41  public function __construct(
42  ValidatorInterface $validator,
43  DefaultValueProvider $defaultValueProvider,
44  array $readers
45  ) {
46  $this->validator = $validator;
47  $this->readers = $readers;
48  $this->defaultValueProvider = $defaultValueProvider;
49  }
50 
57  public function read($scope = null)
58  {
59  $result = [];
60  foreach ($this->readers as $reader) {
61  $result = array_replace_recursive($result, $reader->read($scope));
62  }
63 
64  $result = $this->addDefaultConnection($result);
65 
66  $this->validator->validate($result);
67 
68  foreach ($result as $key => &$value) {
69  //Find enabled connection
70  $connection = null;
71  foreach ($value['connections'] as $connectionConfig) {
72  if (!$connectionConfig['disabled']) {
73  $connection = $connectionConfig;
74  break;
75  }
76  }
77  $value['connection'] = $connection;
78  unset($value['connections']);
79  $result[$key] = $value;
80  }
81  return $result;
82  }
83 
90  private function addDefaultConnection(array $config)
91  {
92  $defaultConnectionName = $this->defaultValueProvider->getConnection();
93  $default = [
94  'name' => $defaultConnectionName,
95  'exchange' => $this->defaultValueProvider->getExchange(),
96  'disabled' => false,
97  ];
98 
99  foreach ($config as &$value) {
100  if (!isset($value['connections']) || empty($value['connections'])) {
101  $value['connections'][$defaultConnectionName] = $default;
102  continue;
103  }
104 
105  $hasActiveConnection = false;
107  foreach ($value['connections'] as $connectionConfig) {
108  if (!$connectionConfig['disabled']) {
109  $hasActiveConnection = true;
110  break;
111  }
112  }
113  if (!$hasActiveConnection) {
114  $value['connections'][$defaultConnectionName] = $default;
115  }
116  }
117  return $config;
118  }
119 }
$config
Definition: fraud_order.php:17
__construct(ValidatorInterface $validator, DefaultValueProvider $defaultValueProvider, array $readers)
$value
Definition: gender.phtml:16
$connection
Definition: bulk.php:13