AnonSec Team
Server IP : 10.131.40.8  /  Your IP : 216.73.216.37
Web Server : Apache
System : Linux webd008.cluster131.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
User : ludmqhh ( 137773)
PHP Version : 8.4.10
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0705) :  /home/ludmqhh/www/hotel-forum/wp-content/plugins/wp-maintenance/classes/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/ludmqhh/www/hotel-forum/wp-content/plugins/wp-maintenance/classes/wp-maintenance.php
<?php

class WP_maintenance {

    protected static $instance;

    public static function init() {
        is_null( self::$instance ) AND self::$instance = new self;
        return self::$instance;
    }

	public function __construct() {

        /* Récupère le status */
        $statusActive = $this->wpm_check_active();
        if ( isset($statusActive) && $statusActive == 1) {
            add_action( 'template_redirect', array( &$this, 'wpm_maintenance_mode'), 2 );
        }
        add_action( 'init', array( &$this, 'wpm_dashboard_install') );

        /* Version du plugin */
        $option['wp_maintenance_version'] = WPM_VERSION;
        if( !get_option('wp_maintenance_version') ) {
            add_option('wp_maintenance_version', $option);
        } else if ( get_option('wp_maintenance_version') != WPM_VERSION ) {
            update_option('wp_maintenance_version', WPM_VERSION);
        }

        if( is_admin() ) {
            add_action( 'admin_menu', array( &$this, 'wpm_add_admin') );
            add_filter( 'plugin_action_links_wp-maintenance/wp-maintenance.php', array( &$this, 'wpm_plugin_action_links'), 10, 3 );
            add_action( 'admin_head', array( &$this, 'wpm_admin_head') );
            add_action( 'admin_bar_menu', array( &$this, 'wpm_add_menu_admin_bar'), 999 );
            add_action( 'admin_footer', array( &$this, 'wpm_print_footer_scripts') );
            add_action( 'admin_init', array( &$this, 'wpm_process_settings_import') );
            add_action( 'admin_init', array( &$this, 'wpm_process_settings_export') );     
            //add_action( 'after_setup_theme', array( &$this, 'wpm_theme_add_editor_styles') );
        }

    }

    function wpm_theme_add_editor_styles() {
        //add_editor_style( WPM_URL.'css/custom-editor-style.css' );
    }
    
    /**
     * Display the default template
     */
    function wpm_get_default_template() {
        $file = file_get_contents(WPM_DIR.'/themes/default/index2.php');
        return $file;
    }

    public static function wpm_dashboard_install() {
        

        if ( get_option('wp_maintenance_active', false) == false or get_option('wp_maintenance_active')=='' ) {
            add_option('wp_maintenance_active', 0);
        }

        if ( get_option('wp_maintenance_settings_css', false) == false or get_option('wp_maintenance_settings_css')=='' ) {
            add_option('wp_maintenance_settings_css', wpm_print_style());
        }

        $wpmAdminOptions = array(            
            'titre_maintenance' => __('This site is down for maintenance', 'wp-maintenance'),
            'text_maintenance' => __('Come back quickly!', 'wp-maintenance'),
            'newletter' => 0,
            'title_newletter' => '',
            'code_newletter' => '',
            'type_newletter' => 'shortcode',
            'iframe_newletter' => ''
        );
        if ( get_option('wp_maintenance_settings', false) == false or get_option('wp_maintenance_settings')=='' ) {
            foreach ($wpmAdminOptions as $keyAdminOptions => $optionAdminOptions) {
                $wpmAdminOptions[$keyAdminOptions] = $optionAdminOptions;
            }
            add_option('wp_maintenance_settings', $wpmAdminOptions);
        }

        /* DEFINITION PARAMS COLORS */
        $wpmSetsColorsOptions = array(
            'color_bg' => "#f1f1f1",
            'color_bg_header' => '#ffffff',
            'color_title' => '#333333',
            'font_title' => 'Anton',
            'font_title_size' => '16',
            'font_title_weigth' => '',
            'font_title_style' => '',
            'color_txt' => '#333333',
            'font_text' => 'Anton',
            'font_text_size' => '16',
            'font_text_weigth' => '',
            'font_text_style' => '',
            'container_active' => 0,
            'container_colorcontainer_opacity' => '0.5',
            'container_width' => '80',
            'color_cpt' => '#333333',
            'color_cpt_bg' => '#ffffff',
            'font_cpt' => 'Pacifico',
            'date_cpt_size' => '6',
            'font_end_cpt' => 'Pacifico',
            'cpt_end_size' => '2',
            'color_text_bottom' => '#ffffff',
            'color_bg_bottom' => '#333333',
            'font_text_bottom' => 'PT+Sans',
            'font_bottom_size' => '12',
            'font_bottom_weigth' => '',
            'font_bottom_style' => '',
            'newletter' => 0,
            'newletter_font_text' => 'PT+Sans',
            'newletter_size' => '14',
            'newletter_font_weigth' => '',
            'newletter_font_style' => '',
            'color_field_text' => '#333333',
            'color_field_border' => '#333333',
            'color_field_background' => '#CCCCCC',
            'color_text_button' => '#ffffff',
            'color_button' => '#1e73be',
            'color_button_hover' => '#ffffff',
            'color_button_onclick' => '#ffffff',
            'remove_googlefonts' => 0,
        );

        if ( get_option('wp_maintenance_settings_colors', false) == false or get_option('wp_maintenance_settings_colors')=='' ) {
            foreach ($wpmSetsColorsOptions as $keyColorsOptions => $optionColorsOptions) {
                $wpmSetsColorsOptions[$keyColorsOptions] = $optionColorsOptions;
            }
            add_option('wp_maintenance_settings_colors', $wpmSetsColorsOptions);
        }

        /* DEFINITION PARAMS PICTURE */
        $wpmSetsPicturesOptions = array(

            'image' => plugin_dir_url( __DIR__ ).'images/default2.png',
            'image_width' => 450,
            'image_height' => 450,            
            'b_enable_image' => 0,
            'b_image' => '',
            'b_opacity_image' => '0.2',
            'b_repeat_image' => 'repeat',
            'b_fixed_image' => 1,
            'b_pattern' => 0
        );

        if ( get_option('wp_maintenance_settings_picture', false) == false or get_option('wp_maintenance_settings_picture')=='' ) {
            foreach ($wpmSetsPicturesOptions as $keyPicturesOptions => $optionPicturesOptions) {
                $wpmSetsPicturesOptions[$keyPicturesOptions] = $optionPicturesOptions;
            }
            add_option('wp_maintenance_settings_picture', $wpmSetsPicturesOptions);
        }

        /* DEFINITION PARAMS COUNTDOWN */
        $wpmSetsCountdownOptions = array(
            'active_cpt' => 0,
            'date_cpt_hh' => '',
            'cptdate' => '',
            'cpttime' => '',
            'active_cpt_s' => '',
            'disable' => '',
            'message_cpt_fin' => ''
        );
        if ( get_option('wp_maintenance_settings_countdown', false) == false or get_option('wp_maintenance_settings_countdown')=='' ) {
            foreach ($wpmSetsCountdownOptions as $keyCountdownOptions => $optionCountdownOptions) {
                $wpmSetsCountdownOptions[$keyCountdownOptions] = $optionCountdownOptions;
            }
            add_option('wp_maintenance_settings_countdown', $wpmSetsCountdownOptions);
        }

        /* DEFINITION PARAMS CSS */
        if ( get_option('wp_maintenance_settings_css', false) == false or get_option('wp_maintenance_settings_css')=='' ) {
            add_option('wp_maintenance_settings_css', wpm_print_style() );
        }

        /* DEFINITION PARAMS SEO */
        $wpmSetsSeoOptions = array(
            'enable_seo' => 0,
            'seo_title' => '',
            'seo_description' => '',
            'favicon' => ''
        );
        if ( get_option('wp_maintenance_settings_seo', false) == false or get_option('wp_maintenance_settings_seo')=='' ) {
            foreach ($wpmSetsSeoOptions as $keySeoOptions => $optionSeoOptions) {
                $wpmSetsSeoOptions[$keySeoOptions] = $optionSeoOptions;
            }
            add_option('wp_maintenance_settings_seo', $wpmSetsSeoOptions);
        }

        /* DEFINITION PARAMS SOCIAL NETWORKS */
        $wpmSocialsNetworksOptions = array(
            'enable' => 0,
            'texte' => __('Follow me on', 'wp-maintenance'),
            'size' => 64,
            'style' => 'style1',
            'position' => 'bottom',
            'align' => 'center',
            'theme' => ''
        );
        if ( get_option('wp_maintenance_settings_socialnetworks', false) == false or get_option('wp_maintenance_settings_socialnetworks')=='' ) {
            foreach ($wpmSocialsNetworksOptions as $keyNetworksOptions => $optionNetworksOptions) {
                $wpmSocialsNetworksOptions[$keyNetworksOptions] = $optionNetworksOptions;
            }
            add_option('wp_maintenance_settings_socialnetworks', $wpmSocialsNetworksOptions);
        }

        /* DEFINITION PARAMS LIST SOCIAL NETWORKS */
        $wpmListSocialsNetworksOptions = array(
            'facebook' => '',
            'twitter' => '',
            'linkedin' => '', 
            'flickr' => '', 
            'youtube' => '', 
            'pinterest' => '', 
            'vimeo' => '', 
            'instagram' => '', 
            'about_me' => '', 
            'soundcloud' => '', 
            'skype' => '', 
            'tumblr' => '', 
            'blogger' => '', 
            'paypal' => '', 
            'email' => '',
        );
        if ( get_option('wp_maintenance_list_socialnetworks', false) == false or get_option('wp_maintenance_list_socialnetworks')=='' ) {
            foreach ($wpmListSocialsNetworksOptions as $keyListNetworksOptions => $optionListNetworksOptions) {
                $wpmListSocialsNetworksOptions[$keyListNetworksOptions] = $optionListNetworksOptions;
            }
            add_option('wp_maintenance_list_socialnetworks', $wpmListSocialsNetworksOptions);
        }

        /* DEFINITION PARAMS FOOTER */
        $wpmSetsFootersOptions = array(
            'enable_footer' => 0,
            'text_bt_maintenance' => '',
            'add_wplogin' => 0,
            'add_wplogin_title' => ''
        );
        if ( get_option('wp_maintenance_settings_footer', false) == false or get_option('wp_maintenance_settings_footer')=='' ) {
            foreach ($wpmSetsFootersOptions as $keyFootersOptions => $optionFootersOptions) {
                $wpmSetsFootersOptions[$keyFootersOptions] = $optionFootersOptions;
            }
            add_option('wp_maintenance_settings_footer', $wpmSetsFootersOptions);
        }

        /* DEFINITION PARAMS SETTINGS */
        $wpmSetsOptions = array(
            'pageperso' => 0,
            'dashboard_delete_db' => 0,
            'error_503' => 1,
            'id_pages' => '',
            'headercode' => ''
        );
        if ( get_option('wp_maintenance_settings_options', false) == false or get_option('wp_maintenance_settings_options')=='' ) {
            foreach ($wpmSetsOptions as $keySetsOptions => $optionSetsOptions) {
                $wpmSetsOptions[$keySetsOptions] = $optionSetsOptions;
            }
            add_option('wp_maintenance_settings_options', $wpmSetsOptions);
        }       

    }

    public static function wpm_dashboard_remove() {

        if(get_option('wp_maintenance_settings')) { extract(get_option('wp_maintenance_settings')); }
        $paramMMode = get_option('wp_maintenance_settings');

        delete_option('wp_maintenance_active');

        if( isset($paramMMode['dashboard_delete_db']) && $paramMMode['dashboard_delete_db'] == 1 ) {

            delete_option('wp_maintenance_settings');
            delete_option('wp_maintenance_version');
            delete_option('wp_maintenance_settings_colors');
            delete_option('wp_maintenance_settings_countdown');
            delete_option('wp_maintenance_settings_seo');
            delete_option('wp_maintenance_settings_socialnetworks');
            delete_option('wp_maintenance_settings_footer');
            delete_option('wp_maintenance_settings_options');
            delete_option('wp_maintenance_limit'); 
            delete_option('wp_maintenance_social_options');
            delete_option('wp_maintenance_ipaddresses');
            
        }

    }


    function wpm_plugin_action_links($actions, $file, $plugin_data) {
        $new_actions = array();
        $new_actions[] = sprintf( '<a href="'.WPM_ADMIN_URL.'">%s</a>', __('Settings', 'wp-maintenance') );
        $new_actions = array_merge($new_actions, $actions);
        $uninstall_url = WPM_ADMIN_URL.'&amp;action=uninstall&amp;_wpnonce='.wp_create_nonce('wpm_uninstall_'.get_current_user_id().'_wpnonce');
        $new_actions[] = '<span class="delete"><a href="'.$uninstall_url.'" class="delete">'.__('Uninstall','=wp-maintenance').'</a></span>';
        return $new_actions;
    }

    // Add "Réglages" link on plugins page
    function wpm_plugin_actions( $links, $file ) {

        if ( $file != WPM_PLUGIN_BASENAME ) {
		  return $links;
        } else {
            $wpm_settings_link = '<a href="admin.php?page=wp-maintenance">'
                . esc_html( __( 'Settings', 'wp-maintenance' ) ) . '</a>';

            array_unshift( $links, $wpm_settings_link );

            return $links;
        }
    }

    /* Ajout feuille CSS pour l'admin barre */
    function wpm_admin_head() {

        global $current_user;
        global $_wp_admin_css_colors;
        // Add Style for all admin
        echo '
<style>#wpadminbar .wpmbackground-on > .ab-item{ color:#fff;background-color: #f44; }#wpadminbar .wpmbackground-on .ab-icon:before { content: "\f107";top: 2px;color:#fff !important; }#wpadminbar .wpmbackground-on:hover > .ab-item{ background-color: #a30 !important;color:#fff !important; }#wpadminbar .wpmbackground-off > .ab-item{ color:#fff; }#wpadminbar .wpmbackground-off .ab-icon:before { content: "\f107";top: 2px;color:#fff !important; }</style>        
        ';
        if (isset($_GET['page']) && strpos($_GET['page'], 'wp-maintenance') !==false) {
            //echo '<link rel="stylesheet" type="text/css" media="all" href="' .WPM_URL.'css/wpm-admin.css'.'">';

        } else {
            echo '
<style>#maintenance-on{background:#0ed74c;border-radius:50%;width:14px;height:14px;float: left;margin-right: 5px;margin-top: 9px;}#maintenance-off{background:#d70e25;border-radius:50%;width:14px;height:14px;float: left;margin-right: 5px;margin-top: 9px;}</style>';
        }
    }
    /* Ajout Notification admin barre */
    function wpm_add_menu_admin_bar( $wp_admin_bar ) {

        $checkActive = get_option('wp_maintenance_active');
        $textAdmin = '<span class="ab-icon"></span> '.__('WP Maintenance', 'wp-maintenance');
        $classAdminBar = 'off';
        
        if( isset($checkActive) && !is_network_admin() ) {
            
            if( $checkActive==1 ) {
                $classAdminBar = 'on';
            }
            $args = array(
                'id'     => 'wpm-info', // id of the existing child node (New > Post)
                'title'  => $textAdmin, // alter the title of existing node
                'href' => 'admin.php?page=wp-maintenance', // Lien du menu
                'parent' => 'top-secondary', // set parent to false to make it a top level (parent) node
                'meta' => array(
                    'class' => 'wpmbackground-'.$classAdminBar
                )
            );
            $wp_admin_bar->add_node( $args );
            
            // add a child item to our parent item 
            $args = array(
                'parent' => 'wpm-info',
                'id'     => 'wp-maintenance-colors',
                'title'  => __('Colors', 'wp-maintenance'),
                'href'   => admin_url().'admin.php?page=wp-maintenance-colors',
                'meta'   => false        
            );
            $wp_admin_bar->add_node( $args );
             
            // add a child item to our parent item 
            $args = array(
                'parent' => 'wpm-info',
                'id'     => 'wp-maintenance-picture',
                'title'  => __('Pictures', 'wp-maintenance'),
                'href'   =>  admin_url().'admin.php?page=wp-maintenance-picture',
                'meta'   => false        
            );
            $wp_admin_bar->add_node( $args );
            
            // add a child item to our parent item 
            $args = array(
                'parent' => 'wpm-info',
                'id'     => 'wp-maintenance-countdown',
                'title'  => __('Countdown', 'wp-maintenance'),
                'href'   =>  admin_url().'admin.php?page=wp-maintenance-countdown',
                'meta'   => false        
            );
            $wp_admin_bar->add_node( $args );  
            
            // add a child item to our parent item 
            $args = array(
                'parent' => 'wpm-info',
                'id'     => 'wp-maintenance-css',
                'title'  => __('CSS', 'wp-maintenance'),
                'href'   =>  admin_url().'admin.php?page=wp-maintenance-css',
                'meta'   => false        
            );
            $wp_admin_bar->add_node( $args );
            
            // add a child item to our parent item 
            $args = array(
                'parent' => 'wpm-info',
                'id'     => 'wp-maintenance-footer',
                'title'  => __('Footer', 'wp-maintenance'),
                'href'   =>  admin_url().'admin.php?page=wp-maintenance-footer',
                'meta'   => false        
            );
            $wp_admin_bar->add_node( $args );  

            // add a child item to our parent item 
            $args = array(
                'parent' => 'wpm-info',
                'id'     => 'wp-maintenance-seo',
                'title'  => __('SEO', 'wp-maintenance'),
                'href'   =>  admin_url().'admin.php?page=wp-maintenance-seo',
                'meta'   => false        
            );
            $wp_admin_bar->add_node( $args );  

            // add a child item to our parent item 
            $args = array(
                'parent' => 'wpm-info',
                'id'     => 'wp-maintenance-socialnetworks',
                'title'  => __('Social Networks', 'wp-maintenance'),
                'href'   =>  admin_url().'admin.php?page=wp-maintenance-socialnetworks',
                'meta'   => false        
            );
            $wp_admin_bar->add_node( $args );  

            // add a child item to our parent item 
            $args = array(
                'parent' => 'wpm-info',
                'id'     => 'wp-maintenance-settings',
                'title'  => __('Settings', 'wp-maintenance'),
                'href'   =>  admin_url().'admin.php?page=wp-maintenance-settings',
                'meta'   => false        
            );
            $wp_admin_bar->add_node( $args );  

            
            
        }
    }

    function wpm_init_wysiwyg() {
        wp_enqueue_script('editor');
        add_thickbox();
        wp_enqueue_script('media-upload');
        add_action('admin_print_footer_scripts', 'wp_tiny_mce', 25);
        wp_enqueue_script('quicktags');
    }

    function wpm_add_admin() {

        add_menu_page( 'WP Maintenance Settings', 'WP Maintenance', 'manage_options', 'wp-maintenance', array( $this, 'wpm_dashboard_page'),  WPM_URL.'images/wpm-menu-icon.png' );
        add_submenu_page( 'wp-maintenance', 'WP Maintenance > '.__('General', 'wp-maintenance'), __('General', 'wp-maintenance'), 'manage_options', 'wp-maintenance', array( $this, 'wpm_dashboard_page') );
        add_submenu_page( 'wp-maintenance', 'WP Maintenance > '.__('Colors & Fonts', 'wp-maintenance'), __('Colors & Fonts', 'wp-maintenance'), 'manage_options', 'wp-maintenance-colors', array( $this, 'wpm_colors_page') );
        add_submenu_page( 'wp-maintenance', 'WP Maintenance > '.__('Pictures', 'wp-maintenance'), __('Pictures', 'wp-maintenance'), 'manage_options', 'wp-maintenance-picture', array( $this, 'wpm_picture_page') );
        add_submenu_page( 'wp-maintenance', 'WP Maintenance > '.__('CountDown', 'wp-maintenance'), __('CountDown', 'wp-maintenance'), 'manage_options', 'wp-maintenance-countdown', array( $this, 'wpm_countdown_page') );
        add_submenu_page( 'wp-maintenance', 'WP Maintenance > '.__('CSS Style', 'wp-maintenance'), __('CSS Style', 'wp-maintenance'), 'manage_options', 'wp-maintenance-css', array( $this, 'wpm_css_page') );
        add_submenu_page( 'wp-maintenance', 'WP Maintenance > '.__('SEO', 'wp-maintenance'), __('SEO', 'wp-maintenance'), 'manage_options', 'wp-maintenance-seo', array( $this, 'wpm_seo_page') );
        add_submenu_page( 'wp-maintenance', 'WP Maintenance > '.__('Social Networks', 'wp-maintenance'), __('Social Networks', 'wp-maintenance'), 'manage_options', 'wp-maintenance-socialnetworks', array( $this, 'wpm_socialnetworks_page') );
        add_submenu_page( 'wp-maintenance', 'WP Maintenance > '.__('Footer', 'wp-maintenance'), __('Footer', 'wp-maintenance'), 'manage_options', 'wp-maintenance-footer', array( $this, 'wpm_footer_page') );
        add_submenu_page( 'wp-maintenance', 'WP Maintenance > '.__('Settings', 'wp-maintenance'), __('Settings', 'wp-maintenance'), 'manage_options', 'wp-maintenance-settings', array( $this, 'wpm_settings_page') );

        /*add_submenu_page( 'wp-maintenance', 'WP Maintenance > '.__('About', 'wp-maintenance'), __('About', 'wp-maintenance'), 'manage_options', 'wp-maintenance-about', array( $this, 'wpm_about_page') );*/

        // If you're not including an image upload then you can leave this function call out
        if (isset($_GET['page']) && strpos($_GET['page'], 'wp-maintenance') !==false) {

            wp_enqueue_script('media-upload');
            wp_enqueue_script('thickbox');

            wp_register_script('wpm-my-upload', WPM_URL.'js/wpm-script.js', array('jquery','media-upload','thickbox'));
            wp_enqueue_script('wpm-my-upload');

            wp_enqueue_style('jquery-defaut-style', WPM_URL.'js/lib/themes/default.css');
            wp_enqueue_style('jquery-date-style', WPM_URL.'js/lib/themes/default.date.css');
            wp_enqueue_style('jquery-time-style', WPM_URL.'js/lib/themes/default.time.css');
            wp_enqueue_style('jquery-fontselect-style', WPM_URL.'js/fontselect/fontselect.css');

            wp_enqueue_style( 'wp-color-picker' );
            wp_enqueue_script( 'my-script-handle', WPM_URL.'js/wpm-color-options.js', array( 'wp-color-picker' ), false, true );

            wp_enqueue_style('thickbox');
            
            /* Image picker */
            wp_enqueue_style('imagepicker');
            wp_enqueue_style('imagepicker', WPM_URL.'css/image-picker.css');
            
            wp_register_script('imagepickerjs', WPM_URL.'js/image-picker.min.js', 'jquery', WPM_VERSION);
            wp_enqueue_script('imagepickerjs');

            $wpm_settings['codeEditor'] = wp_enqueue_code_editor(array('type' => 'text/css'));
            wp_localize_script('jquery', 'cm_settings', $wpm_settings);
            
            wp_enqueue_script('wp-theme-plugin-editor');
            wp_enqueue_style('wp-codemirror');

            wp_register_script('wpm_sticky', WPM_URL.'js/jquery.sticky.js', 'jquery', WPM_VERSION);
            wp_enqueue_script('wpm_sticky');
            
            wp_enqueue_script( 'emosm-leafletprovidersjs', WPM_URL.'js/jquery.sortable.js', 'jquery', WPM_VERSION);

            // If you're not including an image upload then you can leave this function call out
            wp_enqueue_media();

            // Now we can localize the script with our data.
            wp_localize_script( 'wpm-my-upload', 'Data', array(
              'textebutton'  =>  __( 'Choose This Image', 'wp-maintenance' ),
              'title'  => __( 'Choose Image', 'wp-maintenance' ),
            ) );

            wp_register_script('wpm-admin-fontselect', WPM_URL.'js/fontselect/jquery.fontselect.min.js' );
            wp_enqueue_script('wpm-admin-fontselect');

            wp_enqueue_style('admincss');
            wp_enqueue_style('admincss', WPM_URL.'css/wpm-admin.css');           

        }
        
    }

    function wpm_dashboard_page() {

        //must check that the user has the required capability
        if (!current_user_can('manage_options')) {
          wp_die( __("You do not have sufficient privileges to access this page.", 'sponsorpress') );
        }
        include(WPM_DIR."/views/wp-maintenance-dashboard.php");
    }
    function wpm_colors_page() {

        //must check that the user has the required capability
        if (!current_user_can('manage_options')) {
          wp_die( __("You do not have sufficient privileges to access this page.", 'sponsorpress') );
        }
        include(WPM_DIR."/views/wp-maintenance-colors.php");
    }
    function wpm_css_page() {

        //must check that the user has the required capability
        if (!current_user_can('manage_options')) {
          wp_die( __("You do not have sufficient privileges to access this page.", 'sponsorpress') );
        }
        include(WPM_DIR."/views/wp-maintenance-css.php");
    }

    function wpm_picture_page() {

        //must check that the user has the required capability
        if (!current_user_can('manage_options')) {
          wp_die( __("You do not have sufficient privileges to access this page.", 'sponsorpress') );
        }
        include(WPM_DIR."/views/wp-maintenance-picture.php");
    }

    function wpm_countdown_page() {

        //must check that the user has the required capability
        if (!current_user_can('manage_options')) {
          wp_die( __("You do not have sufficient privileges to access this page.", 'sponsorpress') );
        }
        include(WPM_DIR."/views/wp-maintenance-countdown.php");
    }

    function wpm_seo_page() {

        //must check that the user has the required capability
        if (!current_user_can('manage_options')) {
          wp_die( __("You do not have sufficient privileges to access this page.", 'sponsorpress') );
        }
        include(WPM_DIR."/views/wp-maintenance-seo.php");
    }

    function wpm_socialnetworks_page() {

        //must check that the user has the required capability
        if (!current_user_can('manage_options')) {
          wp_die( __("You do not have sufficient privileges to access this page.", 'sponsorpress') );
        }
        include(WPM_DIR."/views/wp-maintenance-socialnetworks.php");
    }

    function wpm_footer_page() {

        //must check that the user has the required capability
        if (!current_user_can('manage_options')) {
          wp_die( __("You do not have sufficient privileges to access this page.", 'sponsorpress') );
        }
        include(WPM_DIR."/views/wp-maintenance-footer.php");
    }

    function wpm_settings_page() {

        //must check that the user has the required capability
        if (!current_user_can('manage_options')) {
          wp_die( __("You do not have sufficient privileges to access this page.", 'sponsorpress') );
        }
        include(WPM_DIR."/views/wp-maintenance-settings.php");
    }

    function wpm_print_footer_scripts() {

       if (isset($_GET['page']) && strpos($_GET['page'], 'wp-maintenance') !==false) {
            wp_register_script('wpm-picker', WPM_URL.'js/lib/picker.js' );
            wp_enqueue_script('wpm-picker');
            wp_register_script('wpm-datepicker', WPM_URL.'js/lib/picker.date.js' );
            wp_enqueue_script('wpm-datepicker');
            wp_register_script('wpm-timepicker', WPM_URL.'js/lib/picker.time.js' );
            wp_enqueue_script('wpm-timepicker');
            wp_register_script('wpm-legacy', WPM_URL.'js/lib/legacy.js' );
            wp_enqueue_script('wpm-legacy');
        }
    }

    /**
     * Process a settings export that generates a .json file of the erident settings
     */
    function wpm_process_settings_export() {

        if(empty($_POST['wpm_action']) || 'export_settings'!=$_POST['wpm_action'])
            return;

        if(!wp_verify_nonce($_POST['wpm_export_nonce'], 'go_export_nonce'))
            return;

        if(!current_user_can('manage_options'))
            return;

        $settingsJson = array(           
            'active' => get_option('wp_maintenance_active'),
            'settings' => get_option('wp_maintenance_settings'),
            'settings_colors' => get_option('wp_maintenance_settings_colors'),
            'settings_countdown' => get_option('wp_maintenance_settings_countdown'),
            'settings_picture' => get_option('wp_maintenance_settings_picture'),
            'settings_seo' => get_option('wp_maintenance_settings_seo'),
            'settings_socialnetworks' => get_option('wp_maintenance_settings_socialnetworks'),
            'settings_footer' => get_option('wp_maintenance_settings_footer'),
            'settings_options' => get_option('wp_maintenance_settings_options'),
            'limit' => get_option('wp_maintenance_limit'),
            'social_options' => get_option('wp_maintenance_social_options'),
            'ipaddresses' => get_option('wp_maintenance_ipaddresses')
        );
        
        ignore_user_abort(true);

        nocache_headers();
        header('Content-Type: application/json; charset=utf-8');
        header('Content-Disposition: attachment; filename=wp-maintenance-'.parse_url(get_site_url(), PHP_URL_HOST).'-'.date('m-d-Y').'.json');
        header("Expires: 0");

        echo json_encode($settingsJson);
        exit;
    }


    /**
     * Process a settings import from a json file
     */
    function wpm_process_settings_import() {

        if(empty($_POST['wpm_action']) || 'import_settings'!=$_POST['wpm_action'])
            return;

        if(!wp_verify_nonce( $_POST['wpm_import_nonce'], 'go_import_nonce'))
            return;

        if(!current_user_can('manage_options'))
            return;

        $extensionExploded = explode('.', esc_url($_FILES['wpm_import_file']['name']));
        $extension = strtolower(end($extensionExploded));

        if($extension!='json') {
            wp_die(__('Please upload a valid .json file'));
        }

        $import_file = $_FILES['wpm_import_file']['tmp_name'];

        if(empty($import_file)) {
            wp_die( __( 'Please upload a file to import', 'wp-maintenance' ) );
        }

        // Retrieve the settings from the file and convert the json object to an array.
        $importTabSettings = (array) json_decode(file_get_contents($import_file), true);
        if( isset($importTabSettings) ) {

            foreach($importTabSettings as $tabName=>$tabValue) {

                if($tabName=='active') {
                    update_option('wp_maintenance_active', sanitize_text_field($tabValue));
                } else {
                    $updateSetting = wpm_update_settings($tabValue, 'wp_maintenance_'.$tabName);
                }
            }

            echo '<div id="message" class="updated fade"><p><strong>'.__('New settings imported successfully!', 'wp-maintenance').'</strong></p></div>';
        }

    }

    /* Check le Mode Maintenance si on doit l'activer ou non */
    function wpm_check_active() {

        if(get_option('wp_maintenance_settings')) { extract(get_option('wp_maintenance_settings')); }
        $paramMMode = get_option('wp_maintenance_settings');

        /* Récupère le status */
        $statusActive = get_option('wp_maintenance_active');

        // Récupère les ip autorisee
        $paramIpAddress = get_option('wp_maintenance_ipaddresses');

        /* Désactive le mode maintenance pour les IP définies */
        if(isset($paramIpAddress) && $paramIpAddress!='' && is_array($paramIpAddress)) {

            if( WPM_VERSION <= '6.0.9') {

                $ip_autorized = array();
                $lienIpAddress = explode("\r\n", $paramIpAddress);
                foreach($lienIpAddress as $ipAutorized) {
                    if($ipAutorized!='') {
                        array_push($ip_autorized, $ipAutorized);
                    }
                }
                if(array_search(wpm_get_ip(), $ip_autorized)!== FALSE) {
                    $statusActive = 0;
                }

            } else {
                foreach($paramIpAddress as $ipAutorized) {
                    //error_log(wpm_get_ip().' == '.$ipAutorized);
                    if($ipAutorized!='' && wpm_get_ip() == $ipAutorized) {    
                        $statusActive = 0;
                    }
                }
            }
            
        }

        /* Désactive le mode maintenance pour les Roles définis */
        if(get_option('wp_maintenance_limit')) { extract(get_option('wp_maintenance_limit')); }
        $paramLimit = get_option('wp_maintenance_limit');

        if(isset($paramLimit) && !empty($paramLimit) && is_array($paramLimit)) {
            foreach($paramLimit as $limitrole) {

                if( is_user_logged_in() ) {
                    $user_id = get_current_user_id(); 
                    $user_info = get_userdata($user_id);
                    $user_role = implode(', ', $user_info->roles);
                    if( $limitrole == $user_role ) {
                        $statusActive = 0;
                    }
                    //error_log('limit: '.$limitrole.' - role: '.$user_role);
                }
            }
        }

        /* Désactive le mode maintenance pour les PAGE ID définies */
        /*if( isset($paramMMode['id_pages']) && !empty($paramMMode['id_pages']) ) {
            $listPageId = explode(',', $paramMMode['id_pages']);
            foreach($listPageId as $keyPageId => $valPageId) {
                if( $valPageId == get_the_ID() ) {
                    $statusActive = 0;
                }
            }
        }*/
  
        /* On désactive le mode maintenance pour les admins */
        if( current_user_can('administrator') == true ) {
            $statusActive = 0;
        }
        /* Mode Preview */
        if( isset($_GET['wpmpreview']) && $_GET['wpmpreview']=='true' ) { 
            $statusActive = 1;
        }

        return $statusActive;
    }

    /* Mode Maintenance */
    function wpm_maintenance_mode() {

        global $post;

        if(get_option('wp_maintenance_settings')) { extract(get_option('wp_maintenance_settings')); }
        $paramMMode = get_option('wp_maintenance_settings');

        $paramSocialOption = get_option('wp_maintenance_social_options');

        // Récupère les paramètres sauvegardés Options
        if(get_option('wp_maintenance_settings_options')) { extract(get_option('wp_maintenance_settings_options')); }
        $paramsOptions = get_option('wp_maintenance_settings_options');

        // Récupère les paramètres sauvegardés compte à rebours
        if(get_option('wp_maintenance_settings_countdown')) { extract(get_option('wp_maintenance_settings_countdown')); }
        $paramsCountdown = get_option('wp_maintenance_settings_countdown');

        /* on doit retourner 12/31/2020 5:00 AM */
        $dateNow = strtotime(date("Y-m-d H:i:s")) + 3600 * get_option('gmt_offset');
        if( isset($paramsCountdown['cptdate']) && !empty($paramsCountdown['cptdate']) ) {
            $dateFinCpt = strtotime( date( str_replace('/', '-', $paramsCountdown['cptdate']).' '.$paramsCountdown['cpttime'].':00') );
            $dateCpt = date( 'm/d/Y h:i A', strtotime( $paramsCountdown['cptdate'].' '.$paramsCountdown['cpttime'] ) );
        } else {
            $dateCpt = '';
        }

        /* Si on a un epage maintenance.php dans le theme */
        if ( file_exists( get_stylesheet_directory() ) && file_exists( get_stylesheet_directory() . '/maintenance.php')) {
            $urlTpl = get_stylesheet_directory() . '/maintenance.php';
        } 
        /* Si on a une page maintenance.php dans le theme parent */
        elseif( file_exists( get_template_directory() ) && file_exists( get_template_directory() . '/maintenance.php') ) {
            $urlTpl = get_template_directory() . '/maintenance.php';
        } else {
            $urlTpl = '';
        }

        if( isset($paramsOptions['pageperso']) && $paramsOptions['pageperso']==1 && $urlTpl !== '' ) {
            include_once( $urlTpl );
            die();
        }  
        
        /* Si on désactive le mode maintenance en fin de compte à rebours */
        if( ( isset($paramsCountdown['disable']) && $paramsCountdown['disable']==1 ) && $this->wpm_check_active() == 1 ) {

            if( $dateNow > $dateFinCpt ) {
                $ChangeStatus = wpm_change_active();
                $disableCounter = wpm_update_settings( array('disable'=> 0) );
            }
        }

        $statusPageActive = 1;
        /*Désactive le mode maintenance pour les PAGE ID définies */
        if( isset($paramsOptions['id_pages']) && !empty($paramsOptions['id_pages']) ) {
            $listPageId = explode(',', $paramsOptions['id_pages']);
            foreach($listPageId as $keyPageId => $valPageId) {
                if( isset($post->ID) && trim($valPageId) == $post->ID ) {
                    $statusPageActive = 0;
                }
            }
        }

        // Prevetn Plugins from caching
        // Disable caching plugins. This should take care of:
        //   - W3 Total Cache
        //   - WP Super Cache
        //   - ZenCache (Previously QuickCache)
        if(!defined('DONOTCACHEPAGE')) {
            define('DONOTCACHEPAGE', true);
        }
        if(!defined('DONOTCDN')) {
            define('DONOTCDN', true);
        }
        if(!defined('DONOTCACHEDB')) {
            define('DONOTCACHEDB', true);
        }
        if(!defined('DONOTMINIFY')) {
            define('DONOTMINIFY', true);
        }
        if(!defined('DONOTCACHEOBJECT')) {
            define('DONOTCACHEOBJECT', true);
        }
        nocache_headers();
        if ($statusPageActive == 1) {

            if( isset($paramsOptions['error_503']) && $paramsOptions['error_503']== 1 ) {
                header('HTTP/1.1 503 Service Temporarily Unavailable');
                header('Status: 503 Service Temporarily Unavailable');
                header('Retry-After: 86400'); // retry in a day
            }
            
            $template = $this->wpm_get_default_template();
            require_once( WPM_DIR.'/themes/default/functions.php' );

            $template_tags = array (
                "{TitleSEO}" => sanitize_text_field(wpm_title_seo()),
                "{MetaDescription}" => sanitize_text_field(wpm_metadescription()),
                "{HeaderCode}" => wpm_headercode(),
                "{Head}" => wpm_head(),
                "{Logo}" => wpm_logo(),
                "{Version}" => WPM_VERSION,
                "{Title}" => sanitize_text_field(wpm_title()),
                "{Text}" => wpm_text(),
                "{Favicon}" => wpm_favicon(), 
                "{CustomCSS}" => wpm_customcss(),
                "{TopSocialIcon}" => wpm_social_position("top"),
                "{BottomSocialIcon}" => wpm_social_position("bottom"),
                "{FooterText}" => wpm_footer_text(),
                "{AddStyleWysija}" => sanitize_text_field(wpm_stylenewsletter()),
                "{Newsletter}" => wpm_newsletter(),
                "{Counter}" => WPM_Countdown::display($dateCpt),
                "{Url}" => WPM_PLUGIN_URL
            );
            
            echo strtr($template, $template_tags);
            exit();
        } 
    }

}


?>

AnonSec - 2021