Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Converter.php
Go to the documentation of this file.
1 <?php
7 
9 
13 class Converter implements ConverterInterface
14 {
21  public function convert($source)
22  {
23  $result = [];
24  if ($source->documentElement->hasChildNodes()) {
26  foreach ($source->documentElement->childNodes as $child) {
27  if ($this->hasNodeElement($child)) {
28  $id = $child->getAttribute('id');
29  $result[$id] = [
30  'events' => [],
31  'relations' => []
32  ];
34  foreach ($child->childNodes as $paymentChild) {
35  switch ($paymentChild->nodeName) {
36  case 'events':
37  $selector = $paymentChild->getAttribute('selector');
38  $result[$id]['events'][$selector] = $this->createEvents($paymentChild);
39  break;
40  case 'relation':
41  $result[$id]['relations'] += $this->createRelation($paymentChild);
42  break;
43  }
44  }
45  }
46  }
47  }
48 
49  return $result;
50  }
51 
58  protected function createEvents(\DOMElement $node)
59  {
60  $result = [];
61  foreach ($node->childNodes as $child) {
63  if ($this->hasNodeElement($child)) {
64  $result[$child->getAttribute('name')] = [
65  'value' => $child->getAttribute('value'),
66  'predicate' => $this->createPredicate($child),
67  ];
68  }
69  }
70 
71  return $result;
72  }
73 
80  protected function createPredicate(\DOMElement $node)
81  {
82  $result = [];
83  foreach ($node->childNodes as $child) {
85  if ($this->hasNodeElement($child)) {
86  $result = [
87  'name' => $child->getAttribute('name'),
88  'message' => __($child->getAttribute('message')),
89  'event' => $child->getAttribute('event'),
90  'argument' => $this->createArgument($child),
91  ];
92  }
93  }
94 
95  return $result;
96  }
97 
104  protected function createRelation(\DOMElement $node)
105  {
106  $result = [];
107  foreach ($node->childNodes as $child) {
109  if ($this->hasNodeElement($child)) {
110  $result[$child->getAttribute('type')][] = [
111  'event' => $child->getAttribute('event'),
112  'argument' => $this->createArgument($child),
113  ];
114  }
115  }
116 
117  return [$node->getAttribute('target') => $result];
118  }
119 
126  protected function createArgument(\DOMElement $node)
127  {
128  $result = [];
129  foreach ($node->childNodes as $child) {
131  if ($this->hasNodeElement($child)) {
132  $result[$child->getAttribute('name')] = $child->textContent;
133  }
134  }
135 
136  return $result;
137  }
138 
145  protected function hasNodeElement(\DOMNode $node)
146  {
147  switch ($node->nodeType) {
148  case XML_TEXT_NODE:
149  case XML_COMMENT_NODE:
150  case XML_CDATA_SECTION_NODE:
151  return false;
152  }
153 
154  return true;
155  }
156 }
$id
Definition: fieldset.phtml:14
$source
Definition: source.php:23
__()
Definition: __.php:13