FileIterator.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Email\Model\Template\Config;
  8. use Magento\Framework\Filesystem\DriverPool;
  9. use Magento\Framework\Filesystem\File\ReadFactory;
  10. /**
  11. * Class FileIterator
  12. */
  13. class FileIterator extends \Magento\Framework\Config\FileIterator
  14. {
  15. /**
  16. * @var \Magento\Framework\Module\Dir\ReverseResolver
  17. */
  18. protected $_moduleDirResolver;
  19. /**
  20. * @param ReadFactory $readFactory
  21. * @param array $paths
  22. * @param \Magento\Framework\Module\Dir\ReverseResolver $dirResolver
  23. */
  24. public function __construct(
  25. ReadFactory $readFactory,
  26. array $paths,
  27. \Magento\Framework\Module\Dir\ReverseResolver $dirResolver
  28. ) {
  29. parent::__construct($readFactory, $paths);
  30. $this->_moduleDirResolver = $dirResolver;
  31. }
  32. /**
  33. * @return string
  34. * @throws \UnexpectedValueException
  35. */
  36. public function current()
  37. {
  38. $path = $this->key();
  39. $moduleName = $this->_moduleDirResolver->getModuleName($path);
  40. if (!$moduleName) {
  41. throw new \UnexpectedValueException(
  42. sprintf("Unable to determine a module, file '%s' belongs to.", $this->key())
  43. );
  44. }
  45. $fileRead = $this->fileReadFactory->create($this->key(), DriverPool::FILE);
  46. $contents = $fileRead->readAll();
  47. return str_replace('<template ', '<template module="' . $moduleName . '" ', $contents);
  48. }
  49. }