FileResolverByModule.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Config;
  7. use Magento\Framework\Component\ComponentRegistrar;
  8. use Magento\Framework\Filesystem\DriverInterface;
  9. use Magento\Framework\Module\Dir;
  10. use Magento\Framework\Oauth\Exception;
  11. /**
  12. * Application config file resolver.
  13. */
  14. class FileResolverByModule extends \Magento\Framework\App\Config\FileResolver
  15. {
  16. /**
  17. * This flag says, that we need to read from all modules.
  18. */
  19. const ALL_MODULES = 'all';
  20. /**
  21. * @var ComponentRegistrar
  22. */
  23. private $componentRegistrar;
  24. /**
  25. * @var DriverInterface
  26. */
  27. private $driver;
  28. /**
  29. * Constructor.
  30. *
  31. * @param \Magento\Framework\Module\Dir\Reader $moduleReader
  32. * @param \Magento\Framework\Filesystem $filesystem
  33. * @param FileIteratorFactory $iteratorFactory
  34. * @param ComponentRegistrar $componentRegistrar
  35. * @param \Magento\Framework\Filesystem\Driver\File $driver
  36. */
  37. public function __construct(
  38. \Magento\Framework\Module\Dir\Reader $moduleReader,
  39. \Magento\Framework\Filesystem $filesystem,
  40. \Magento\Framework\Config\FileIteratorFactory $iteratorFactory,
  41. ComponentRegistrar $componentRegistrar,
  42. \Magento\Framework\Filesystem\Driver\File $driver
  43. ) {
  44. parent::__construct($moduleReader, $filesystem, $iteratorFactory);
  45. $this->componentRegistrar = $componentRegistrar;
  46. $this->driver = $driver;
  47. }
  48. /**
  49. * If scope is module.
  50. *
  51. * @inheritdoc
  52. */
  53. public function get($filename, $scope)
  54. {
  55. $iterator = $this->_moduleReader->getConfigurationFiles($filename)->toArray();
  56. if ($scope !== self::ALL_MODULES) {
  57. $path = $this->componentRegistrar->getPath('module', $scope);
  58. $path .= '/' . Dir::MODULE_ETC_DIR . '/'. $filename;
  59. $iterator = isset($iterator[$path]) ? [$path => $iterator[$path]] : [];
  60. }
  61. $primaryFile = parent::get($filename, 'primary')->toArray();
  62. if (!$this->driver->isFile(key($primaryFile))) {
  63. throw new \Exception("Primary db_schema file doesn`t exists");
  64. }
  65. /** Load primary configurations */
  66. $iterator += $primaryFile;
  67. return $iterator;
  68. }
  69. }