diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php index 3899802af66..33fe6462b9e 100644 --- a/core/lib/Drupal/Core/DrupalKernel.php +++ b/core/lib/Drupal/Core/DrupalKernel.php @@ -23,6 +23,7 @@ use Drupal\Core\EventSubscriber\ViewSubscriber; use Drupal\Core\EventSubscriber\AccessSubscriber; use Drupal\Core\EventSubscriber\PathSubscriber; use Drupal\Core\EventSubscriber\LegacyControllerSubscriber; +use Drupal\Core\EventSubscriber\MaintenanceModeSubscriber; use Exception; @@ -70,6 +71,7 @@ class DrupalKernel extends HttpKernel { // replacement system. $this->dispatcher->addSubscriber(new ViewSubscriber($negotiation)); $this->dispatcher->addSubscriber(new AccessSubscriber()); + $this->dispatcher->addSubscriber(new MaintenanceModeSubscriber()); $this->dispatcher->addSubscriber(new PathSubscriber()); $this->dispatcher->addSubscriber(new LegacyControllerSubscriber()); diff --git a/core/lib/Drupal/Core/EventSubscriber/MaintenanceModeSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/MaintenanceModeSubscriber.php new file mode 100644 index 00000000000..ec919bc4840 --- /dev/null +++ b/core/lib/Drupal/Core/EventSubscriber/MaintenanceModeSubscriber.php @@ -0,0 +1,59 @@ + filter_xss_admin(variable_get('maintenance_mode_message', t('@site is currently under maintenance. We should be back shortly. Thank you for your patience.', array('@site' => variable_get('site_name', 'Drupal'))))))); + $response = new Response('Service unavailable', 503); + $response->setContent($content); + $event->setResponse($response); + } + } + + /** + * Registers the methods in this class that should be listeners. + * + * @return array + * An array of event listener definitions. + */ + static function getSubscribedEvents() { + $events[KernelEvents::REQUEST][] = array('onKernelRequestMaintenanceModeCheck', 40); + return $events; + } +}