FileResolver.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. /**
  3. * Application config file resolver
  4. *
  5. * Copyright © Magento, Inc. All rights reserved.
  6. * See COPYING.txt for license details.
  7. */
  8. namespace Magento\Widget\Model\Config;
  9. use Magento\Framework\Component\DirSearch;
  10. use Magento\Framework\Component\ComponentRegistrar;
  11. class FileResolver implements \Magento\Framework\Config\FileResolverInterface
  12. {
  13. /**
  14. * Module configuration file reader
  15. *
  16. * @var \Magento\Framework\Module\Dir\Reader
  17. */
  18. protected $_moduleReader;
  19. /**
  20. * @var \Magento\Framework\Config\FileIteratorFactory
  21. */
  22. protected $iteratorFactory;
  23. /**
  24. * @var DirSearch
  25. */
  26. private $componentDirSearch;
  27. /**
  28. * @param \Magento\Framework\Module\Dir\Reader $moduleReader
  29. * @param \Magento\Framework\Config\FileIteratorFactory $iteratorFactory
  30. * @param DirSearch $componentDirSearch
  31. */
  32. public function __construct(
  33. \Magento\Framework\Module\Dir\Reader $moduleReader,
  34. \Magento\Framework\Config\FileIteratorFactory $iteratorFactory,
  35. DirSearch $componentDirSearch
  36. ) {
  37. $this->iteratorFactory = $iteratorFactory;
  38. $this->_moduleReader = $moduleReader;
  39. $this->componentDirSearch = $componentDirSearch;
  40. }
  41. /**
  42. * {@inheritdoc}
  43. */
  44. public function get($filename, $scope)
  45. {
  46. switch ($scope) {
  47. case 'global':
  48. $iterator = $this->_moduleReader->getConfigurationFiles($filename);
  49. break;
  50. case 'design':
  51. $themePaths = $this->componentDirSearch->collectFiles(ComponentRegistrar::THEME, 'etc/' . $filename);
  52. $iterator = $this->iteratorFactory->create($themePaths);
  53. break;
  54. default:
  55. $iterator = $this->iteratorFactory->create([]);
  56. break;
  57. }
  58. return $iterator;
  59. }
  60. }