Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ScheduledStructure.php
Go to the documentation of this file.
1 <?php
7 
15 {
19  const ELEMENT_NAME = 'elementName';
20  const ELEMENT_PARENT_NAME = 'parentName';
21  const ELEMENT_OFFSET_OR_SIBLING = 'offsetOrSibling';
22  const ELEMENT_IS_AFTER = 'isAfter';
26  private $serializableProperties = [
27  'scheduledStructure',
28  'scheduledData',
29  'scheduledElements',
30  'scheduledMoves',
31  'scheduledRemoves',
32  'scheduledPaths',
33  'elementsToSort',
34  'brokenParent',
35  ];
36 
42  protected $scheduledStructure = [];
43 
49  protected $scheduledData = [];
50 
56  protected $scheduledElements = [];
57 
63  protected $scheduledMoves = [];
64 
70  protected $scheduledRemoves = [];
71 
77  protected $scheduledPaths = [];
78 
84  protected $brokenParent = [];
85 
91  protected $elementsToSort = [];
92 
96  public function __construct(array $data = [])
97  {
98  $this->populateWithArray($data);
99  }
100 
110  public function setElementToSortList($parentName, $elementName, $offsetOrSibling, $isAfter = true)
111  {
112  $this->elementsToSort[$elementName] = [
113  self::ELEMENT_NAME => $elementName,
114  self::ELEMENT_PARENT_NAME => $parentName,
115  self::ELEMENT_OFFSET_OR_SIBLING => $offsetOrSibling,
116  self::ELEMENT_IS_AFTER => $isAfter
117  ];
118  }
119 
125  public function isListToSortEmpty()
126  {
127  return empty($this->elementsToSort);
128  }
129 
137  {
138  unset($this->elementsToSort[$elementName]);
139  }
140 
148  public function getElementToSort($elementName, array $default = [])
149  {
150  return $this->elementsToSort[$elementName] ?? $default;
151  }
152 
158  public function getListToSort()
159  {
160  return $this->elementsToSort;
161  }
162 
168  public function getListToMove()
169  {
170  return array_keys(array_intersect_key($this->scheduledElements, $this->scheduledMoves));
171  }
172 
178  public function getListToRemove()
179  {
180  return array_keys(array_intersect_key(
181  $this->scheduledElements,
182  array_merge($this->scheduledRemoves, $this->brokenParent)
183  ));
184  }
185 
191  public function getElements()
192  {
194  }
195 
203  public function getElement($elementName, $default = [])
204  {
205  return $this->hasElement($elementName) ? $this->scheduledElements[$elementName] : $default;
206  }
207 
213  public function isElementsEmpty()
214  {
215  return empty($this->scheduledElements);
216  }
217 
225  public function setElement($elementName, array $data)
226  {
227  $this->scheduledElements[$elementName] = $data;
228  }
229 
236  public function hasElement($elementName)
237  {
238  return isset($this->scheduledElements[$elementName]);
239  }
240 
247  public function unsetElement($elementName)
248  {
249  unset($this->scheduledElements[$elementName]);
250  }
251 
259  public function getElementToMove($elementName, $default = null)
260  {
261  return $this->scheduledMoves[$elementName] ?? $default;
262  }
263 
271  public function setElementToMove($elementName, array $data)
272  {
273  $this->scheduledMoves[$elementName] = $data;
274  }
275 
283  {
284  unset($this->scheduledRemoves[$elementName]);
285  }
286 
294  {
295  $this->scheduledRemoves[$elementName] = 1;
296  }
297 
303  public function getStructure()
304  {
306  }
307 
315  public function getStructureElement($elementName, $default = null)
316  {
317  return $this->hasStructureElement($elementName) ? $this->scheduledStructure[$elementName] : $default;
318  }
319 
325  public function isStructureEmpty()
326  {
327  return empty($this->scheduledStructure);
328  }
329 
337  {
338  return isset($this->scheduledStructure[$elementName]);
339  }
340 
348  public function setStructureElement($elementName, array $data)
349  {
350  $this->scheduledStructure[$elementName] = $data;
351  }
352 
360  {
361  unset($this->scheduledStructure[$elementName]);
362  unset($this->scheduledData[$elementName]);
363  }
364 
372  public function getStructureElementData($elementName, $default = null)
373  {
374  return $this->scheduledData[$elementName] ?? $default;
375  }
376 
385  {
386  $this->scheduledData[$elementName] = $data;
387  }
388 
394  public function getPaths()
395  {
396  return $this->scheduledPaths;
397  }
398 
406  public function getPath($elementName, $default = null)
407  {
408  return $this->hasPath($elementName) ? $this->scheduledPaths[$elementName] : $default;
409  }
410 
417  public function hasPath($elementName)
418  {
419  return isset($this->scheduledPaths[$elementName]);
420  }
421 
430  {
431  $this->scheduledPaths[$elementName] = $data;
432  }
433 
441  {
442  unset($this->scheduledPaths[$elementName]);
443  }
444 
452  {
453  unset($this->brokenParent[$elementName]);
454  }
455 
463  {
464  $this->brokenParent[$elementName] = 1;
465  }
466 
472  public function flushPaths()
473  {
474  $this->scheduledPaths = [];
475  }
476 
482  public function flushScheduledStructure()
483  {
484  $this->flushPaths();
485  $this->scheduledElements = [];
486  $this->scheduledStructure = [];
487  }
488 
495  public function __toArray()
496  {
497  $result = [];
498  foreach ($this->serializableProperties as $property) {
499  $result[$property] = $this->{$property};
500  }
501 
502  return $result;
503  }
504 
512  public function populateWithArray(array $data)
513  {
514  foreach ($this->serializableProperties as $property) {
515  $this->{$property} = $this->getArrayValueByKey($property, $data);
516  }
517  }
518 
526  private function getArrayValueByKey($key, array $array)
527  {
528  return $array[$key] ?? [];
529  }
530 }
setElementToSortList($parentName, $elementName, $offsetOrSibling, $isAfter=true)
getElementToSort($elementName, array $default=[])
$elementName
Definition: gallery.phtml:10