StreamsServiceProvider.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. /**
  3. * @package Grav\Common\Service
  4. *
  5. * @copyright Copyright (c) 2015 - 2023 Trilby Media, LLC. All rights reserved.
  6. * @license MIT License; see LICENSE file for details.
  7. */
  8. namespace Grav\Common\Service;
  9. use Grav\Common\Config\Setup;
  10. use Pimple\Container;
  11. use RocketTheme\Toolbox\DI\ServiceProviderInterface;
  12. use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator;
  13. use RocketTheme\Toolbox\StreamWrapper\ReadOnlyStream;
  14. use RocketTheme\Toolbox\StreamWrapper\Stream;
  15. use RocketTheme\Toolbox\StreamWrapper\StreamBuilder;
  16. /**
  17. * Class StreamsServiceProvider
  18. * @package Grav\Common\Service
  19. */
  20. class StreamsServiceProvider implements ServiceProviderInterface
  21. {
  22. /**
  23. * @param Container $container
  24. * @return void
  25. */
  26. public function register(Container $container)
  27. {
  28. $container['locator'] = function (Container $container) {
  29. $locator = new UniformResourceLocator(GRAV_WEBROOT);
  30. /** @var Setup $setup */
  31. $setup = $container['setup'];
  32. $setup->initializeLocator($locator);
  33. return $locator;
  34. };
  35. $container['streams'] = function (Container $container) {
  36. /** @var Setup $setup */
  37. $setup = $container['setup'];
  38. /** @var UniformResourceLocator $locator */
  39. $locator = $container['locator'];
  40. // Set locator to both streams.
  41. Stream::setLocator($locator);
  42. ReadOnlyStream::setLocator($locator);
  43. return new StreamBuilder($setup->getStreams());
  44. };
  45. }
  46. }