public MaintenanceModeSubscriber::onKernelRequestMaintenance(GetResponseEvent $event)
Returns the site maintenance page if the site is offline.
Parameters
\Symfony\Component\HttpKernel\Event\GetResponseEvent $event: The event to process.
File
- core/lib/Drupal/Core/EventSubscriber/MaintenanceModeSubscriber.php, line 92
Class
- MaintenanceModeSubscriber
- Maintenance mode subscriber for controller requests.
Namespace
Drupal\Core\EventSubscriber
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | public function onKernelRequestMaintenance(GetResponseEvent $event ) { $request = $event ->getRequest(); $route_match = RouteMatch::createFromRequest( $request ); if ( $this ->maintenanceMode->applies( $route_match )) { // Don't cache maintenance mode pages. \Drupal::service( 'page_cache_kill_switch' )->trigger(); if (! $this ->maintenanceMode->exempt( $this ->account)) { // Deliver the 503 page if the site is in maintenance mode and the // logged in user is not allowed to bypass it. // If the request format is not 'html' then show default maintenance // mode page else show a text/plain page with maintenance message. if ( $request ->getRequestFormat() !== 'html' ) { $response = new Response( $this ->getSiteMaintenanceMessage(), 503, array ( 'Content-Type' => 'text/plain' )); $event ->setResponse( $response ); return ; } drupal_maintenance_theme(); $response = $this ->bareHtmlPageRenderer->renderBarePage([ '#markup' => $this ->getSiteMaintenanceMessage()], $this ->t( 'Site under maintenance' ), 'maintenance_page' ); $response ->setStatusCode(503); $event ->setResponse( $response ); } else { // Display a message if the logged in user has access to the site in // maintenance mode. However, suppress it on the maintenance mode // settings page. if ( $route_match ->getRouteName() != 'system.site_maintenance_mode' ) { if ( $this ->account->hasPermission( 'administer site configuration' )) { $this ->drupalSetMessage( $this ->t( 'Operating in maintenance mode. <a href=":url">Go online.</a>' , array ( ':url' => $this ->urlGenerator->generate( 'system.site_maintenance_mode' ))), 'status' , FALSE); } else { $this ->drupalSetMessage( $this ->t( 'Operating in maintenance mode.' ), 'status' , FALSE); } } } } } |
Please login to continue.