summaryrefslogtreecommitdiff
path: root/includes/menu.inc
diff options
context:
space:
mode:
Diffstat (limited to 'includes/menu.inc')
-rw-r--r--includes/menu.inc35
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';