Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x

BatchNegotiator.php

Namespace

Drupal\system\Theme

File

core/modules/system/src/Theme/BatchNegotiator.php

View source
<?php

namespace Drupal\system\Theme;

use Drupal\Core\Batch\BatchStorageInterface;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Theme\ThemeNegotiatorInterface;
use Symfony\Component\HttpFoundation\RequestStack;

/**
 * Sets the active theme for the batch page.
 */
class BatchNegotiator implements ThemeNegotiatorInterface {
    
    /**
     * The batch storage.
     *
     * @var \Drupal\Core\Batch\BatchStorageInterface
     */
    protected $batchStorage;
    
    /**
     * The request stack.
     *
     * @var \Symfony\Component\HttpFoundation\RequestStack
     */
    protected $requestStack;
    
    /**
     * Constructs a BatchNegotiator.
     *
     * @param \Drupal\Core\Batch\BatchStorageInterface $batch_storage
     *   The batch storage.
     * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
     *   The request stack used to retrieve the current request.
     */
    public function __construct(BatchStorageInterface $batch_storage, RequestStack $request_stack) {
        $this->batchStorage = $batch_storage;
        $this->requestStack = $request_stack;
    }
    
    /**
     * {@inheritdoc}
     */
    public function applies(RouteMatchInterface $route_match) {
        return $route_match->getRouteName() == 'system.batch_page.html';
    }
    
    /**
     * {@inheritdoc}
     */
    public function determineActiveTheme(RouteMatchInterface $route_match) {
        // Retrieve the current state of the batch.
        $request = $this->requestStack
            ->getCurrentRequest();
        $batch =& batch_get();
        if (!$batch && $request->request
            ->has('id')) {
            $batch = $this->batchStorage
                ->load($request->request
                ->get('id'));
        }
        // Use the same theme as the page that started the batch.
        if (!empty($batch['theme'])) {
            return $batch['theme'];
        }
    }

}

Classes

Title Deprecated Summary
BatchNegotiator Sets the active theme for the batch page.
RSS feed
Powered by Drupal