PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 1.0.5
Adminify – White Label, Admin Menu Editor, Login Customizer v1.0.5
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 1.0.5, at Inc/Modules/ServerInformation/ServerInformation.php

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