HEX
Server: nginx
System: Linux pool64-304-45.dca.atomicsites.net 5.10.0-31-amd64 #1 SMP Debian 5.10.221-1 (2024-07-14) x86_64
User: (0)
PHP: 8.4.18
Disabled: pcntl_fork
Upload Files
File: /wordpress/mu-plugins/atomic-cli-maintenance-mode.php
<?php

/**
 * Override native WP CLI maintenance mode command with one that is compatible with WP Cloud infrastructure.
 */

if ( class_exists( 'WP_CLI' ) && ! class_exists( 'WPCloud_MaintenanceModeCommand' ) && class_exists( 'WP_CLI\MaintenanceMode\MaintenanceModeCommand' ) ) {
	class WPCloud_MaintenanceModeCommand extends WP_CLI\MaintenanceMode\MaintenanceModeCommand {
		public function activate( $_, $assoc_args ) {
			if ( $this->_get_maintenance_mode_status() && ! WP_CLI\Utils\get_flag_value( $assoc_args, 'force' ) ) {
				WP_CLI::error( 'Maintenance mode already activated.' );
			}

			global $wp_filesystem;
			if ( ! $wp_filesystem ) {
				require_once ABSPATH . 'wp-admin/includes/file.php';
				WP_Filesystem();
			}

			// Is our plugin available?
			$target = '../../../../../scripts/wpcloud-maintenance-mode.php';
			if ( ! file_exists( $target ) ) {
				WP_CLI::error( 'Maintenance mode plugin unavailable for symlinking.' );
			}

			// Symlink WP Cloud maintenance mode mu-plugin
			$link = trailingslashit( $wp_filesystem->wp_content_dir() ) . '/mu-plugins/wpcloud-maintenance-mode.php';
			if ( file_exists( $link ) ) {
				if ( ! is_link( $link ) ) {
					WP_CLI::error( 'Unmanaged maintenance mode plugin detected.' );
				}
				if ( $target !== readlink( $link ) ) {
					WP_CLI::error( 'Target of maintenance mode plugin unknown.' );
				}
			} else {
				symlink( $target, $link );
			}
			if ( ! file_exists( $link ) || ! is_link( $link ) || ( $target !== readlink( $link ) ) ) {
				WP_CLI::error( 'Unable to install maintenance mode plugin.' );
			}

			// Add WP Cloud custom maintenance file
			$file = trailingslashit( $wp_filesystem->wp_content_dir() ) . '.wpcloud-maintenance';
			$maintenance_string = '<?php $upgrading = ' . time() . '; ?>';
			$wp_filesystem->delete( $file );
			$wp_filesystem->put_contents( $file, $maintenance_string, FS_CHMOD_FILE );

			WP_CLI::success( 'Activated Maintenance mode.' );
		}

		public function deactivate() {
			if ( ! $this->_get_maintenance_mode_status() ) {
				WP_CLI::error( 'Maintenance mode already deactivated.' );
			}

			global $wp_filesystem;
			if ( ! $wp_filesystem ) {
				require_once ABSPATH . 'wp-admin/includes/file.php';
				WP_Filesystem();
			}

			// Remove WP Cloud maintenance mode plugin
			$link = trailingslashit( $wp_filesystem->wp_content_dir() ) . '/mu-plugins/wpcloud-maintenance-mode.php';
			$target = '../../../../../scripts/wpcloud-maintenance-mode.php';
			if ( file_exists( $link ) && is_link( $link ) && $target === readlink( $link ) ) {
				$wp_filesystem->delete( $link );
			}

			// Handle WP Cloud custom maintenance file
			$file = trailingslashit( $wp_filesystem->wp_content_dir() ) . '.wpcloud-maintenance';
			if ( file_exists( $file ) ) {
				$wp_filesystem->delete( $file );
			}

			WP_CLI::success( 'Deactivated Maintenance mode.' );
		}

		public function status() {
			$status = $this->_get_maintenance_mode_status() ? 'active' : 'not active';
			WP_CLI::line( "Maintenance mode is {$status}." );
		}

		public function is_active() {
			WP_CLI::halt( $this->_get_maintenance_mode_status() ? 0 : 1 );
		}

		private function _get_maintenance_mode_status() {
			$wp_filesystem = $this->_init_wp_filesystem();

			$file = trailingslashit( $wp_filesystem->wp_content_dir() ) . '.wpcloud-maintenance';
			if ( ! $wp_filesystem->exists( $file ) ) {
				return false;
			}

			$upgrading = 0;
			$contents = $wp_filesystem->get_contents( $file );
			$matches  = [];
			if ( preg_match( '/upgrading\s*=\s*(\d+)\s*;/i', $contents, $matches ) ) {
				$upgrading = (int) $matches[1];
			} else {
				WP_CLI::warning( 'Unable to read the maintenance file timestamp, non-numeric value detected.' );
			}
			// The logic here is based on the core WordPress `wp_is_maintenance_mode()` function.
			if ( ( time() - $upgrading ) >= 10 * MINUTE_IN_SECONDS ) {
				return false;
			}

			$link = trailingslashit( $wp_filesystem->wp_content_dir() ) . '/mu-plugins/wpcloud-maintenance-mode.php';
			$target = '../../../../../scripts/wpcloud-maintenance-mode.php';
			if ( ! file_exists( $link ) ) {
				return false;	
			}
			if ( ! is_link( $link ) ) {
				return false;
			}
			if ( $target !== readlink( $link ) ) {
				return false;
			}

			return true;
		}

		protected function _init_wp_filesystem() {
			global $wp_filesystem;
			WP_Filesystem();

			return $wp_filesystem;
		}
	}
	WP_CLI::add_command( 'maintenance-mode', 'WPCloud_MaintenanceModeCommand' );
}