PATH:
home
/
thebhoeo
/
.trash
/
wp-maintenance
/
classes
<?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') ); } // disabled XMLRPC add_filter('xmlrpc_enabled', '__return_false'); /** Disable REST API **/ $checkActive = get_option('wp_maintenance_active'); add_filter( 'rest_authentication_errors', function( $result ) { // If a previous authentication check was applied, // pass that result along without modification. if ( true === $result || is_wp_error( $result ) ) { return $result; } // No authentication has been performed yet. // Return an error if user is not logged in. if ( ! is_user_logged_in() && (isset($checkActive) && $checkActive == 1) ) { return new WP_Error( 'rest_not_logged_in', __( 'You are not currently logged in.' ), array( 'status' => 401 ) ); } // Our custom authentication check should have no effect // on logged-in requests return $result; }); } /** * Display the default template */ function wpm_get_default_template() { $filesystem = wpm_get_filesystem(); $file = $filesystem->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' => '', 'iframe_newletter_width' => '540', 'iframe_newletter_height' => '305', 'iframe_newletter_src' => '', 'iframe_newletter_frameborder' => '0', 'iframe_newletter_scrolling' => 'auto', 'iframe_newletter_style' => '' ); 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' => 'Helvetica', 'font_bottom_size' => '12', 'font_bottom_weigth' => '', 'font_bottom_style' => '', 'newletter' => 0, 'newletter_font_text' => 'Helvetica', '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' => '', 'tiktok' => '', ); 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' => '', 'headercodecss' => '' ); 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_list_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.'&action=uninstall&_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() { // 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; }#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'; // Récupère les paramètres sauvegardés if(get_option('wp_maintenance_settings_options')) { extract(get_option('wp_maintenance_settings_options')); } $wpoptions = get_option('wp_maintenance_settings_options'); $remove_adminbar = 0; if( isset($wpoptions['remove_adminbar']) && $wpoptions['remove_adminbar']==1) { $remove_adminbar = 1; // If remove bar option is active } if( $remove_adminbar == 0 ) { 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') ); // 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 ) { // phpcs:ignore 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'), WPM_VERSION, true); wp_enqueue_script('wpm-my-upload'); wp_enqueue_style('jquery-defaut-style', WPM_URL.'js/lib/themes/default.css', array(), WPM_VERSION); wp_enqueue_style('jquery-date-style', WPM_URL.'js/lib/themes/default.date.css', array(), WPM_VERSION); wp_enqueue_style('jquery-time-style', WPM_URL.'js/lib/themes/default.time.css', array(), WPM_VERSION); wp_enqueue_style('jquery-fontselect-style', WPM_URL.'js/fontselect/fontselect.css', array(), WPM_VERSION); wp_enqueue_style( 'wp-color-picker' ); wp_enqueue_script( 'my-script-handle', WPM_URL.'js/wpm-color-options.js', array( 'wp-color-picker' ), WPM_VERSION, true ); wp_enqueue_style('thickbox'); /* Image picker */ wp_enqueue_style('imagepicker'); wp_enqueue_style('imagepicker', WPM_URL.'css/image-picker.css', array(), WPM_VERSION); wp_register_script('imagepickerjs', WPM_URL.'js/image-picker.min.js', 'jquery', WPM_VERSION, true); 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, true); wp_enqueue_script('wpm_sticky'); // 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', 'jquery', WPM_VERSION, true ); wp_enqueue_script('wpm-admin-fontselect'); wp_enqueue_style('admincss'); wp_enqueue_style('admincss', WPM_URL.'css/wpm-admin.css', array(), WPM_VERSION); } } function wpm_dashboard_page() { //must check that the user has the required capability if (!current_user_can('manage_options')) { wp_die( esc_html__("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( esc_html__("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( esc_html__("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( esc_html__("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( esc_html__("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( esc_html__("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( esc_html__("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( esc_html__("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( esc_html__("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 ) { // phpcs:ignore wp_register_script('wpm-picker', WPM_URL.'js/lib/picker.js', 'jquery', WPM_VERSION, true ); wp_enqueue_script('wpm-picker'); wp_register_script('wpm-datepicker', WPM_URL.'js/lib/picker.date.js', 'jquery', WPM_VERSION, true ); wp_enqueue_script('wpm-datepicker'); wp_register_script('wpm-timepicker', WPM_URL.'js/lib/picker.time.js', 'jquery', WPM_VERSION, true ); wp_enqueue_script('wpm-timepicker'); wp_register_script('wpm-legacy', WPM_URL.'js/lib/legacy.js', 'jquery', WPM_VERSION, true ); 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'), 'list_socialnetworks' => get_option('wp_maintenance_list_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).'-'.gmdate('m-d-Y').'.json'); header("Expires: 0"); echo json_encode($settingsJson); exit; } static function wpm_admin_url( $page, $module = '' ) { $module = $module ? '&module=' . $module : ''; $page = str_replace( '&', '_', $page ); $url = 'admin.php?page=wp-maintenance-' . $page . $module; return is_multisite() ? network_admin_url( $url ) : admin_url( $url ); } /** * 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; // Vérification de la taille maximale (2MB) $max_size = 2 * 1024 * 1024; if ($_FILES['wpm_import_file']['size'] > $max_size) { wp_die(esc_html__('Le fichier est trop volumineux. Taille maximale autorisée : 2MB', 'wp-maintenance')); } $extension = strtolower(pathinfo($_FILES['wpm_import_file']['name'], PATHINFO_EXTENSION)); if($extension != 'json') { wp_die( esc_html__( 'Please upload a valid .json file', 'send-pdf-for-contact-form-7' ) ); } // Vérification du type MIME $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime_type = finfo_file($finfo, $_FILES['wpm_import_file']['tmp_name']); finfo_close($finfo); if ($mime_type !== 'application/json') { wp_die(esc_html__('Type de fichier non autorisé. Seuls les fichiers JSON sont acceptés.', 'wp-maintenance')); } $import_file = $_FILES['wpm_import_file']['tmp_name']; if(empty($import_file)) { wp_die( esc_html__( 'Please upload a file to import', 'wp-maintenance' ) ); } $import = ! empty( $_FILES['wpm_import_file'] ) && is_array( $_FILES['wpm_import_file'] ) && isset( $_FILES['wpm_import_file']['type'], $_FILES['wpm_import_file']['name'] ) ? $_FILES['wpm_import_file'] : array(); $_post_action = isset($_POST['wpm_action']) ? $_POST['wpm_action'] : ''; $_POST['action'] = 'wp_handle_sideload'; $file = wp_handle_sideload( $import, array( 'mimes' => array( 'json' => 'application/json' ) ) ); $_POST['action'] = $_post_action; if ( ! isset( $file['file'] ) ) { return; } $filesystem = wpm_get_filesystem(); $settings = $filesystem->get_contents( $file['file'] ); // Vérification que le contenu est un JSON valide $importTabSettings = json_decode($settings, true); if (json_last_error() !== JSON_ERROR_NONE) { wp_die(esc_html__('Le fichier JSON est invalide.', 'wp-maintenance')); } // Liste des options autorisées $allowedOptions = [ 'active', 'settings', 'settings_colors', 'settings_countdown', 'settings_picture', 'settings_seo', 'settings_socialnetworks', 'list_socialnetworks', 'settings_footer', 'settings_options', 'limit', 'social_options', 'ipaddresses' ]; if( isset($importTabSettings) ) { foreach($importTabSettings as $tabName => $tabValue) { // Vérification que l'option est autorisée if (!in_array($tabName, $allowedOptions)) { continue; } 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')); } /* 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)) { foreach($paramIpAddress as $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); if( in_array($limitrole, $user_info->roles)) { $statusActive = 0; } } } } /* On désactive le mode maintenance pour les admins */ if( current_user_can('administrator') == true ) { $statusActive = 0; } /* Mode Preview - SÉCURISÉ : Seulement pour les administrateurs */ if( isset($_GET['wpmpreview']) && $_GET['wpmpreview']=='true' && current_user_can('manage_options') ) {// phpcs:ignore $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(gmdate("Y-m-d H:i:s")) + 3600 * get_option('gmt_offset'); if( isset($paramsCountdown['cptdate']) && !empty($paramsCountdown['cptdate']) ) { $dateFinCpt = strtotime( gmdate( str_replace('/', '-', $paramsCountdown['cptdate']).' '.$paramsCountdown['cpttime'].':00') ); $dateCpt = gmdate( '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 = ''; } // SÉCURITÉ : Validation supplémentaire du chemin de template if( isset($paramsOptions['pageperso']) && $paramsOptions['pageperso']==1 && $urlTpl !== '' ) { // Vérification que le fichier est bien dans un répertoire de thème autorisé $allowed_dirs = [get_stylesheet_directory(), get_template_directory()]; $is_safe = false; foreach($allowed_dirs as $allowed_dir) { if (strpos(realpath($urlTpl), realpath($allowed_dir)) === 0) { $is_safe = true; break; } } if ($is_safe && is_readable($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 && $paramsCountdown['active_cpt']==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(), "{Newsletter}" => wpm_newsletter(), "{Counter}" => WPM_Countdown::display($dateCpt), "{Url}" => WPM_PLUGIN_URL ); echo strtr($template, $template_tags); /* phpcs:ignore */ exit(); } } } ?>
[-] countdown.php
[edit]
[-] wp-maintenance.php
[edit]
[+]
..