PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 2.0.3
Adminify – White Label, Admin Menu Editor, Login Customizer v2.0.3
4.3.1 4.3.0 4.2.26 4.2.25 4.2.24 4.2.23 4.2.22 4.2.21 4.2.20 4.2.19 4.2.18 4.2.17 4.2.16 4.2.15 4.2.14 4.2.13 4.2.12 4.2.11 4.2.10 4.2.9 4.2.8 4.2.7 4.2.6 4.2.5 4.1.17 All 164 releases
adminify / Inc / Modules / ServerInformation / ServerInformation.php

ServerInformation.php in Adminify – White Label, Admin Menu Editor, Login Customizer 2.0.3, at Inc/Modules/ServerInformation/ServerInformation.php

512 lines 18.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPAdminify\Inc\Modules\ServerInformation;
4
5 use WPAdminify\Inc\Modules\ServerInformation\ServerInfo_WP_Details;
6 use WPAdminify\Inc\Modules\ServerInformation\ServerInfo_Server_Details;
7 use WPAdminify\Inc\Modules\ServerInformation\ServerInfo_PHP_INI_Details;
8 use WPAdminify\Inc\Modules\ServerInformation\ServerInfo_Htaccess_Details;
9 use WPAdminify\Inc\Modules\ServerInformation\ServerInfo_Robots_Details;
10 use WPAdminify\Inc\Modules\ServerInformation\ServerInfo_Error_Logs_Details;
11
12 // no direct access allowed
13 if (!defined('ABSPATH')) exit;
14
15 /**
16 * WPAdminify
17 * @package Server Information
18 *
19 * @author WP Adminify <support@wpadminify.com>
20 */
21
22 class ServerInformation
23 {
24 private $url;
25 public $prefix = '_wpadminify_server_info';
26
27 public function __construct()
28 {
29
30 if ( is_multisite() && ! is_network_admin() ) return; // only display to network admin if multisite is enbaled
31
32 $this->url = WP_ADMINIFY_URL . 'Inc/Modules/ServerInformation';
33 add_action('adminify_loaded', [$this, 'jltwp_adminify_server_info_menu']);
34
35 if (is_admin()) {
36 add_action('admin_enqueue_scripts', [$this, 'jltwp_adminify_server_info_styles'], 99);
37
38
39 // Refresh Debug Log
40 add_action('wp_ajax_jltwp_adminify_error_log_content_refresh', [$this, 'jltwp_adminify_error_log_content_refresh']);
41 add_action('wp_ajax_nopriv_jltwp_adminify_error_log_content_refresh', [$this, 'jltwp_adminify_error_log_content_refresh']);
42
43 // Clear Debug Log
44 add_action('wp_ajax_jltwp_adminify_error_log_content_clear', [$this, 'jltwp_adminify_error_log_content_clear']);
45 add_action('wp_ajax_nopriv_jltwp_adminify_error_log_content_clear', [$this, 'jltwp_adminify_error_log_content_clear']);
46 }
47 }
48
49
50
51 /**
52 * Server Information Script/Styles
53 *
54 * @return void
55 */
56 public function jltwp_adminify_server_info_styles()
57 {
58 global $pagenow;
59
60 if (('admin.php' === $pagenow) && ('adminify-server-info' === $_GET['page'])) {
61 echo '<style>.wp-adminify_page_adminify-server-info .adminify-header-inner{padding:0;}.wp-adminify_page_adminify-server-info .adminify-field-subheading{font-size:20px; padding-left:0;}.wp-adminify_page_adminify-server-info .adminify-nav,.wp-adminify_page_adminify-server-info .adminify-search,.wp-adminify_page_adminify-server-info .adminify-footer,.wp-adminify_page_adminify-server-info .adminify-reset-all,.wp-adminify_page_adminify-server-info .adminify-expand-all,.wp-adminify_page_adminify-server-info .adminify-header-left,.wp-adminify_page_adminify-server-info .adminify-reset-section,.wp-adminify_page_adminify-server-info .adminify-nav-background{display: none !important;}.wp-adminify_page_adminify-server-info .adminify-nav-normal + .adminify-content{margin-left: 0;}
62
63 /* If needed for white top-bar */
64 .wp-adminify_page_adminify-server-info .adminify-header-inner {
65 background-color: #fafafa !important;
66 border-bottom: 1px solid #f5f5f5;
67 }
68 .wp-adminify .adminify-server-info .adminify-buttons{
69 display: none !important;
70 }
71 </style>';
72
73 wp_enqueue_script('wp-adminify-error-logs', $this->url . '/error-logs.js', ['jquery'], null, true);
74 wp_localize_script('wp-adminify-error-logs', 'WPAdminify', $this->adminify_error_logs_object());
75 }
76 }
77
78
79
80 /**
81 * JS Object
82 *
83 * @return void
84 */
85 public function adminify_error_logs_object()
86 {
87 return array(
88 'ajax_url' => admin_url('admin-ajax.php'),
89 'security_nonce' => wp_create_nonce('adminify-error-logs-security-nonce'),
90 'label_update' => esc_html__('Will be updated...', WP_ADMINIFY_TD),
91 'label_clear' => esc_html__('Will be cleared...', WP_ADMINIFY_TD),
92 'label_done' => esc_html__('Done!', WP_ADMINIFY_TD)
93 );
94 }
95
96 public function jltwp_adminify_server_info_menu()
97 {
98 if (!class_exists('ADMINIFY')) {
99 return;
100 }
101
102
103 // WP Adminify Server Infos Settings
104 \ADMINIFY::createOptions($this->prefix, array(
105
106 // Framework Title
107 'framework_title' => 'WP Adminify Server Info <small>by Jewel Theme</small>',
108 'framework_class' => 'adminify-server-info',
109
110 // menu settings
111 'menu_title' => 'Server Info',
112 'menu_slug' => 'adminify-server-info',
113 'menu_type' => 'submenu', // menu, submenu, options, theme, etc.
114 'menu_capability' => 'manage_options',
115 'menu_icon' => '',
116 'menu_position' => 56,
117 'menu_hidden' => false,
118 'menu_parent' => 'wp-adminify-settings',
119
120 //Footer Credits
121 'footer_text' => ' ',
122 'footer_after' => ' ',
123 'footer_credit' => ' ',
124
125 // menu extras
126 'show_bar_menu' => false,
127 'show_sub_menu' => false,
128 'show_in_network' => true,
129 'show_in_customizer' => false,
130
131 'show_search' => false,
132 'show_reset_all' => false,
133 'show_reset_section' => false,
134 'show_footer' => false,
135 'show_all_options' => false,
136 'show_form_warning' => false,
137 'sticky_header' => false,
138 'save_defaults' => false,
139 'ajax_save' => false,
140
141 // admin bar menu settings
142 'admin_bar_menu_icon' => '',
143 'admin_bar_menu_priority' => 45,
144
145
146 // database model
147 'database' => 'network', // options, transient, theme_mod, network(multisite support)
148 'transient_time' => 0,
149
150
151 // typography options
152 'enqueue_webfont' => false,
153 'async_webfont' => false,
154
155 // others
156 'output_css' => false,
157
158 // theme and wrapper classname
159 'nav' => 'normal',
160 'theme' => 'dark',
161 'class' => 'wp-adminify_page_adminify-server-info',
162 ));
163
164
165 // Server Info Section
166 \ADMINIFY::createSection(
167 $this->prefix,
168 array(
169 'title' => 'Server Info',
170 'icon' => 'fas fa-rocket',
171 'fields' => array(
172
173 array(
174 'id' => 'server-info-tab',
175 'type' => 'tabbed',
176 'title' => '',
177 'tabs' => array(
178
179 array(
180 'title' => 'WordPress',
181 'icon' => 'fab fa-wordpress',
182 'fields' => array(
183 array(
184 'id' => 'wordpress',
185 'type' => 'callback',
186 'function' => 'WPAdminify\Inc\Modules\ServerInformation\ServerInformation::jltwp_adminify_wordpress_details'
187 ),
188 )
189 ),
190 array(
191 'title' => 'Server',
192 'icon' => 'fa fa-gear',
193 'fields' => array(
194 array(
195 'id' => 'server',
196 'type' => 'callback',
197 'function' => 'WPAdminify\Inc\Modules\ServerInformation\ServerInformation::jltwp_adminify_server_details'
198 ),
199 )
200 ),
201 array(
202 'title' => 'PHP Info',
203 'icon' => 'fa fa-gear',
204 'fields' => array(
205 array(
206 'id' => 'php_info',
207 'type' => 'callback',
208 'function' => 'WPAdminify\Inc\Modules\ServerInformation\ServerInformation::jltwp_adminify_get_phpinfo'
209 ),
210 )
211 ),
212 array(
213 'title' => 'MySQL',
214 'icon' => 'fa fa-gear',
215 'fields' => array(
216 array(
217 'id' => 'mysql_info',
218 'type' => 'callback',
219 'function' => 'WPAdminify\Inc\Modules\ServerInformation\ServerInformation::jltwp_adminify_get_mysqlinfo'
220 ),
221 )
222 ),
223 array(
224 'title' => 'Constants',
225 'icon' => 'fa fa-gear',
226 'fields' => array(
227 array(
228 'id' => 'constants',
229 'type' => 'callback',
230 'function' => 'WPAdminify\Inc\Modules\ServerInformation\ServerInformation::jltwp_adminify_constant_details'
231 ),
232 )
233 ),
234 array(
235 'title' => '.htaccess File',
236 'icon' => 'fa fa-gear',
237 'fields' => array(
238 array(
239 'id' => 'htaccess',
240 'type' => 'callback',
241 'function' => 'WPAdminify\Inc\Modules\ServerInformation\ServerInformation::jltwp_adminify_htacces_details'
242 ),
243 )
244 ),
245 array(
246 'title' => 'php.ini File',
247 'icon' => 'fa fa-gear',
248 'fields' => array(
249 array(
250 'id' => 'php_ini',
251 'type' => 'callback',
252 'function' => 'WPAdminify\Inc\Modules\ServerInformation\ServerInformation::jltwp_adminify_php_ini_details'
253 ),
254 )
255 ),
256 array(
257 'title' => 'Robots.txt File',
258 'icon' => 'fa fa-gear',
259 'fields' => array(
260 array(
261 'id' => 'robots_txt',
262 'type' => 'callback',
263 'function' => 'WPAdminify\Inc\Modules\ServerInformation\ServerInformation::jltwp_adminify_robots_details'
264 ),
265 )
266 ),
267 array(
268 'title' => 'Error Logs',
269 'icon' => 'fa fa-gear',
270 'fields' => array(
271 array(
272 'id' => 'error_logs',
273 'type' => 'callback',
274 'function' => '\WPAdminify\Inc\Modules\ServerInformation\ServerInformation::jltwp_adminify_error_log_details'
275 ),
276 )
277 ),
278
279
280 )
281 ),
282
283
284
285 )
286 )
287 );
288 }
289
290
291 /**
292 * Server Details
293 */
294 public static function jltwp_adminify_server_details()
295 {
296 new ServerInfo_Server_Details();
297 }
298
299
300 /**
301 * WordPress Details
302 */
303 public static function jltwp_adminify_wordpress_details()
304 {
305 new ServerInfo_WP_Details();
306 }
307
308
309 /**
310 * Constant Details
311 */
312 public static function jltwp_adminify_constant_details()
313 {
314 new ServerInfo_Constant_Details();
315 }
316
317 /**
318 * .htaccess file Details
319 */
320 public static function jltwp_adminify_htacces_details()
321 {
322 new ServerInfo_Htaccess_Details();
323 }
324
325 /**
326 * php.ini file Details
327 */
328 public static function jltwp_adminify_php_ini_details()
329 {
330 new ServerInfo_PHP_INI_Details();
331 }
332
333 /**
334 * Robots file Details
335 */
336 public static function jltwp_adminify_robots_details()
337 {
338 new ServerInfo_Robots_Details();
339 }
340
341 /**
342 * Error Logs Details
343 */
344 public static function jltwp_adminify_error_log_details()
345 {
346 new ServerInfo_Error_Logs_Details();
347 }
348
349 /**
350 * Error Logs Details
351 */
352 public static function jltwp_adminify_get_phpinfo()
353 {
354
355 if (!class_exists('DOMDocument')) {
356 echo '<div class="wrap" id="PHPinfo">';
357 echo '<h2>PHP ' . phpversion() . '</h2>';
358 echo 'You need <a href="http://php.net/manual/en/class.domdocument.php" target="_blank">DOMDocument extension</a> to be enabled.';
359 echo '</div>';
360 } else {
361 ob_start();
362 phpinfo();
363 $phpinfo = ob_get_contents();
364 ob_end_clean();
365
366 // Use DOMDocument to parse phpinfo()
367 $html = new \DOMDocument('1.0', 'UTF-8');
368 $internal_errors = libxml_use_internal_errors(true);
369 $html->loadHTML($phpinfo);
370 libxml_use_internal_errors($internal_errors);
371
372 // Style process
373 $tables = $html->getElementsByTagName('table');
374 foreach ($tables as $table) {
375 $table->setAttribute('class', 'widefat');
376 }
377
378 // We only need the <body>
379 $xpath = new \DOMXPath($html);
380 $body = $xpath->query('/html/body');
381
382 // Save HTML fragment
383 $phpinfo_html = $html->saveXml($body->item(0));
384
385 echo '<div class="wrap" id="PHPinfo">';
386 echo '<h2>PHP ' . phpversion() . '</h2>';
387 echo $phpinfo_html;
388 echo '</div>';
389 }
390 }
391
392
393 /**
394 * Get MYSQL Information
395 *
396 * @return void
397 */
398 public static function jltwp_adminify_get_mysqlinfo()
399 {
400 global $wpdb;
401 $sqlversion = $wpdb->get_var("SELECT VERSION() AS version");
402 $mysqlinfo = $wpdb->get_results("SHOW VARIABLES");
403
404 if (is_rtl()) { ?>
405 <style type="text/css">
406 #MYSQLinfo,
407 #MYSQLinfo table,
408 #MYSQLinfo th,
409 #MYSQLinfo td {
410 direction: ltr;
411 text-align: left;
412 }
413
414 #MYSQLinfo h2 {
415 padding: 0.5em 0 0;
416 }
417 </style>
418 <?php }
419 echo '<div class="wrap" id="MYSQLinfo" >' . "\n";
420 echo "<h2>MYSQL $sqlversion</h2>\n";
421
422 if ($mysqlinfo) {
423 echo '<br class="clear" />' . "\n";
424 echo '<table class="widefat" dir="ltr">' . "\n";
425 echo '<thead><tr><th>' . __('Variable Name', WP_ADMINIFY_TD) . '</th><th>' . __('Value', WP_ADMINIFY_TD) . '</th></tr></thead><tbody>' . "\n";
426 foreach ($mysqlinfo as $info) {
427 echo '<tr class="" onmouseover="this.className=\'highlight\'" onmouseout="this.className=\'\'"><td>' . $info->Variable_name . '</td><td>' . htmlspecialchars($info->Value) . '</td></tr>' . "\n";
428 }
429 echo '</tbody></table>' . "\n";
430 }
431 echo '</div>' . "\n";
432 }
433
434
435 // Refresh Button Ajax
436 public function jltwp_adminify_error_log_content_refresh()
437 {
438 if (defined('DOING_AJAX') && DOING_AJAX && check_ajax_referer('adminify-error-logs-security-nonce', 'security') > 0) {
439
440 if ($_POST) {
441
442 // Get user action to refresh error log file
443 $request = json_decode(stripslashes($_POST['fileData']));
444
445 if (defined('DOING_AJAX') && DOING_AJAX) {
446 $action = $request[0]->command;
447 }
448
449
450 $file_content = '';
451
452 // Check for user refreshing request
453 if ($action == "refresh_error_log") {
454
455 // Get the wp "debug.log" file
456 $file = ServerInfo_Error_Logs_Details::jltwp_adminify_error_log();
457
458 // Get the wp "debug.log" file content
459 $file_content = ServerInfo_Error_Logs_Details::jltwp_adminify_error_log_content($file);
460 }
461
462 wp_send_json(array('file_content' => $file_content));
463 }
464 }
465
466 die();
467 }
468
469
470
471 public function jltwp_adminify_error_log_content_clear()
472 {
473
474 if (defined('DOING_AJAX') && DOING_AJAX && check_ajax_referer('adminify-error-logs-security-nonce', 'security') > 0) {
475
476 if ($_POST) {
477
478 // Get user action to clear error log file
479 $request = json_decode(stripslashes($_POST['fileData']));
480
481 if (defined('DOING_AJAX') && DOING_AJAX) {
482 $action = $request[0]->command;
483 }
484
485
486 $file_content = '';
487
488 // Check for user clearing request
489 if ($action == "clear_error_log") {
490
491 // Call wp file system
492 global $wp_filesystem;
493 WP_Filesystem();
494
495 // Get the wp "debug.log" file
496 $file = ServerInfo_Error_Logs_Details::jltwp_adminify_error_log();
497
498 // Save no content to "debug.log" file the clear the file content
499 $wp_filesystem->put_contents($file, '', 0644);
500
501 // Get the wp "debug.log" file content
502 $file_content = ServerInfo_Error_Logs_Details::jltwp_adminify_error_log_content($file);
503 }
504
505 return wp_send_json(array('file_content' => $file_content));
506 }
507 }
508
509 die();
510 }
511 }
512