Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 22 |
| PathProcessorImageStyles | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
30 | |
0.00% |
0 / 22 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| processInbound | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 20 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\image\PathProcessor\PathProcessorImageStyles. | |
| */ | |
| namespace Drupal\image\PathProcessor; | |
| use Drupal\Core\PathProcessor\InboundPathProcessorInterface; | |
| use Drupal\Core\StreamWrapper\StreamWrapperManagerInterface; | |
| use Symfony\Component\HttpFoundation\Request; | |
| /** | |
| * Defines a path processor to rewrite image styles URLs. | |
| * | |
| * As the route system does not allow arbitrary amount of parameters convert | |
| * the file path to a query parameter on the request. | |
| * | |
| * This processor handles two different cases: | |
| * - public image styles: In order to allow the webserver to serve these files | |
| * directly, the route is registered under the same path as the image style so | |
| * it took over the first generation. Therefore the path processor converts | |
| * the file path to a query parameter. | |
| * - private image styles: In contrast to public image styles, private | |
| * derivatives are already using system/files/styles. Similar to public image | |
| * styles, it also converts the file path to a query parameter. | |
| */ | |
| class PathProcessorImageStyles implements InboundPathProcessorInterface { | |
| /** | |
| * The stream wrapper manager service. | |
| * | |
| * @var \Drupal\Core\StreamWrapper\StreamWrapperManagerInterface | |
| */ | |
| protected $streamWrapperManager; | |
| /** | |
| * Constructs a new PathProcessorImageStyles 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 function processInbound($path, Request $request) { | |
| $directory_path = $this->streamWrapperManager->getViaScheme('public')->getDirectoryPath(); | |
| if (strpos($path, '/' . $directory_path . '/styles/') === 0) { | |
| $path_prefix = '/' . $directory_path . '/styles/'; | |
| } | |
| elseif (strpos($path, '/system/files/styles/') === 0) { | |
| $path_prefix = '/system/files/styles/'; | |
| } | |
| else { | |
| return $path; | |
| } | |
| // Strip out path prefix. | |
| $rest = preg_replace('|^' . preg_quote($path_prefix, '|') . '|', '', $path); | |
| // Get the image style, scheme and path. | |
| if (substr_count($rest, '/') >= 2) { | |
| list($image_style, $scheme, $file) = explode('/', $rest, 3); | |
| // Set the file as query parameter. | |
| $request->query->set('file', $file); | |
| return $path_prefix . $image_style . '/' . $scheme; | |
| } | |
| else { | |
| return $path; | |
| } | |
| } | |
| } |