Xml.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Cron\Model\Groups\Config\Converter;
  7. /**
  8. * Converts cron parameters from XML files
  9. */
  10. class Xml implements \Magento\Framework\Config\ConverterInterface
  11. {
  12. /**
  13. * Converting data to array type
  14. *
  15. * @param mixed $source
  16. * @return array
  17. * @throws \InvalidArgumentException
  18. */
  19. public function convert($source)
  20. {
  21. $output = [];
  22. if (!$source instanceof \DOMDocument) {
  23. return $output;
  24. }
  25. $groups = $source->getElementsByTagName('group');
  26. foreach ($groups as $group) {
  27. /** @var $group \DOMElement */
  28. if (!$group->hasAttribute('id')) {
  29. throw new \InvalidArgumentException('Attribute "id" does not exist');
  30. }
  31. foreach ($group->childNodes as $child) {
  32. if (!$child instanceof \DOMElement) {
  33. continue;
  34. }
  35. /** @var $group \DOMElement */
  36. $output[$group->getAttribute('id')][$child->nodeName]['value'] = $child->nodeValue;
  37. if ($child->hasAttribute('tooltip')) {
  38. $output[$group->getAttribute('id')][$child->nodeName]['tooltip'] = $child->getAttribute('tooltip');
  39. }
  40. }
  41. }
  42. return $output;
  43. }
  44. }