' . __( 'Go Pro', 'it-l10n-ithemes-security-pro' ) . '', $capability, 'itsec-go-pro', array( $this, 'show_page' ) ); } if ( defined( 'ITSEC_DEBUG' ) && ITSEC_DEBUG ) { $page_refs[] = add_submenu_page( $parent, __( 'iThemes Security Debug', 'it-l10n-ithemes-security-pro' ), __( 'Debug' ), $capability, 'itsec-debug', array( $this, 'show_page' ) ); } foreach ( $page_refs as $page_ref ) { add_action( "load-$page_ref", array( $this, 'load' ) ); } } private function get_page_id() { global $plugin_page; if ( isset( $this->page_id ) ) { return $this->page_id; } if ( wp_doing_ajax() ) { if ( isset( $_REQUEST['action'] ) && preg_match( '/^itsec_(.+)_page$/', $_REQUEST['action'], $match ) ) { $this->page_id = $match[1]; } } elseif ( strpos( $plugin_page, 'itsec-' ) === 0 ) { $this->page_id = substr( $plugin_page, 6 ); } elseif ( strpos( $plugin_page, 'itsec' ) === 0 ) { $this->page_id = 'settings'; } if ( ! isset( $this->page_id ) ) { $this->page_id = ''; } return $this->page_id; } public function load() { $this->load_file( 'page-%s.php' ); } public function show_page() { $page_id = $this->get_page_id(); if ( 'settings' === $page_id ) { $url = network_admin_url( 'admin.php?page=itsec' ); } else { $url = network_admin_url( 'admin.php?page=itsec-' . $this->get_page_id() ); } do_action( 'itsec-page-show', $url ); } public function handle_ajax_request() { $this->load_file( 'page-%s.php' ); do_action( 'itsec-page-ajax' ); } private function load_file( $file ) { $id = $this->get_page_id(); if ( empty( $id ) ) { if ( isset( $GLOBALS['pagenow'], $_GET['page'] ) && 'admin.php' === $GLOBALS['pagenow'] && strpos( $_GET['page'], 'itsec-' ) === 0 ) { $id = substr( $_GET['page'], 6 ); } else { return; } } $id = str_replace( '_', '-', $id ); $file = __DIR__ . '/' . sprintf( $file, $id ); $file = apply_filters( "itsec-admin-page-file-path-$id", $file ); if ( is_file( $file ) ) { require_once( $file ); } } public function handle_user_setting() { if ( 'itsec-settings-view' !== $_REQUEST['setting'] ) { wp_send_json_error(); } $_REQUEST['setting'] = sanitize_title_with_dashes( $_REQUEST['setting'] ); if ( ! wp_verify_nonce( $_REQUEST['itsec-user-setting-nonce'], 'set-user-setting-' . $_REQUEST['setting'] ) ) { wp_send_json_error(); } if ( ! apply_filters( 'itsec-user-setting-valid-' . $_REQUEST['setting'], true, $_REQUEST['value'] ) ) { wp_send_json_error(); } if ( false === update_user_meta( get_current_user_id(), $_REQUEST['setting'], $_REQUEST['value'] ) ) { wp_send_json_error(); } wp_send_json_success(); } public function validate_view( $valid, $view ) { return in_array( $view, array( 'grid', 'list' ) ); } } new ITSEC_Admin_Page_Loader();