<?php
/**
 * Maintenance page.
 *
 * @author     ThemeFusion
 * @copyright  (c) Copyright by ThemeFusion
 * @link       https://avada.com
 * @package    Avada
 * @subpackage Core
 * @since      4.0.0
 */

// Do not allow directly accessing this file.
if ( ! defined( 'ABSPATH' ) ) {
	exit( 'Direct script access denied.' );
}

/**
 * Maintenance page.
 */
class Avada_Maintenance {

	/**
	 * The message that will be displayed to all non-admins.
	 * This will be displayed on the frontend instead of the normal site.
	 *
	 * @access private
	 * @var string
	 */
	private $users_warning = '';

	/**
	 * Same as $users_warning but for admins.
	 *
	 * @access private
	 * @var string
	 */
	private $admin_warning = '';

	/**
	 * Constructor.
	 *
	 * @access public
	 * @param bool   $maintenance     Maintenance on/off.
	 * @param string $users_warning The warning to show to users.
	 * @param string $admin_warning The warning to show to admins.
	 */
	public function __construct( $maintenance = false, $users_warning = '', $admin_warning = '' ) {

		// No need to do anything if we're not in maintenance mode.
		if ( true !== $maintenance ) {
			return;
		}

		// Only continue if we're on the frontend.
		if ( is_admin() ) {
			return;
		}

		$this->users_warning = $users_warning;
		$this->admin_warning = $admin_warning;

		if ( is_admin() || ( in_array( $GLOBALS['pagenow'], [ 'wp-login.php', 'wp-register.php' ], true ) ) ) {
			return;
		}

		$this->maintenance_page();

	}

	/**
	 * Displays the maintenance page.
	 *
	 * @access public
	 */
	public function maintenance_page() {
		?>
		<div class="wrapper" style="width:800px;max-width:95%;background:#f7f7f7;border:1px solid #f2f2f2;border-radius:3px;margin:auto;margin-top:200px;">
			<div class="inner" style="padding:2rem;font-size:1.2rem;color:#333;">
				<?php if ( current_user_can( 'install_plugins' ) ) : // Current user is an admin. ?>
					<p><?php echo $this->admin_warning; // phpcs:ignore WordPress.Security.EscapeOutput ?></p>
				<?php else : ?>
					<p><?php echo $this->users_warning; // phpcs:ignore WordPress.Security.EscapeOutput ?></p>
				<?php endif; ?>
			</div>
		</div>
		<?php
		exit;

	}
}
