You are here

function _menu_site_is_offline in Drupal 7

Same name and namespace in other branches
  1. 4 includes/menu.inc \_menu_site_is_offline()
  2. 5 includes/menu.inc \_menu_site_is_offline()
  3. 6 includes/menu.inc \_menu_site_is_offline()

Checks whether the site is in maintenance mode.

This function will log the current user out and redirect to front page if the current user has no 'access site in maintenance mode' permission.

Parameters

$check_only: If this is set to TRUE, the function will perform the access checks and return the site offline status, but not log the user out or display any messages.

Return value

FALSE if the site is not in maintenance mode, the user login page is displayed, or the user has the 'access site in maintenance mode' permission. TRUE for anonymous users not being on the login page when the site is in maintenance mode.

Related topics

2 calls to _menu_site_is_offline()
menu_execute_active_handler in includes/menu.inc
Execute the page callback associated with the current path.
menu_get_custom_theme in includes/menu.inc
Gets the custom theme for the current page, if there is one.

File

includes/menu.inc, line 3945
API for the Drupal menu system.

Code

function _menu_site_is_offline($check_only = FALSE) {

  // Check if site is in maintenance mode.
  if (variable_get('maintenance_mode', 0)) {
    if (user_access('access site in maintenance mode')) {

      // Ensure that the maintenance mode message is displayed only once
      // (allowing for page redirects) and specifically suppress its display on
      // the maintenance mode settings page.
      if (!$check_only && $_GET['q'] != 'admin/config/development/maintenance') {
        if (user_access('administer site configuration')) {
          drupal_set_message(t('Operating in maintenance mode. <a href="@url">Go online.</a>', array(
            '@url' => url('admin/config/development/maintenance'),
          )), 'status', FALSE);
        }
        else {
          drupal_set_message(t('Operating in maintenance mode.'), 'status', FALSE);
        }
      }
    }
    else {
      return TRUE;
    }
  }
  return FALSE;
}