diff options
Diffstat (limited to 'includes/menu.inc')
-rw-r--r-- | includes/menu.inc | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/includes/menu.inc b/includes/menu.inc index 2fe2159ff..e3e5e724f 100644 --- a/includes/menu.inc +++ b/includes/menu.inc @@ -2744,32 +2744,37 @@ function menu_path_is_external($path) { } /** - * Checks whether the site is offline for maintenance. + * 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 'administer site configuration' permission. + * if the current user has no 'access site in maintenance mode' permission. * * @return - * FALSE if the site is not offline or its the login page or the user has - * 'administer site configuration' permission. - * TRUE for anonymous users not on the login page if the site is offline. + * 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. */ function _menu_site_is_offline() { - // Check if site is set to maintenance mode. - if (variable_get('site_offline', 0)) { - // Check if the user has administration privileges. - if (user_access('administer site configuration')) { - // Ensure that the offline message is displayed only once [allowing for - // page redirects], and specifically suppress its display on the site - // maintenance page. - if (drupal_get_normal_path($_GET['q']) != 'admin/config/development/maintenance') { - drupal_set_message(t('Operating in maintenance mode. <a href="@url">Go online.</a>', array('@url' => url('admin/config/development/maintenance'))), 'status', 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 ($_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 { // Anonymous users get a FALSE at the login prompt, TRUE otherwise. if (user_is_anonymous()) { - return $_GET['q'] != 'user' && $_GET['q'] != 'user/login'; + return ($_GET['q'] != 'user' && $_GET['q'] != 'user/login'); } // Logged in users are unprivileged here, so they are logged out. require_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'user') . '/user.pages.inc'; |