From c117fbe0cfadfdddd8ca579ad78dc7cb405e2859 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Sat, 25 Apr 2020 20:18:00 +0000 Subject: [PATCH] Upgrade/Install: Introduce `wp_in_maintenance_mode()`, a helper function to check if WordPress is currently in maintenance mode. Props Clorith. Fixes #49959. git-svn-id: https://develop.svn.wordpress.org/trunk@47623 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/load.php | 82 ++++++++++++++++++++++++---------------- 1 file changed, 49 insertions(+), 33 deletions(-) diff --git a/src/wp-includes/load.php b/src/wp-includes/load.php index 897f5842e1..72d92e58e7 100644 --- a/src/wp-includes/load.php +++ b/src/wp-includes/load.php @@ -146,46 +146,15 @@ function wp_favicon_request() { /** * Die with a maintenance message when conditions are met. * - * Checks for a file in the WordPress root directory named ".maintenance". - * This file will contain the variable $upgrading, set to the time the file - * was created. If the file was created less than 10 minutes ago, WordPress - * enters maintenance mode and displays a message. - * * The default message can be replaced by using a drop-in (maintenance.php in * the wp-content directory). * * @since 3.0.0 * @access private - * - * @global int $upgrading the unix timestamp marking when upgrading WordPress began. */ function wp_maintenance() { - if ( ! file_exists( ABSPATH . '.maintenance' ) || wp_installing() ) { - return; - } - - global $upgrading; - - require ABSPATH . '.maintenance'; - // If the $upgrading timestamp is older than 10 minutes, don't die. - if ( ( time() - $upgrading ) >= 600 ) { - return; - } - - /** - * Filters whether to enable maintenance mode. - * - * This filter runs before it can be used by plugins. It is designed for - * non-web runtimes. If this filter returns true, maintenance mode will be - * active and the request will end. If false, the request will be allowed to - * continue processing even if maintenance mode should be active. - * - * @since 4.6.0 - * - * @param bool $enable_checks Whether to enable maintenance mode. Default true. - * @param int $upgrading The timestamp set in the .maintenance file. - */ - if ( ! apply_filters( 'enable_maintenance_mode', true, $upgrading ) ) { + // Return if maintenance mode is disabled. + if ( ! wp_in_maintenance_mode() ) { return; } @@ -206,6 +175,53 @@ function wp_maintenance() { ); } +/** + * Check if maintenance mode is enabled. + * + * Checks for a file in the WordPress root directory named ".maintenance". + * This file will contain the variable $upgrading, set to the time the file + * was created. If the file was created less than 10 minutes ago, WordPress + * is in maintenance mode. + * + * @since 5.5.0 + * + * @global int $upgrading The Unix timestamp marking when upgrading WordPress began. + * + * @return bool True if maintenance mode is enabled, false otherwise. + */ +function wp_in_maintenance_mode() { + global $upgrading; + + if ( ! file_exists( ABSPATH . '.maintenance' ) || wp_installing() ) { + return false; + } + + require ABSPATH . '.maintenance'; + // If the $upgrading timestamp is older than 10 minutes, consider maintenance over. + if ( ( time() - $upgrading ) >= 600 ) { + return false; + } + + /** + * Filters whether to enable maintenance mode. + * + * This filter runs before it can be used by plugins. It is designed for + * non-web runtimes. If this filter returns true, maintenance mode will be + * active and the request will end. If false, the request will be allowed to + * continue processing even if maintenance mode should be active. + * + * @since 4.6.0 + * + * @param bool $enable_checks Whether to enable maintenance mode. Default true. + * @param int $upgrading The timestamp set in the .maintenance file. + */ + if ( ! apply_filters( 'enable_maintenance_mode', true, $upgrading ) ) { + return false; + } + + return true; +} + /** * Start the WordPress micro-timer. *