annotate core/modules/system/src/Theme/BatchNegotiator.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\system\Theme;
Chris@0 4
Chris@0 5 use Drupal\Core\Batch\BatchStorageInterface;
Chris@0 6 use Drupal\Core\Routing\RouteMatchInterface;
Chris@0 7 use Drupal\Core\Theme\ThemeNegotiatorInterface;
Chris@0 8 use Symfony\Component\HttpFoundation\RequestStack;
Chris@0 9
Chris@0 10 /**
Chris@0 11 * Sets the active theme for the batch page.
Chris@0 12 */
Chris@0 13 class BatchNegotiator implements ThemeNegotiatorInterface {
Chris@0 14
Chris@0 15 /**
Chris@0 16 * The batch storage.
Chris@0 17 *
Chris@0 18 * @var \Drupal\Core\Batch\BatchStorageInterface
Chris@0 19 */
Chris@0 20 protected $batchStorage;
Chris@0 21
Chris@0 22 /**
Chris@0 23 * The request stack.
Chris@0 24 *
Chris@0 25 * @var \Symfony\Component\HttpFoundation\RequestStack
Chris@0 26 */
Chris@0 27 protected $requestStack;
Chris@0 28
Chris@0 29 /**
Chris@0 30 * Constructs a BatchNegotiator.
Chris@0 31 *
Chris@0 32 * @param \Drupal\Core\Batch\BatchStorageInterface $batch_storage
Chris@0 33 * The batch storage.
Chris@0 34 * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
Chris@0 35 * The request stack used to retrieve the current request.
Chris@0 36 */
Chris@0 37 public function __construct(BatchStorageInterface $batch_storage, RequestStack $request_stack) {
Chris@0 38 $this->batchStorage = $batch_storage;
Chris@0 39 $this->requestStack = $request_stack;
Chris@0 40 }
Chris@0 41
Chris@0 42 /**
Chris@0 43 * {@inheritdoc}
Chris@0 44 */
Chris@0 45 public function applies(RouteMatchInterface $route_match) {
Chris@0 46 return $route_match->getRouteName() == 'system.batch_page';
Chris@0 47 }
Chris@0 48
Chris@0 49 /**
Chris@0 50 * {@inheritdoc}
Chris@0 51 */
Chris@0 52 public function determineActiveTheme(RouteMatchInterface $route_match) {
Chris@0 53 // Retrieve the current state of the batch.
Chris@0 54 $request = $this->requestStack->getCurrentRequest();
Chris@0 55 $batch = &batch_get();
Chris@0 56 if (!$batch && $request->request->has('id')) {
Chris@0 57 $batch = $this->batchStorage->load($request->request->get('id'));
Chris@0 58 }
Chris@0 59 // Use the same theme as the page that started the batch.
Chris@0 60 if (!empty($batch['theme'])) {
Chris@0 61 return $batch['theme'];
Chris@0 62 }
Chris@0 63 }
Chris@0 64
Chris@0 65 }