Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ConfigOptionsList.php
Go to the documentation of this file.
1 <?php
7 
13 
18 {
22  const INPUT_KEY_QUEUE_AMQP_HOST = 'amqp-host';
23  const INPUT_KEY_QUEUE_AMQP_PORT = 'amqp-port';
24  const INPUT_KEY_QUEUE_AMQP_USER = 'amqp-user';
25  const INPUT_KEY_QUEUE_AMQP_PASSWORD = 'amqp-password';
26  const INPUT_KEY_QUEUE_AMQP_VIRTUAL_HOST = 'amqp-virtualhost';
27  const INPUT_KEY_QUEUE_AMQP_SSL = 'amqp-ssl';
28  const INPUT_KEY_QUEUE_AMQP_SSL_OPTIONS = 'amqp-ssl-options';
29 
33  const CONFIG_PATH_QUEUE_AMQP_HOST = 'queue/amqp/host';
34  const CONFIG_PATH_QUEUE_AMQP_PORT = 'queue/amqp/port';
35  const CONFIG_PATH_QUEUE_AMQP_USER = 'queue/amqp/user';
36  const CONFIG_PATH_QUEUE_AMQP_PASSWORD = 'queue/amqp/password';
37  const CONFIG_PATH_QUEUE_AMQP_VIRTUAL_HOST = 'queue/amqp/virtualhost';
38  const CONFIG_PATH_QUEUE_AMQP_SSL = 'queue/amqp/ssl';
39  const CONFIG_PATH_QUEUE_AMQP_SSL_OPTIONS = 'queue/amqp/ssl_options';
40 
44  const DEFAULT_AMQP_HOST = '';
45  const DEFAULT_AMQP_PORT = '5672';
46  const DEFAULT_AMQP_USER = '';
49  const DEFAULT_AMQP_SSL = '';
50 
54  private $connectionValidator;
55 
61  public function __construct(ConnectionValidator $connectionValidator)
62  {
63  $this->connectionValidator = $connectionValidator;
64  }
65 
69  public function getOptions()
70  {
71  return [
72  new TextConfigOption(
73  self::INPUT_KEY_QUEUE_AMQP_HOST,
75  self::CONFIG_PATH_QUEUE_AMQP_HOST,
76  'Amqp server host',
77  self::DEFAULT_AMQP_HOST
78  ),
79  new TextConfigOption(
80  self::INPUT_KEY_QUEUE_AMQP_PORT,
82  self::CONFIG_PATH_QUEUE_AMQP_PORT,
83  'Amqp server port',
84  self::DEFAULT_AMQP_PORT
85  ),
86  new TextConfigOption(
87  self::INPUT_KEY_QUEUE_AMQP_USER,
89  self::CONFIG_PATH_QUEUE_AMQP_USER,
90  'Amqp server username',
91  self::DEFAULT_AMQP_USER
92  ),
93  new TextConfigOption(
94  self::INPUT_KEY_QUEUE_AMQP_PASSWORD,
96  self::CONFIG_PATH_QUEUE_AMQP_PASSWORD,
97  'Amqp server password',
98  self::DEFAULT_AMQP_PASSWORD
99  ),
100  new TextConfigOption(
101  self::INPUT_KEY_QUEUE_AMQP_VIRTUAL_HOST,
103  self::CONFIG_PATH_QUEUE_AMQP_VIRTUAL_HOST,
104  'Amqp virtualhost',
105  self::DEFAULT_AMQP_VIRTUAL_HOST
106  ),
107  new TextConfigOption(
108  self::INPUT_KEY_QUEUE_AMQP_SSL,
110  self::CONFIG_PATH_QUEUE_AMQP_SSL,
111  'Amqp SSL',
112  self::DEFAULT_AMQP_SSL
113  ),
114  new TextConfigOption(
115  self::INPUT_KEY_QUEUE_AMQP_SSL_OPTIONS,
117  self::CONFIG_PATH_QUEUE_AMQP_SSL_OPTIONS,
118  'Amqp SSL Options (JSON)',
119  self::DEFAULT_AMQP_SSL
120  ),
121  ];
122  }
123 
129  {
131 
132  if (!$this->isDataEmpty($data, self::INPUT_KEY_QUEUE_AMQP_HOST)) {
133  $configData->set(self::CONFIG_PATH_QUEUE_AMQP_HOST, $data[self::INPUT_KEY_QUEUE_AMQP_HOST]);
134  if (!$this->isDataEmpty($data, self::INPUT_KEY_QUEUE_AMQP_PORT)) {
135  $configData->set(self::CONFIG_PATH_QUEUE_AMQP_PORT, $data[self::INPUT_KEY_QUEUE_AMQP_PORT]);
136  }
137  if (!$this->isDataEmpty($data, self::INPUT_KEY_QUEUE_AMQP_USER)) {
138  $configData->set(self::CONFIG_PATH_QUEUE_AMQP_USER, $data[self::INPUT_KEY_QUEUE_AMQP_USER]);
139  }
140  if (!$this->isDataEmpty($data, self::INPUT_KEY_QUEUE_AMQP_PASSWORD)) {
141  $configData->set(self::CONFIG_PATH_QUEUE_AMQP_PASSWORD, $data[self::INPUT_KEY_QUEUE_AMQP_PASSWORD]);
142  }
143  if (!$this->isDataEmpty($data, self::INPUT_KEY_QUEUE_AMQP_VIRTUAL_HOST)) {
144  $configData->set(
145  self::CONFIG_PATH_QUEUE_AMQP_VIRTUAL_HOST,
146  $data[self::INPUT_KEY_QUEUE_AMQP_VIRTUAL_HOST]
147  );
148  }
149  if (!$this->isDataEmpty($data, self::INPUT_KEY_QUEUE_AMQP_SSL)) {
150  $configData->set(self::CONFIG_PATH_QUEUE_AMQP_SSL, $data[self::INPUT_KEY_QUEUE_AMQP_SSL]);
151  }
152  if (!$this->isDataEmpty(
153  $data,
154  self::INPUT_KEY_QUEUE_AMQP_SSL_OPTIONS
155  )) {
156  $options = json_decode(
157  $data[self::INPUT_KEY_QUEUE_AMQP_SSL_OPTIONS],
158  true
159  );
160  if ($options !== null) {
161  $configData->set(
162  self::CONFIG_PATH_QUEUE_AMQP_SSL_OPTIONS,
163  $options
164  );
165  }
166  }
167  }
168 
169  return [$configData];
170  }
171 
176  {
177  $errors = [];
178 
179  if (isset($options[self::INPUT_KEY_QUEUE_AMQP_HOST])
180  && $options[self::INPUT_KEY_QUEUE_AMQP_HOST] !== '') {
181  if (!$this->isDataEmpty(
182  $options,
183  self::INPUT_KEY_QUEUE_AMQP_SSL_OPTIONS
184  )) {
185  $sslOptions = json_decode(
186  $options[self::INPUT_KEY_QUEUE_AMQP_SSL_OPTIONS],
187  true
188  );
189  } else {
190  $sslOptions = null;
191  }
192  $isSslEnabled = !empty($options[self::INPUT_KEY_QUEUE_AMQP_SSL])
194 
195  $result = $this->connectionValidator->isConnectionValid(
196  $options[self::INPUT_KEY_QUEUE_AMQP_HOST],
197  $options[self::INPUT_KEY_QUEUE_AMQP_PORT],
198  $options[self::INPUT_KEY_QUEUE_AMQP_USER],
199  $options[self::INPUT_KEY_QUEUE_AMQP_PASSWORD],
200  $options[self::INPUT_KEY_QUEUE_AMQP_VIRTUAL_HOST],
201  $isSslEnabled,
202  $sslOptions
203  );
204 
205  if (!$result) {
206  $errors[] = "Could not connect to the Amqp Server.";
207  }
208  }
209 
210  return $errors;
211  }
212 
220  private function isDataEmpty(array $data, $key)
221  {
222  if (isset($data[$key]) && $data[$key] !== '') {
223  return false;
224  }
225 
226  return true;
227  }
228 }
createConfig(array $data, DeploymentConfig $deploymentConfig)
$deploymentConfig
validate(array $options, DeploymentConfig $deploymentConfig)
__construct(ConnectionValidator $connectionValidator)
$errors
Definition: overview.phtml:9