Converter.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. /**
  3. * Converter of pdf configuration from \DOMDocument to array
  4. *
  5. * Copyright © Magento, Inc. All rights reserved.
  6. * See COPYING.txt for license details.
  7. */
  8. namespace Magento\Sales\Model\Order\Pdf\Config;
  9. class Converter implements \Magento\Framework\Config\ConverterInterface
  10. {
  11. /**
  12. * Convert dom node tree to array
  13. *
  14. * @param \DOMDocument $source
  15. * @return array
  16. */
  17. public function convert($source)
  18. {
  19. $result = ['renderers' => [], 'totals' => []];
  20. $pageTypes = $source->getElementsByTagName('page');
  21. foreach ($pageTypes as $pageType) {
  22. /** @var \DOMNode $pageType */
  23. $pageTypeName = $pageType->attributes->getNamedItem('type')->nodeValue;
  24. foreach ($pageType->childNodes as $rendererNode) {
  25. /** @var \DOMNode $rendererNode */
  26. if ($rendererNode->nodeType != XML_ELEMENT_NODE) {
  27. continue;
  28. }
  29. $productType = $rendererNode->attributes->getNamedItem('product_type')->nodeValue;
  30. $result['renderers'][$pageTypeName][$productType] = $rendererNode->nodeValue;
  31. }
  32. }
  33. $totalItems = $source->getElementsByTagName('total');
  34. foreach ($totalItems as $item) {
  35. /** @var \DOMNode $item */
  36. $itemName = $item->attributes->getNamedItem('name')->nodeValue;
  37. foreach ($item->childNodes as $setting) {
  38. /** @var \DOMNode $setting */
  39. if ($setting->nodeType != XML_ELEMENT_NODE) {
  40. continue;
  41. }
  42. $result['totals'][$itemName][$setting->nodeName] = $setting->nodeValue;
  43. }
  44. }
  45. return $result;
  46. }
  47. }