PluginProbe
Patchstack – WordPress & Plugins Security / 2.1.0
Patchstack – WordPress & Plugins Security v2.1.0
2.3.7 trunk 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.2 2.1.20 2.1.21 2.1.22 2.1.23 2.1.24 2.1.25 2.1.3 2.1.4 2.1.5 2.1.6 All 49 releases
patchstack / includes / admin / menu.php

menu.php in Patchstack – WordPress & Plugins Security 2.1.0, at includes/admin/menu.php

144 lines 6.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 // Do not allow the file to be called directly.
4 if ( ! defined( 'ABSPATH' ) ) {
5 exit;
6 }
7
8 /**
9 * This class used for the admin menu and to enqueue styles and/or scripts.
10 */
11 class P_Admin_Menu extends P_Core {
12
13 /**
14 * Add the actions required for the admin menu.
15 *
16 * @param Patchstack $core
17 * @return void
18 */
19 public function __construct( $core ) {
20 parent::__construct( $core );
21 add_action( 'admin_head', array( $this, 'add_meta_nonce' ) );
22 add_action( 'admin_menu', array( $this, 'add_menu_pages' ) );
23 add_action( 'network_admin_menu', array( $this, 'network_menu' ) );
24 add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_styles' ) );
25 add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
26 add_filter( 'plugin_action_links_' . $this->plugin->basename, array( $this, 'admin_settings' ) );
27 }
28
29 /**
30 * Add Patchstack nonce as meta tag so we can access it in our JavaScript files.
31 *
32 * @return void
33 */
34 public function add_meta_nonce() {
35 $screen = get_current_screen();
36 if ( current_user_can( 'manage_options' ) && isset( $screen->base ) && ( $screen->base == 'dashboard' || stripos( $screen->base, 'patchstack' ) !== false ) ) {
37 echo '<meta name="patchstack_nonce" value="' . wp_create_nonce( 'patchstack-nonce' ) . '">';
38 }
39 }
40
41 /**
42 * Register the wp-admin menu items.
43 *
44 * @return void
45 */
46 public function add_menu_pages() {
47 add_submenu_page( $this->plugin->name, 'Main', __( 'Settings', 'patchstack' ), 'manage_options', $this->plugin->name, array( $this, 'render_settings_page' ) );
48 add_options_page( 'Security', 'Security', 'manage_options', $this->plugin->name );
49 }
50
51 /**
52 * Register the menu pages for multisite/networks.
53 *
54 * @return void
55 */
56 public function network_menu() {
57 add_menu_page( 'Patchstack', 'Patchstack', 'manage_options', 'patchstack-multisite', array( $this->plugin->multisite, 'sites_section_callback' ) );
58 add_submenu_page( 'patchstack-multisite', 'Activate', 'Activate', 'manage_options', 'patchstack-multisite-settings&tab=multisite', array( $this->plugin->multisite, 'settings' ) );
59 add_submenu_page( 'patchstack-multisite', 'Sites', 'Sites', 'manage_options', 'patchstack-multisite', array( $this->plugin->multisite, 'sites_section_callback' ) );
60 add_submenu_page( 'patchstack-multisite', 'Settings', 'Settings', 'manage_options', 'patchstack-multisite-settings', array( $this, 'render_settings_page' ) );
61 }
62
63 /**
64 * Render the settings page.
65 *
66 * @return void
67 */
68 public function render_settings_page() {
69 require dirname( __FILE__ ) . '/../views/pages/settings.php';
70 }
71
72 /**
73 * Register the stylesheets for the backend.
74 *
75 * @return void
76 */
77 public function enqueue_styles() {
78 $screen = get_current_screen();
79
80 // Load the Patchstack style on all Patchstack pages except site overview.
81 if ( isset( $screen->base, $_GET['page'] ) && stripos( $screen->base, 'patchstack' ) !== false && $_GET['page'] != 'patchstack-multisite' ) {
82 wp_enqueue_style( 'patchstack', $this->plugin->url . 'assets/css/patchstack.css', array(), $this->plugin->version );
83 }
84
85 // Only load the selectize CSS file on the firewall settings page.
86 if ( isset( $screen->base ) && stripos( $screen->base, 'patchstack' ) !== false && isset( $_GET['tab'] ) && $_GET['tab'] == 'firewall' ) {
87 wp_enqueue_style( 'patchstack-selectize', $this->plugin->url . 'assets/css/selectize.min.css', array( ), $this->plugin->version );
88 }
89
90 // Only load the dataTables CSS fileon the logs page.
91 if ( isset( $screen->base ) && stripos( $screen->base, 'patchstack' ) !== false && isset( $_GET['tab'] ) && $_GET['tab'] == 'logs' ) {
92 wp_enqueue_style( 'patchstack-logs', $this->plugin->url . 'assets/css/jquery.dataTables.min.css', array( ), $this->plugin->version );
93 }
94 }
95
96 /**
97 * Register the JavaScript for the admin area.
98 *
99 * @return void
100 */
101 public function enqueue_scripts() {
102 $screen = get_current_screen();
103 if ( isset( $screen->base ) && ( stripos( $screen->base, 'patchstack' ) !== false ) && current_user_can( 'manage_options' ) ) {
104 wp_enqueue_script( 'patchstack', $this->plugin->url . 'assets/js/patchstack.js', array( 'jquery' ), $this->plugin->version );
105 wp_enqueue_script( 'google-jsapi', 'https://www.google.com/jsapi' );
106 wp_localize_script(
107 'patchstack',
108 'PatchstackVars',
109 array(
110 'ajaxurl' => admin_url( 'admin-ajax.php' ),
111 'nonce' => wp_create_nonce( 'patchstack-nonce' ),
112 'error_message' => __( 'Sorry, there was a problem processing your request.', 'patchstack' ),
113 )
114 );
115 }
116
117 // Only load the colorpicker on the cookie notice settings page.
118 if ( isset( $screen->base ) && stripos( $screen->base, 'patchstack' ) !== false && isset( $_GET['tab'] ) && $_GET['tab'] == 'cookienotice' ) {
119 wp_enqueue_script( 'patchstack-jscolor', $this->plugin->url . 'assets/js/jscolor.js', array( ), $this->plugin->version );
120 }
121
122 // Only load the selectize library on the firewall settings page.
123 if ( isset( $screen->base ) && stripos( $screen->base, 'patchstack' ) !== false && isset( $_GET['tab'] ) && $_GET['tab'] == 'firewall' ) {
124 wp_enqueue_script( 'patchstack-selectize', $this->plugin->url . 'assets/js/selectize.min.js', array( ), $this->plugin->version );
125 }
126
127 // Only load the dataTables related libraries on the logs page.
128 if ( isset( $screen->base ) && stripos( $screen->base, 'patchstack' ) !== false && isset( $_GET['tab'] ) && $_GET['tab'] == 'logs' ) {
129 wp_enqueue_script( 'patchstack-bootstrap', $this->plugin->url . 'assets/js/bootstrap.min.js', array( 'jquery' ), $this->plugin->version );
130 wp_enqueue_script( 'patchstack-logs', $this->plugin->url . 'assets/js/jquery.dataTables.min.js', array( ), $this->plugin->version );
131 }
132 }
133
134 /**
135 * Add the "Settings" hyperlink to the Patchstack section on the plugins page of WordPress.
136 *
137 * @param array $links
138 * @return array
139 */
140 public function admin_settings( $links ) {
141 return array_merge( array( '<a href="admin.php?page=patchstack&tab=firewall">' . __( 'Settings', 'patchstack' ) . '</a>' ), $links );
142 }
143 }
144