Mercurial > hg > cmmr2012-drupal-site
diff core/modules/image/src/Routing/ImageStyleRoutes.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/image/src/Routing/ImageStyleRoutes.php Thu Jul 05 14:24:15 2018 +0000 @@ -0,0 +1,67 @@ +<?php + +namespace Drupal\image\Routing; + +use Drupal\Core\DependencyInjection\ContainerInjectionInterface; +use Drupal\Core\StreamWrapper\StreamWrapperManagerInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\Routing\Route; + +/** + * Defines a route subscriber to register a url for serving image styles. + */ +class ImageStyleRoutes implements ContainerInjectionInterface { + + /** + * The stream wrapper manager service. + * + * @var \Drupal\Core\StreamWrapper\StreamWrapperManagerInterface + */ + protected $streamWrapperManager; + + /** + * Constructs a new ImageStyleRoutes object. + * + * @param \Drupal\Core\StreamWrapper\StreamWrapperManagerInterface $stream_wrapper_manager + * The stream wrapper manager service. + */ + public function __construct(StreamWrapperManagerInterface $stream_wrapper_manager) { + $this->streamWrapperManager = $stream_wrapper_manager; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('stream_wrapper_manager') + ); + } + + /** + * Returns an array of route objects. + * + * @return \Symfony\Component\Routing\Route[] + * An array of route objects. + */ + public function routes() { + $routes = []; + // Generate image derivatives of publicly available files. If clean URLs are + // disabled image derivatives will always be served through the menu system. + // If clean URLs are enabled and the image derivative already exists, PHP + // will be bypassed. + $directory_path = $this->streamWrapperManager->getViaScheme('public')->getDirectoryPath(); + + $routes['image.style_public'] = new Route( + '/' . $directory_path . '/styles/{image_style}/{scheme}', + [ + '_controller' => 'Drupal\image\Controller\ImageStyleDownloadController::deliver', + ], + [ + '_access' => 'TRUE', + ] + ); + return $routes; + } + +}