PluginProbe
The WP Remote WordPress Plugin / trunk
The WP Remote WordPress Plugin vtrunk
6.72 6.69 6.65 6.62 6.48 6.47 4.87 4.97 5.05 5.09 5.16 5.22 5.24 5.25 5.38 5.41 5.42 5.45 5.47 5.53 5.56 5.65 5.68 5.72 5.73 All 53 releases
← All changes | callback/wings/info.php +92 -42 5.38trunk View file →
@@ -1,10 +1,10 @@
1 1 <?php
2 2
3 3 if (!defined('ABSPATH')) exit;
4 -if (!class_exists('BVInfoCallback')) :
4 +if (!class_exists('WPRInfoCallback')) :
5 5
6 -class BVInfoCallback extends BVCallbackBase {
6 +class WPRInfoCallback extends WPRCallbackBase {
7 7 public $db;
8 8 public $settings;
9 9 public $siteinfo;
10 10 public $bvinfo;
@@ -9,9 +9,9 @@
9 9 public $siteinfo;
10 10 public $bvinfo;
11 11 public $bvapi;
12 12
13 - const INFO_WING_VERSION = 1.8;
13 + const INFO_WING_VERSION = 2.7;
14 14
15 15 public function __construct($callback_handler) {
16 16 $this->db = $callback_handler->db;
17 17 $this->siteinfo = $callback_handler->siteinfo;
@@ -44,32 +44,22 @@
44 44 "comments" => get_object_vars(wp_count_comments())
45 45 );
46 46 }
47 47
48 - public function getLatestWooCommerceDB() {
49 - $version = false;
50 -
51 - if (defined('WC_ABSPATH') && file_exists(WC_ABSPATH . 'includes/class-wc-install.php')) {
52 - include_once WC_ABSPATH . 'includes/class-wc-install.php';
53 - }
54 -
55 - if (class_exists('WC_Install')) {
56 - $update_versions = array_keys(WC_Install::get_db_update_callbacks());
57 - usort($update_versions, 'version_compare');
58 - if (!empty($update_versions)) {
59 - $version = end($update_versions);
60 - }
61 - }
62 -
63 - return $version;
64 - }
65 -
66 48 public function addDBInfoToPlugin($pdata, $plugin_file) {
67 49 switch ($plugin_file) {
68 50 case "woocommerce/woocommerce.php":
69 51 $pdata['current_db_version'] = $this->settings->getOption('woocommerce_db_version');
70 - $pdata['latest_db_version'] = $this->getLatestWooCommerceDB();
52 + $pdata['latest_db_version'] = $this->bvinfo->getLatestWooCommerceDBVersion();
71 53 break;
54 + case "elementor/elementor.php":
55 + $pdata['current_db_version'] = $this->settings->getOption('elementor_version');
56 + $pdata['latest_db_version'] = $this->bvinfo->getLatestElementorDBVersion($plugin_file);
57 + break;
58 + case "elementor-pro/elementor-pro.php":
59 + $pdata['current_db_version'] = $this->settings->getOption('elementor_pro_version');
60 + $pdata['latest_db_version'] = $this->bvinfo->getLatestElementorDBVersion($plugin_file);
61 + break;
72 62 }
73 63
74 64 return $pdata;
75 65 }
@@ -85,9 +75,13 @@
85 75 'file' => $plugin_file,
86 76 'title' => $plugin_data['Title'],
87 77 'version' => $plugin_data['Version'],
88 78 'active' => is_plugin_active($plugin_file),
89 - 'network' => $plugin_data['Network']
79 + 'network' => $plugin_data['Network'],
80 + "plugin_uri" => $plugin_data["PluginURI"],
81 + "update_uri" => $plugin_data["UpdateURI"],
82 + "author_uri" => $plugin_data["AuthorURI"],
83 + "author" => $plugin_data["AuthorName"],
90 84 );
91 85 $pdata = $this->addDBInfoToPlugin($pdata, $plugin_file);
92 86 $result["plugins"][] = $pdata;
93 87 }
@@ -100,9 +94,13 @@
100 94 'name' => $theme->Name,
101 95 'title' => $theme->Title,
102 96 'stylesheet' => $theme->get_stylesheet(),
103 97 'template' => $theme->Template,
104 - 'version' => $theme->Version
98 + 'version' => $theme->Version,
99 + 'theme_uri' => $theme->get('ThemeURI'),
100 + 'author' => $theme->get('Author'),
101 + 'author_uri' => $theme->get('AuthorURI'),
102 + 'update_uri' => $theme->get('UpdateURI'),
105 103 );
106 104 } else {
107 105 $pdata = array(
108 106 'name' => $theme["Name"],
@@ -108,9 +106,11 @@
108 106 'name' => $theme["Name"],
109 107 'title' => $theme["Title"],
110 108 'stylesheet' => $theme["Stylesheet"],
111 109 'template' => $theme["Template"],
112 - 'version' => $theme["Version"]
110 + 'version' => $theme["Version"],
111 + 'author' => $theme['Author'],
112 + 'author_uri' => $theme['Author URI'],
113 113 );
114 114 }
115 115 return $pdata;
116 116 }
@@ -116,15 +116,14 @@
116 116 }
117 117
118 118 public function getThemes() {
119 119 $result = array();
120 - $themes = function_exists('wp_get_themes') ? wp_get_themes() : get_themes();
120 + $themes = wp_get_themes();
121 121 foreach($themes as $theme) {
122 122 $pdata = $this->themeToArray($theme);
123 123 $result["themes"][] = $pdata;
124 124 }
125 - $theme = function_exists('wp_get_theme') ? wp_get_theme() : get_current_theme();
126 - $pdata = $this->themeToArray($theme);
125 + $pdata = $this->themeToArray(wp_get_theme());
127 126 $result["currenttheme"] = $pdata;
128 127 return $result;
129 128 }
130 129
@@ -129,14 +128,14 @@
129 128 }
130 129
131 130 public function getSystemInfo() {
132 131 $sys_info = array(
133 - 'host' => $_SERVER['HTTP_HOST'],
132 + 'host' => WPRHelper::getRawParam('SERVER', 'HTTP_HOST'),
134 133 'phpversion' => phpversion(),
135 134 'AF_INET6' => defined('AF_INET6')
136 135 );
137 136 if (array_key_exists('SERVER_ADDR', $_SERVER)) {
138 - $sys_info['serverip'] = $_SERVER['SERVER_ADDR'];
137 + $sys_info['serverip'] = WPRHelper::getRawParam('SERVER', 'SERVER_ADDR');
139 138 }
140 139 if (function_exists('get_current_user')) {
141 140 $sys_info['user'] = get_current_user();
142 141 }
@@ -177,8 +176,10 @@
177 176 'uploaddir' => wp_upload_dir(),
178 177 'contentdir' => defined('WP_CONTENT_DIR') ? WP_CONTENT_DIR : null,
179 178 'contenturl' => defined('WP_CONTENT_URL') ? WP_CONTENT_URL : null,
180 179 'plugindir' => defined('WP_PLUGIN_DIR') ? WP_PLUGIN_DIR : null,
180 + 'themedir' => get_stylesheet_directory(),
181 + 'templatedir' => get_template_directory(),
181 182 'dbcharset' => defined('DB_CHARSET') ? DB_CHARSET : null,
182 183 'disallow_file_edit' => defined('DISALLOW_FILE_EDIT'),
183 184 'disallow_file_mods' => defined('DISALLOW_FILE_MODS'),
184 185 'custom_users' => defined('CUSTOM_USER_TABLE') ? CUSTOM_USER_TABLE : null,
@@ -184,9 +185,11 @@
184 185 'custom_users' => defined('CUSTOM_USER_TABLE') ? CUSTOM_USER_TABLE : null,
185 186 'custom_usermeta' => defined('CUSTOM_USERMETA_TABLE') ? CUSTOM_USERMETA_TABLE : null,
186 187 'locale' => get_locale(),
187 188 'wp_local_string' => $wp_local_package,
188 - 'charset_collate' => $db->getCharsetCollate()
189 + 'charset_collate' => $db->getCharsetCollate(),
190 + 'allowed_paths' => ini_get('open_basedir'),
191 + 'path_seprator' => PATH_SEPARATOR
189 192 );
190 193 return $wp_info;
191 194 }
192 195
@@ -225,8 +228,14 @@
225 228 }
226 229 if (function_exists('openssl_public_decrypt')) {
227 230 $info['openssl_public_decrypt'] = "1";
228 231 }
232 + if (function_exists('openssl_encrypt')) {
233 + $info['openssl_encrypt'] = "1";
234 + }
235 + if (function_exists('openssl_decrypt')) {
236 + $info['openssl_decrypt'] = "1";
237 + }
229 238 $info['sha1'] = "1";
230 239 $info['apissl'] = "1";
231 240 if (function_exists('base64_encode')) {
232 241 $info['b64encode'] = true;
@@ -273,9 +282,16 @@
273 282 }
274 283
275 284 public function getHostInfo() {
276 285 $host_info = $_SERVER;
277 - $host_info['PHP_SERVER_NAME'] = php_uname('\n');
286 + if (function_exists('php_uname')) {
287 + $host_info['PHP_SERVER_NAME'] = php_uname();
288 + }
289 +
290 + if (isset($_SERVER['SERVER_ADDR']) && function_exists('gethostbyaddr')) {
291 + $host_info['HOST_FROM_IP'] = gethostbyaddr(WPRHelper::getRawParam('SERVER', 'SERVER_ADDR'));
292 + }
293 +
278 294 if (array_key_exists('IS_PRESSABLE', get_defined_constants())) {
279 295 $host_info['IS_PRESSABLE'] = true;
280 296 }
281 297
@@ -286,14 +302,18 @@
286 302 if (defined('WPE_APIKEY')) {
287 303 $host_info['WPE_APIKEY'] = WPE_APIKEY;
288 304 }
289 305
306 + if (defined('IS_ATOMIC')) {
307 + $host_info['IS_ATOMIC'] = IS_ATOMIC;
308 + }
309 +
290 310 return $host_info;
291 311 }
292 312
293 313 public function serverConfig() {
294 314 return array(
295 - 'software' => $_SERVER['SERVER_SOFTWARE'],
315 + 'software' => WPRHelper::getRawParam('SERVER', 'SERVER_SOFTWARE'),
296 316 'sapi' => (function_exists('php_sapi_name')) ? php_sapi_name() : false,
297 317 'has_apache_get_modules' => function_exists('apache_get_modules'),
298 318 'posix_getuid' => (function_exists('posix_getuid')) ? posix_getuid() : null,
299 319 'uid' => (function_exists('getmyuid')) ? getmyuid() : null,
@@ -392,13 +412,14 @@
392 412 return $result;
393 413 }
394 414
395 415 function getCoreHandler() {
396 - global $wp_db_version;
416 + global $wp_db_version, $wp_version;
397 417
398 418 $result = $this->getTransient('update_core');
399 419 $result['current_db_version'] = $this->settings->getOption('db_version');
400 420 $result['latest_db_version'] = $wp_db_version;
421 + $result['wp_version'] = $wp_version;
401 422
402 423 return $result;
403 424 }
404 425
@@ -485,8 +506,31 @@
485 506
486 507 return $result;
487 508 }
488 509
510 + function getPluginFileData($plugin_file) {
511 + $result = array();
512 +
513 + if (!function_exists('get_plugin_data')) {
514 + require_once ABSPATH . 'wp-admin/includes/plugin.php';
515 + }
516 + $plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin_file);
517 + if ($plugin_data && isset($plugin_data['Version'])) {
518 + $result['version'] = $plugin_data['Version'];
519 + }
520 +
521 + return $result;
522 + }
523 +
524 + function fetchPluginApiData($slug, $action) {
525 + $args = array('slug' => wp_unslash($slug));
526 + $args = (object) $args;
527 + $args = apply_filters('plugins_api_args', $args, $action);
528 + $data = apply_filters('plugins_api', false, $action, $args);
529 +
530 + return $data;
531 + }
532 +
489 533 public function process($request) {
490 534 $db = $this->db;
491 535 $params = $request->params;
492 536 switch ($request->method) {
@@ -505,9 +549,9 @@
505 549 case "gtsts":
506 550 $resp = $this->getStats();
507 551 break;
508 552 case "gtdbvariables":
509 - $variable = (array_key_exists('variable', $params)) ? $variable : "";
553 + $variable = (array_key_exists('variable', $params)) ? $params['variable'] : "";
510 554 $resp = $this->db->showDbVariables($variable);
511 555 break;
512 556 case "gtplgs":
513 557 $resp = $this->getPlugins();
@@ -542,16 +586,22 @@
542 586 break;
543 587 case "gthost":
544 588 $resp = array('host_info' => $this->getHostInfo());
545 589 break;
590 + case "gtplsinfo":
591 + $resp = array("plugins_info" => array());
592 + $file_by_slug = $params["file_by_slug"];
593 + foreach ($params['slugs'] as $slug) {
594 + $data = $this->fetchPluginApiData($slug, $params['action']);
595 + if (is_object($data) && !property_exists($data, 'version') && isset($file_by_slug[$slug])) {
596 + $plugin_data = $this->getPluginFileData($file_by_slug[$slug]);
597 + $data->version = $plugin_data['version'];
598 + }
599 + $resp['plugins_info'][$slug] = $data;
600 + }
601 + break;
546 602 case "gtplinfo":
547 - $args = array(
548 - 'slug' => wp_unslash($params['slug'])
549 - );
550 - $action = $params['action'];
551 - $args = (object) $args;
552 - $args = apply_filters('plugins_api_args', $args, $action);
553 - $data = apply_filters('plugins_api', false, $action, $args);
603 + $data = $this->fetchPluginApiData($params['slug'], $params['action']);
554 604 $resp = array("plugins_info" => $data);
555 605 break;
556 606 case "gtpostactinfo":
557 607 $resp = $this->getPostActivateInfo($params);