File "class-wp-debug-data.php"
Full path: /home/kosmetik/public_html/wp-includes/wp-admin/includes/class-wp-debug-data.php
File
size: 46.08 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
class WP_Debug_Data
{
static function check_for_updates()
{
wp_version_check();
wp_update_plugins();
wp_update_themes();
}
static function debug_data()
{
global $wpdb;
$upload_dir = wp_upload_dir();
$permalink_structure = get_option('permalink_structure');
$is_ssl = is_ssl();
$is_multisite = is_multisite();
$users_can_register = get_option('users_can_register');
$blog_public = get_option('blog_public');
$default_comment_status = get_option('default_comment_status');
$environment_type = wp_get_environment_type();
$core_version = get_bloginfo('version');
$core_updates = get_core_updates();
$core_update_needed = '';
if (is_array($core_updates)) {
foreach ($core_updates as $core => $update) {
if ('upgrade' === $update->response) {
$core_update_needed = ' ' . sprintf(__('(Latest version: %s)'), $update->version);
} else {
$core_update_needed = '';
}
}
}
$info = array();
$info['wp-core'] = array('label' => __('WordPress'), 'fields' => array('version' => array('label' => __('Version'), 'value' => $core_version . $core_update_needed, 'debug' => $core_version), 'site_language' => array('label' => __('Site Language'), 'value' => get_locale()), 'user_language' => array('label' => __('User Language'), 'value' => get_user_locale()), 'timezone' => array('label' => __('Timezone'), 'value' => wp_timezone_string()), 'home_url' => array('label' => __('Home URL'), 'value' => get_bloginfo('url'), 'private' => true), 'site_url' => array('label' => __('Site URL'), 'value' => get_bloginfo('wpurl'), 'private' => true), 'permalink' => array('label' => __('Permalink structure'), 'value' => $permalink_structure ? $permalink_structure : __('No permalink structure set'), 'debug' => $permalink_structure), 'https_status' => array('label' => __('Is this site using HTTPS?'), 'value' => $is_ssl ? __('Yes') : __('No'), 'debug' => $is_ssl), 'multisite' => array('label' => __('Is this a multisite?'), 'value' => $is_multisite ? __('Yes') : __('No'), 'debug' => $is_multisite), 'user_registration' => array('label' => __('Can anyone register on this site?'), 'value' => $users_can_register ? __('Yes') : __('No'), 'debug' => $users_can_register), 'blog_public' => array('label' => __('Is this site discouraging search engines?'), 'value' => $blog_public ? __('No') : __('Yes'), 'debug' => $blog_public), 'default_comment_status' => array('label' => __('Default comment status'), 'value' => 'open' === $default_comment_status ? _x('Open', 'comment status') : _x('Closed', 'comment status'), 'debug' => $default_comment_status), 'environment_type' => array('label' => __('Environment type'), 'value' => $environment_type, 'debug' => $environment_type)));
if (!$is_multisite) {
$info['wp-paths-sizes'] = array('label' => __('Directories and Sizes'), 'fields' => array());
}
$info['wp-dropins'] = array('label' => __('Drop-ins'), 'show_count' => true, 'description' => sprintf(__('Drop-ins are single files, found in the %s directory, that replace or enhance WordPress features in ways that are not possible for traditional plugins.'), '<code>' . str_replace(ABSPATH, '', WP_CONTENT_DIR) . '</code>'), 'fields' => array());
$info['wp-active-theme'] = array('label' => __('Active Theme'), 'fields' => array());
$info['wp-parent-theme'] = array('label' => __('Parent Theme'), 'fields' => array());
$info['wp-themes-inactive'] = array('label' => __('Inactive Themes'), 'show_count' => true, 'fields' => array());
$info['wp-mu-plugins'] = array('label' => __('Must Use Plugins'), 'show_count' => true, 'fields' => array());
$info['wp-plugins-active'] = array('label' => __('Active Plugins'), 'show_count' => true, 'fields' => array());
$info['wp-plugins-inactive'] = array('label' => __('Inactive Plugins'), 'show_count' => true, 'fields' => array());
$info['wp-media'] = array('label' => __('Media Handling'), 'fields' => array());
$info['wp-server'] = array('label' => __('Server'), 'description' => __('The options shown below relate to your server setup. If changes are required, you may need your web host’s assistance.'), 'fields' => array());
$info['wp-database'] = array('label' => __('Database'), 'fields' => array());
$wp_debug_log_value = __('Disabled');
if (is_string(WP_DEBUG_LOG)) {
$wp_debug_log_value = WP_DEBUG_LOG;
} elseif (WP_DEBUG_LOG) {
$wp_debug_log_value = __('Enabled');
}
if (defined('CONCATENATE_SCRIPTS')) {
$concatenate_scripts = CONCATENATE_SCRIPTS ? __('Enabled') : __('Disabled');
$concatenate_scripts_debug = CONCATENATE_SCRIPTS ? 'true' : 'false';
} else {
$concatenate_scripts = __('Undefined');
$concatenate_scripts_debug = 'undefined';
}
if (defined('COMPRESS_SCRIPTS')) {
$compress_scripts = COMPRESS_SCRIPTS ? __('Enabled') : __('Disabled');
$compress_scripts_debug = COMPRESS_SCRIPTS ? 'true' : 'false';
} else {
$compress_scripts = __('Undefined');
$compress_scripts_debug = 'undefined';
}
if (defined('COMPRESS_CSS')) {
$compress_css = COMPRESS_CSS ? __('Enabled') : __('Disabled');
$compress_css_debug = COMPRESS_CSS ? 'true' : 'false';
} else {
$compress_css = __('Undefined');
$compress_css_debug = 'undefined';
}
if (defined('WP_LOCAL_DEV')) {
$wp_local_dev = WP_LOCAL_DEV ? __('Enabled') : __('Disabled');
$wp_local_dev_debug = WP_LOCAL_DEV ? 'true' : 'false';
} else {
$wp_local_dev = __('Undefined');
$wp_local_dev_debug = 'undefined';
}
$info['wp-constants'] = array('label' => __('WordPress Constants'), 'description' => __('These settings alter where and how parts of WordPress are loaded.'), 'fields' => array('ABSPATH' => array('label' => 'ABSPATH', 'value' => ABSPATH, 'private' => true), 'WP_HOME' => array('label' => 'WP_HOME', 'value' => defined('WP_HOME') ? WP_HOME : __('Undefined'), 'debug' => defined('WP_HOME') ? WP_HOME : 'undefined'), 'WP_SITEURL' => array('label' => 'WP_SITEURL', 'value' => defined('WP_SITEURL') ? WP_SITEURL : __('Undefined'), 'debug' => defined('WP_SITEURL') ? WP_SITEURL : 'undefined'), 'WP_CONTENT_DIR' => array('label' => 'WP_CONTENT_DIR', 'value' => WP_CONTENT_DIR), 'WP_PLUGIN_DIR' => array('label' => 'WP_PLUGIN_DIR', 'value' => WP_PLUGIN_DIR), 'WP_MEMORY_LIMIT' => array('label' => 'WP_MEMORY_LIMIT', 'value' => WP_MEMORY_LIMIT), 'WP_MAX_MEMORY_LIMIT' => array('label' => 'WP_MAX_MEMORY_LIMIT', 'value' => WP_MAX_MEMORY_LIMIT), 'WP_DEBUG' => array('label' => 'WP_DEBUG', 'value' => WP_DEBUG ? __('Enabled') : __('Disabled'), 'debug' => WP_DEBUG), 'WP_DEBUG_DISPLAY' => array('label' => 'WP_DEBUG_DISPLAY', 'value' => WP_DEBUG_DISPLAY ? __('Enabled') : __('Disabled'), 'debug' => WP_DEBUG_DISPLAY), 'WP_DEBUG_LOG' => array('label' => 'WP_DEBUG_LOG', 'value' => $wp_debug_log_value, 'debug' => WP_DEBUG_LOG), 'SCRIPT_DEBUG' => array('label' => 'SCRIPT_DEBUG', 'value' => SCRIPT_DEBUG ? __('Enabled') : __('Disabled'), 'debug' => SCRIPT_DEBUG), 'WP_CACHE' => array('label' => 'WP_CACHE', 'value' => WP_CACHE ? __('Enabled') : __('Disabled'), 'debug' => WP_CACHE), 'CONCATENATE_SCRIPTS' => array('label' => 'CONCATENATE_SCRIPTS', 'value' => $concatenate_scripts, 'debug' => $concatenate_scripts_debug), 'COMPRESS_SCRIPTS' => array('label' => 'COMPRESS_SCRIPTS', 'value' => $compress_scripts, 'debug' => $compress_scripts_debug), 'COMPRESS_CSS' => array('label' => 'COMPRESS_CSS', 'value' => $compress_css, 'debug' => $compress_css_debug), 'WP_LOCAL_DEV' => array('label' => 'WP_LOCAL_DEV', 'value' => $wp_local_dev, 'debug' => $wp_local_dev_debug), 'DB_CHARSET' => array('label' => 'DB_CHARSET', 'value' => defined('DB_CHARSET') ? DB_CHARSET : __('Undefined'), 'debug' => defined('DB_CHARSET') ? DB_CHARSET : 'undefined'), 'DB_COLLATE' => array('label' => 'DB_COLLATE', 'value' => defined('DB_COLLATE') ? DB_COLLATE : __('Undefined'), 'debug' => defined('DB_COLLATE') ? DB_COLLATE : 'undefined')));
$is_writable_abspath = wp_is_writable(ABSPATH);
$is_writable_wp_content_dir = wp_is_writable(WP_CONTENT_DIR);
$is_writable_upload_dir = wp_is_writable($upload_dir['basedir']);
$is_writable_wp_plugin_dir = wp_is_writable(WP_PLUGIN_DIR);
$is_writable_template_directory = wp_is_writable(get_theme_root(get_template()));
$info['wp-filesystem'] = array('label' => __('Filesystem Permissions'), 'description' => __('Shows whether WordPress is able to write to the directories it needs access to.'), 'fields' => array('wordpress' => array('label' => __('The main WordPress directory'), 'value' => $is_writable_abspath ? __('Writable') : __('Not writable'), 'debug' => $is_writable_abspath ? 'writable' : 'not writable'), 'wp-content' => array('label' => __('The wp-content directory'), 'value' => $is_writable_wp_content_dir ? __('Writable') : __('Not writable'), 'debug' => $is_writable_wp_content_dir ? 'writable' : 'not writable'), 'uploads' => array('label' => __('The uploads directory'), 'value' => $is_writable_upload_dir ? __('Writable') : __('Not writable'), 'debug' => $is_writable_upload_dir ? 'writable' : 'not writable'), 'plugins' => array('label' => __('The plugins directory'), 'value' => $is_writable_wp_plugin_dir ? __('Writable') : __('Not writable'), 'debug' => $is_writable_wp_plugin_dir ? 'writable' : 'not writable'), 'themes' => array('label' => __('The themes directory'), 'value' => $is_writable_template_directory ? __('Writable') : __('Not writable'), 'debug' => $is_writable_template_directory ? 'writable' : 'not writable')));
if (is_multisite()) {
$network_query = new WP_Network_Query();
$network_ids = $network_query->query(array('fields' => 'ids', 'number' => 100, 'no_found_rows' => false));
$site_count = 0;
foreach ($network_ids as $network_id) {
$site_count += get_blog_count($network_id);
}
$info['wp-core']['fields']['user_count'] = array('label' => __('User count'), 'value' => get_user_count());
$info['wp-core']['fields']['site_count'] = array('label' => __('Site count'), 'value' => $site_count);
$info['wp-core']['fields']['network_count'] = array('label' => __('Network count'), 'value' => $network_query->found_networks);
} else {
$user_count = count_users();
$info['wp-core']['fields']['user_count'] = array('label' => __('User count'), 'value' => $user_count['total_users']);
}
$wp_dotorg = wp_remote_get('https://wordpress.org', array('timeout' => 10));
if (!is_wp_error($wp_dotorg)) {
$info['wp-core']['fields']['dotorg_communication'] = array('label' => __('Communication with WordPress.org'), 'value' => __('WordPress.org is reachable'), 'debug' => 'true');
} else {
$info['wp-core']['fields']['dotorg_communication'] = array('label' => __('Communication with WordPress.org'), 'value' => sprintf(__('Unable to reach WordPress.org at %1$s: %2$s'), gethostbyname('wordpress.org'), $wp_dotorg->get_error_message()), 'debug' => $wp_dotorg->get_error_message());
}
if (!$is_multisite) {
$loading = __('Loading…');
$info['wp-paths-sizes']['fields'] = array('wordpress_path' => array('label' => __('WordPress directory location'), 'value' => untrailingslashit(ABSPATH)), 'wordpress_size' => array('label' => __('WordPress directory size'), 'value' => $loading, 'debug' => 'loading...'), 'uploads_path' => array('label' => __('Uploads directory location'), 'value' => $upload_dir['basedir']), 'uploads_size' => array('label' => __('Uploads directory size'), 'value' => $loading, 'debug' => 'loading...'), 'themes_path' => array('label' => __('Themes directory location'), 'value' => get_theme_root()), 'themes_size' => array('label' => __('Themes directory size'), 'value' => $loading, 'debug' => 'loading...'), 'plugins_path' => array('label' => __('Plugins directory location'), 'value' => WP_PLUGIN_DIR), 'plugins_size' => array('label' => __('Plugins directory size'), 'value' => $loading, 'debug' => 'loading...'), 'database_size' => array('label' => __('Database size'), 'value' => $loading, 'debug' => 'loading...'), 'total_size' => array('label' => __('Total installation size'), 'value' => $loading, 'debug' => 'loading...'));
}
$dropins = get_dropins();
$dropin_descriptions = _get_dropins();
$not_available = __('Not available');
foreach ($dropins as $dropin_key => $dropin) {
$info['wp-dropins']['fields'][sanitize_text_field($dropin_key)] = array('label' => $dropin_key, 'value' => $dropin_descriptions[$dropin_key][0], 'debug' => 'true');
}
$info['wp-media']['fields']['image_editor'] = array('label' => __('Active editor'), 'value' => _wp_image_editor_choose());
if (class_exists('Imagick')) {
$imagick = new Imagick();
$imagick_version = $imagick->getVersion();
} else {
$imagick_version = __('Not available');
}
$info['wp-media']['fields']['imagick_module_version'] = array('label' => __('ImageMagick version number'), 'value' => is_array($imagick_version) ? $imagick_version['versionNumber'] : $imagick_version);
$info['wp-media']['fields']['imagemagick_version'] = array('label' => __('ImageMagick version string'), 'value' => is_array($imagick_version) ? $imagick_version['versionString'] : $imagick_version);
if (!function_exists('ini_get')) {
$info['wp-media']['fields']['ini_get'] = array('label' => __('File upload settings'), 'value' => sprintf(__('Unable to determine some settings, as the %s function has been disabled.'), 'ini_get()'), 'debug' => 'ini_get() is disabled');
} else {
$post_max_size = ini_get('post_max_size');
$upload_max_filesize = ini_get('upload_max_filesize');
$max_file_uploads = ini_get('max_file_uploads');
$effective = min(wp_convert_hr_to_bytes($post_max_size), wp_convert_hr_to_bytes($upload_max_filesize));
$info['wp-media']['fields']['file_uploads'] = array('label' => __('File uploads'), 'value' => empty(ini_get('file_uploads')) ? __('Disabled') : __('Enabled'), 'debug' => 'File uploads is turned off');
$info['wp-media']['fields']['post_max_size'] = array('label' => __('Max size of post data allowed'), 'value' => $post_max_size);
$info['wp-media']['fields']['upload_max_filesize'] = array('label' => __('Max size of an uploaded file'), 'value' => $upload_max_filesize);
$info['wp-media']['fields']['max_effective_size'] = array('label' => __('Max effective file size'), 'value' => size_format($effective));
$info['wp-media']['fields']['max_file_uploads'] = array('label' => __('Max number of files allowed'), 'value' => number_format($max_file_uploads));
}
if ('WP_Image_Editor_Imagick' === _wp_image_editor_choose() && isset($imagick) && $imagick instanceof Imagick) {
$limits = array('area' => defined('imagick::RESOURCETYPE_AREA') ? size_format($imagick->getResourceLimit(imagick::RESOURCETYPE_AREA)) : $not_available, 'disk' => defined('imagick::RESOURCETYPE_DISK') ? $imagick->getResourceLimit(imagick::RESOURCETYPE_DISK) : $not_available, 'file' => defined('imagick::RESOURCETYPE_FILE') ? $imagick->getResourceLimit(imagick::RESOURCETYPE_FILE) : $not_available, 'map' => defined('imagick::RESOURCETYPE_MAP') ? size_format($imagick->getResourceLimit(imagick::RESOURCETYPE_MAP)) : $not_available, 'memory' => defined('imagick::RESOURCETYPE_MEMORY') ? size_format($imagick->getResourceLimit(imagick::RESOURCETYPE_MEMORY)) : $not_available, 'thread' => defined('imagick::RESOURCETYPE_THREAD') ? $imagick->getResourceLimit(imagick::RESOURCETYPE_THREAD) : $not_available);
$limits_debug = array('imagick::RESOURCETYPE_AREA' => defined('imagick::RESOURCETYPE_AREA') ? size_format($imagick->getResourceLimit(imagick::RESOURCETYPE_AREA)) : 'not available', 'imagick::RESOURCETYPE_DISK' => defined('imagick::RESOURCETYPE_DISK') ? $imagick->getResourceLimit(imagick::RESOURCETYPE_DISK) : 'not available', 'imagick::RESOURCETYPE_FILE' => defined('imagick::RESOURCETYPE_FILE') ? $imagick->getResourceLimit(imagick::RESOURCETYPE_FILE) : 'not available', 'imagick::RESOURCETYPE_MAP' => defined('imagick::RESOURCETYPE_MAP') ? size_format($imagick->getResourceLimit(imagick::RESOURCETYPE_MAP)) : 'not available', 'imagick::RESOURCETYPE_MEMORY' => defined('imagick::RESOURCETYPE_MEMORY') ? size_format($imagick->getResourceLimit(imagick::RESOURCETYPE_MEMORY)) : 'not available', 'imagick::RESOURCETYPE_THREAD' => defined('imagick::RESOURCETYPE_THREAD') ? $imagick->getResourceLimit(imagick::RESOURCETYPE_THREAD) : 'not available');
$info['wp-media']['fields']['imagick_limits'] = array('label' => __('Imagick Resource Limits'), 'value' => $limits, 'debug' => $limits_debug);
}
if (function_exists('gd_info')) {
$gd = gd_info();
} else {
$gd = false;
}
$info['wp-media']['fields']['gd_version'] = array('label' => __('GD version'), 'value' => is_array($gd) ? $gd['GD Version'] : $not_available, 'debug' => is_array($gd) ? $gd['GD Version'] : 'not available');
if (function_exists('exec')) {
$gs = exec('gs --version');
if (empty($gs)) {
$gs = $not_available;
$gs_debug = 'not available';
} else {
$gs_debug = $gs;
}
} else {
$gs = __('Unable to determine if Ghostscript is installed');
$gs_debug = 'unknown';
}
$info['wp-media']['fields']['ghostscript_version'] = array('label' => __('Ghostscript version'), 'value' => $gs, 'debug' => $gs_debug);
if (function_exists('php_uname')) {
$server_architecture = sprintf('%s %s %s', php_uname('s'), php_uname('r'), php_uname('m'));
} else {
$server_architecture = 'unknown';
}
if (function_exists('phpversion')) {
$php_version_debug = phpversion();
$php64bit = PHP_INT_SIZE * 8 === 64;
$php_version = sprintf('%s %s', $php_version_debug, $php64bit ? __('(Supports 64bit values)') : __('(Does not support 64bit values)'));
if ($php64bit) {
$php_version_debug .= ' 64bit';
}
} else {
$php_version = __('Unable to determine PHP version');
$php_version_debug = 'unknown';
}
if (function_exists('php_sapi_name')) {
$php_sapi = php_sapi_name();
} else {
$php_sapi = 'unknown';
}
$info['wp-server']['fields']['server_architecture'] = array('label' => __('Server architecture'), 'value' => 'unknown' !== $server_architecture ? $server_architecture : __('Unable to determine server architecture'), 'debug' => $server_architecture);
$info['wp-server']['fields']['httpd_software'] = array('label' => __('Web server'), 'value' => isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : __('Unable to determine what web server software is used'), 'debug' => isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : 'unknown');
$info['wp-server']['fields']['php_version'] = array('label' => __('PHP version'), 'value' => $php_version, 'debug' => $php_version_debug);
$info['wp-server']['fields']['php_sapi'] = array('label' => __('PHP SAPI'), 'value' => 'unknown' !== $php_sapi ? $php_sapi : __('Unable to determine PHP SAPI'), 'debug' => $php_sapi);
if (!function_exists('ini_get')) {
$info['wp-server']['fields']['ini_get'] = array('label' => __('Server settings'), 'value' => sprintf(__('Unable to determine some settings, as the %s function has been disabled.'), 'ini_get()'), 'debug' => 'ini_get() is disabled');
} else {
$info['wp-server']['fields']['max_input_variables'] = array('label' => __('PHP max input variables'), 'value' => ini_get('max_input_vars'));
$info['wp-server']['fields']['time_limit'] = array('label' => __('PHP time limit'), 'value' => ini_get('max_execution_time'));
if (WP_Site_Health::get_instance()->php_memory_limit !== ini_get('memory_limit')) {
$info['wp-server']['fields']['memory_limit'] = array('label' => __('PHP memory limit'), 'value' => WP_Site_Health::get_instance()->php_memory_limit);
$info['wp-server']['fields']['admin_memory_limit'] = array('label' => __('PHP memory limit (only for admin screens)'), 'value' => ini_get('memory_limit'));
} else {
$info['wp-server']['fields']['memory_limit'] = array('label' => __('PHP memory limit'), 'value' => ini_get('memory_limit'));
}
$info['wp-server']['fields']['max_input_time'] = array('label' => __('Max input time'), 'value' => ini_get('max_input_time'));
$info['wp-server']['fields']['upload_max_filesize'] = array('label' => __('Upload max filesize'), 'value' => ini_get('upload_max_filesize'));
$info['wp-server']['fields']['php_post_max_size'] = array('label' => __('PHP post max size'), 'value' => ini_get('post_max_size'));
}
if (function_exists('curl_version')) {
$curl = curl_version();
$info['wp-server']['fields']['curl_version'] = array('label' => __('cURL version'), 'value' => sprintf('%s %s', $curl['version'], $curl['ssl_version']));
} else {
$info['wp-server']['fields']['curl_version'] = array('label' => __('cURL version'), 'value' => $not_available, 'debug' => 'not available');
}
$suhosin_loaded = extension_loaded('suhosin') || defined('SUHOSIN_PATCH') && constant('SUHOSIN_PATCH');
$info['wp-server']['fields']['suhosin'] = array('label' => __('Is SUHOSIN installed?'), 'value' => $suhosin_loaded ? __('Yes') : __('No'), 'debug' => $suhosin_loaded);
$imagick_loaded = extension_loaded('imagick');
$info['wp-server']['fields']['imagick_availability'] = array('label' => __('Is the Imagick library available?'), 'value' => $imagick_loaded ? __('Yes') : __('No'), 'debug' => $imagick_loaded);
$pretty_permalinks_supported = got_url_rewrite();
$info['wp-server']['fields']['pretty_permalinks'] = array('label' => __('Are pretty permalinks supported?'), 'value' => $pretty_permalinks_supported ? __('Yes') : __('No'), 'debug' => $pretty_permalinks_supported);
if (is_file(ABSPATH . '.htaccess')) {
$htaccess_content = file_get_contents(ABSPATH . '.htaccess');
$filtered_htaccess_content = trim(preg_replace('/\\# BEGIN WordPress[\\s\\S]+?# END WordPress/si', '', $htaccess_content));
$filtered_htaccess_content = !empty($filtered_htaccess_content);
if ($filtered_htaccess_content) {
$htaccess_rules_string = sprintf(__('Custom rules have been added to your %s file.'), '.htaccess');
} else {
$htaccess_rules_string = sprintf(__('Your %s file contains only core WordPress features.'), '.htaccess');
}
$info['wp-server']['fields']['htaccess_extra_rules'] = array('label' => __('.htaccess rules'), 'value' => $htaccess_rules_string, 'debug' => $filtered_htaccess_content);
}
if (is_resource($wpdb->dbh)) {
$extension = 'mysql';
} elseif (is_object($wpdb->dbh)) {
$extension = get_class($wpdb->dbh);
} else {
$extension = null;
}
$server = $wpdb->get_var('SELECT VERSION()');
if (isset($wpdb->use_mysqli) && $wpdb->use_mysqli) {
$client_version = $wpdb->dbh->client_info;
} else {
if (preg_match('|[0-9]{1,2}\\.[0-9]{1,2}\\.[0-9]{1,2}|', mysql_get_client_info(), $matches)) {
$client_version = $matches[0];
} else {
$client_version = null;
}
}
$info['wp-database']['fields']['extension'] = array('label' => __('Extension'), 'value' => $extension);
$info['wp-database']['fields']['server_version'] = array('label' => __('Server version'), 'value' => $server);
$info['wp-database']['fields']['client_version'] = array('label' => __('Client version'), 'value' => $client_version);
$info['wp-database']['fields']['database_user'] = array('label' => __('Database username'), 'value' => $wpdb->dbuser, 'private' => true);
$info['wp-database']['fields']['database_host'] = array('label' => __('Database host'), 'value' => $wpdb->dbhost, 'private' => true);
$info['wp-database']['fields']['database_name'] = array('label' => __('Database name'), 'value' => $wpdb->dbname, 'private' => true);
$info['wp-database']['fields']['database_prefix'] = array('label' => __('Table prefix'), 'value' => $wpdb->prefix, 'private' => true);
$info['wp-database']['fields']['database_charset'] = array('label' => __('Database charset'), 'value' => $wpdb->charset, 'private' => true);
$info['wp-database']['fields']['database_collate'] = array('label' => __('Database collation'), 'value' => $wpdb->collate, 'private' => true);
$mu_plugins = get_mu_plugins();
foreach ($mu_plugins as $plugin_path => $plugin) {
$plugin_version = $plugin['Version'];
$plugin_author = $plugin['Author'];
$plugin_version_string = __('No version or author information is available.');
$plugin_version_string_debug = 'author: (undefined), version: (undefined)';
if (!empty($plugin_version) && !empty($plugin_author)) {
$plugin_version_string = sprintf(__('Version %1$s by %2$s'), $plugin_version, $plugin_author);
$plugin_version_string_debug = sprintf('version: %s, author: %s', $plugin_version, $plugin_author);
} else {
if (!empty($plugin_author)) {
$plugin_version_string = sprintf(__('By %s'), $plugin_author);
$plugin_version_string_debug = sprintf('author: %s, version: (undefined)', $plugin_author);
}
if (!empty($plugin_version)) {
$plugin_version_string = sprintf(__('Version %s'), $plugin_version);
$plugin_version_string_debug = sprintf('author: (undefined), version: %s', $plugin_version);
}
}
$info['wp-mu-plugins']['fields'][sanitize_text_field($plugin['Name'])] = array('label' => $plugin['Name'], 'value' => $plugin_version_string, 'debug' => $plugin_version_string_debug);
}
$plugins = get_plugins();
$plugin_updates = get_plugin_updates();
$transient = get_site_transient('update_plugins');
$auto_updates = array();
$auto_updates_enabled = wp_is_auto_update_enabled_for_type('plugin');
if ($auto_updates_enabled) {
$auto_updates = (array) get_site_option('auto_update_plugins', array());
}
foreach ($plugins as $plugin_path => $plugin) {
$plugin_part = is_plugin_active($plugin_path) ? 'wp-plugins-active' : 'wp-plugins-inactive';
$plugin_version = $plugin['Version'];
$plugin_author = $plugin['Author'];
$plugin_version_string = __('No version or author information is available.');
$plugin_version_string_debug = 'author: (undefined), version: (undefined)';
if (!empty($plugin_version) && !empty($plugin_author)) {
$plugin_version_string = sprintf(__('Version %1$s by %2$s'), $plugin_version, $plugin_author);
$plugin_version_string_debug = sprintf('version: %s, author: %s', $plugin_version, $plugin_author);
} else {
if (!empty($plugin_author)) {
$plugin_version_string = sprintf(__('By %s'), $plugin_author);
$plugin_version_string_debug = sprintf('author: %s, version: (undefined)', $plugin_author);
}
if (!empty($plugin_version)) {
$plugin_version_string = sprintf(__('Version %s'), $plugin_version);
$plugin_version_string_debug = sprintf('author: (undefined), version: %s', $plugin_version);
}
}
if (array_key_exists($plugin_path, $plugin_updates)) {
$plugin_version_string .= ' ' . sprintf(__('(Latest version: %s)'), $plugin_updates[$plugin_path]->update->new_version);
$plugin_version_string_debug .= sprintf(' (latest version: %s)', $plugin_updates[$plugin_path]->update->new_version);
}
if ($auto_updates_enabled) {
if (isset($transient->response[$plugin_path])) {
$item = $transient->response[$plugin_path];
} elseif (isset($transient->no_update[$plugin_path])) {
$item = $transient->no_update[$plugin_path];
} else {
$item = array('id' => $plugin_path, 'slug' => '', 'plugin' => $plugin_path, 'new_version' => '', 'url' => '', 'package' => '', 'icons' => array(), 'banners' => array(), 'banners_rtl' => array(), 'tested' => '', 'requires_php' => '', 'compatibility' => new stdClass());
$item = wp_parse_args($plugin, $item);
}
$auto_update_forced = wp_is_auto_update_forced_for_item('plugin', null, (object) $item);
if (!is_null($auto_update_forced)) {
$enabled = $auto_update_forced;
} else {
$enabled = in_array($plugin_path, $auto_updates, true);
}
if ($enabled) {
$auto_updates_string = __('Auto-updates enabled');
} else {
$auto_updates_string = __('Auto-updates disabled');
}
$auto_updates_string = apply_filters('plugin_auto_update_debug_string', $auto_updates_string, $plugin_path, $plugin, $enabled);
$plugin_version_string .= ' | ' . $auto_updates_string;
$plugin_version_string_debug .= ', ' . $auto_updates_string;
}
$info[$plugin_part]['fields'][sanitize_text_field($plugin['Name'])] = array('label' => $plugin['Name'], 'value' => $plugin_version_string, 'debug' => $plugin_version_string_debug);
}
global $_wp_theme_features;
$theme_features = array();
if (!empty($_wp_theme_features)) {
foreach ($_wp_theme_features as $feature => $options) {
$theme_features[] = $feature;
}
}
$active_theme = wp_get_theme();
$theme_updates = get_theme_updates();
$transient = get_site_transient('update_themes');
$active_theme_version = $active_theme->version;
$active_theme_version_debug = $active_theme_version;
$auto_updates = array();
$auto_updates_enabled = wp_is_auto_update_enabled_for_type('theme');
if ($auto_updates_enabled) {
$auto_updates = (array) get_site_option('auto_update_themes', array());
}
if (array_key_exists($active_theme->stylesheet, $theme_updates)) {
$theme_update_new_version = $theme_updates[$active_theme->stylesheet]->update['new_version'];
$active_theme_version .= ' ' . sprintf(__('(Latest version: %s)'), $theme_update_new_version);
$active_theme_version_debug .= sprintf(' (latest version: %s)', $theme_update_new_version);
}
$active_theme_author_uri = $active_theme->display('AuthorURI');
if ($active_theme->parent_theme) {
$active_theme_parent_theme = sprintf(__('%1$s (%2$s)'), $active_theme->parent_theme, $active_theme->template);
$active_theme_parent_theme_debug = sprintf('%s (%s)', $active_theme->parent_theme, $active_theme->template);
} else {
$active_theme_parent_theme = __('None');
$active_theme_parent_theme_debug = 'none';
}
$info['wp-active-theme']['fields'] = array('name' => array('label' => __('Name'), 'value' => sprintf(__('%1$s (%2$s)'), $active_theme->name, $active_theme->stylesheet)), 'version' => array('label' => __('Version'), 'value' => $active_theme_version, 'debug' => $active_theme_version_debug), 'author' => array('label' => __('Author'), 'value' => wp_kses($active_theme->author, array())), 'author_website' => array('label' => __('Author website'), 'value' => $active_theme_author_uri ? $active_theme_author_uri : __('Undefined'), 'debug' => $active_theme_author_uri ? $active_theme_author_uri : '(undefined)'), 'parent_theme' => array('label' => __('Parent theme'), 'value' => $active_theme_parent_theme, 'debug' => $active_theme_parent_theme_debug), 'theme_features' => array('label' => __('Theme features'), 'value' => implode(', ', $theme_features)), 'theme_path' => array('label' => __('Theme directory location'), 'value' => get_stylesheet_directory()));
if ($auto_updates_enabled) {
if (isset($transient->response[$active_theme->stylesheet])) {
$item = $transient->response[$active_theme->stylesheet];
} elseif (isset($transient->no_update[$active_theme->stylesheet])) {
$item = $transient->no_update[$active_theme->stylesheet];
} else {
$item = array('theme' => $active_theme->stylesheet, 'new_version' => $active_theme->version, 'url' => '', 'package' => '', 'requires' => '', 'requires_php' => '');
}
$auto_update_forced = wp_is_auto_update_forced_for_item('theme', null, (object) $item);
if (!is_null($auto_update_forced)) {
$enabled = $auto_update_forced;
} else {
$enabled = in_array($active_theme->stylesheet, $auto_updates, true);
}
if ($enabled) {
$auto_updates_string = __('Enabled');
} else {
$auto_updates_string = __('Disabled');
}
$auto_updates_string = apply_filters('theme_auto_update_debug_string', $auto_updates_string, $active_theme, $enabled);
$info['wp-active-theme']['fields']['auto_update'] = array('label' => __('Auto-updates'), 'value' => $auto_updates_string, 'debug' => $auto_updates_string);
}
$parent_theme = $active_theme->parent();
if ($parent_theme) {
$parent_theme_version = $parent_theme->version;
$parent_theme_version_debug = $parent_theme_version;
if (array_key_exists($parent_theme->stylesheet, $theme_updates)) {
$parent_theme_update_new_version = $theme_updates[$parent_theme->stylesheet]->update['new_version'];
$parent_theme_version .= ' ' . sprintf(__('(Latest version: %s)'), $parent_theme_update_new_version);
$parent_theme_version_debug .= sprintf(' (latest version: %s)', $parent_theme_update_new_version);
}
$parent_theme_author_uri = $parent_theme->display('AuthorURI');
$info['wp-parent-theme']['fields'] = array('name' => array('label' => __('Name'), 'value' => sprintf(__('%1$s (%2$s)'), $parent_theme->name, $parent_theme->stylesheet)), 'version' => array('label' => __('Version'), 'value' => $parent_theme_version, 'debug' => $parent_theme_version_debug), 'author' => array('label' => __('Author'), 'value' => wp_kses($parent_theme->author, array())), 'author_website' => array('label' => __('Author website'), 'value' => $parent_theme_author_uri ? $parent_theme_author_uri : __('Undefined'), 'debug' => $parent_theme_author_uri ? $parent_theme_author_uri : '(undefined)'), 'theme_path' => array('label' => __('Theme directory location'), 'value' => get_template_directory()));
if ($auto_updates_enabled) {
if (isset($transient->response[$parent_theme->stylesheet])) {
$item = $transient->response[$parent_theme->stylesheet];
} elseif (isset($transient->no_update[$parent_theme->stylesheet])) {
$item = $transient->no_update[$parent_theme->stylesheet];
} else {
$item = array('theme' => $parent_theme->stylesheet, 'new_version' => $parent_theme->version, 'url' => '', 'package' => '', 'requires' => '', 'requires_php' => '');
}
$auto_update_forced = wp_is_auto_update_forced_for_item('theme', null, (object) $item);
if (!is_null($auto_update_forced)) {
$enabled = $auto_update_forced;
} else {
$enabled = in_array($parent_theme->stylesheet, $auto_updates, true);
}
if ($enabled) {
$parent_theme_auto_update_string = __('Enabled');
} else {
$parent_theme_auto_update_string = __('Disabled');
}
$parent_theme_auto_update_string = apply_filters('theme_auto_update_debug_string', $auto_updates_string, $parent_theme, $enabled);
$info['wp-parent-theme']['fields']['auto_update'] = array('label' => __('Auto-update'), 'value' => $parent_theme_auto_update_string, 'debug' => $parent_theme_auto_update_string);
}
}
$all_themes = wp_get_themes();
foreach ($all_themes as $theme_slug => $theme) {
if ($active_theme->stylesheet === $theme_slug) {
continue;
}
if (!empty($parent_theme) && $parent_theme->stylesheet === $theme_slug) {
continue;
}
$theme_version = $theme->version;
$theme_author = $theme->author;
$theme_author = wp_kses($theme_author, array());
$theme_version_string = __('No version or author information is available.');
$theme_version_string_debug = 'undefined';
if (!empty($theme_version) && !empty($theme_author)) {
$theme_version_string = sprintf(__('Version %1$s by %2$s'), $theme_version, $theme_author);
$theme_version_string_debug = sprintf('version: %s, author: %s', $theme_version, $theme_author);
} else {
if (!empty($theme_author)) {
$theme_version_string = sprintf(__('By %s'), $theme_author);
$theme_version_string_debug = sprintf('author: %s, version: (undefined)', $theme_author);
}
if (!empty($theme_version)) {
$theme_version_string = sprintf(__('Version %s'), $theme_version);
$theme_version_string_debug = sprintf('author: (undefined), version: %s', $theme_version);
}
}
if (array_key_exists($theme_slug, $theme_updates)) {
$theme_version_string .= ' ' . sprintf(__('(Latest version: %s)'), $theme_updates[$theme_slug]->update['new_version']);
$theme_version_string_debug .= sprintf(' (latest version: %s)', $theme_updates[$theme_slug]->update['new_version']);
}
if ($auto_updates_enabled) {
if (isset($transient->response[$theme_slug])) {
$item = $transient->response[$theme_slug];
} elseif (isset($transient->no_update[$theme_slug])) {
$item = $transient->no_update[$theme_slug];
} else {
$item = array('theme' => $theme_slug, 'new_version' => $theme->version, 'url' => '', 'package' => '', 'requires' => '', 'requires_php' => '');
}
$auto_update_forced = wp_is_auto_update_forced_for_item('theme', null, (object) $item);
if (!is_null($auto_update_forced)) {
$enabled = $auto_update_forced;
} else {
$enabled = in_array($theme_slug, $auto_updates, true);
}
if ($enabled) {
$auto_updates_string = __('Auto-updates enabled');
} else {
$auto_updates_string = __('Auto-updates disabled');
}
$auto_updates_string = apply_filters('theme_auto_update_debug_string', $auto_updates_string, $theme, $enabled);
$theme_version_string .= ' | ' . $auto_updates_string;
$theme_version_string_debug .= ', ' . $auto_updates_string;
}
$info['wp-themes-inactive']['fields'][sanitize_text_field($theme->name)] = array('label' => sprintf(__('%1$s (%2$s)'), $theme->name, $theme_slug), 'value' => $theme_version_string, 'debug' => $theme_version_string_debug);
}
if (defined('WPMU_PLUGIN_DIR') && is_dir(WPMU_PLUGIN_DIR)) {
$is_writable_wpmu_plugin_dir = wp_is_writable(WPMU_PLUGIN_DIR);
$info['wp-filesystem']['fields']['mu-plugins'] = array('label' => __('The must use plugins directory'), 'value' => $is_writable_wpmu_plugin_dir ? __('Writable') : __('Not writable'), 'debug' => $is_writable_wpmu_plugin_dir ? 'writable' : 'not writable');
}
$info = apply_filters('debug_information', $info);
return $info;
}
public static function format($info_array, $type)
{
$return = "`\n";
foreach ($info_array as $section => $details) {
if (empty($details['fields']) || isset($details['private']) && $details['private']) {
continue;
}
$section_label = 'debug' === $type ? $section : $details['label'];
$return .= sprintf("### %s%s ###\n\n", $section_label, isset($details['show_count']) && $details['show_count'] ? sprintf(' (%d)', count($details['fields'])) : '');
foreach ($details['fields'] as $field_name => $field) {
if (isset($field['private']) && true === $field['private']) {
continue;
}
if ('debug' === $type && isset($field['debug'])) {
$debug_data = $field['debug'];
} else {
$debug_data = $field['value'];
}
if (is_array($debug_data)) {
$value = '';
foreach ($debug_data as $sub_field_name => $sub_field_value) {
$value .= sprintf("\n\t%s: %s", $sub_field_name, $sub_field_value);
}
} elseif (is_bool($debug_data)) {
$value = $debug_data ? 'true' : 'false';
} elseif (empty($debug_data) && '0' !== $debug_data) {
$value = 'undefined';
} else {
$value = $debug_data;
}
if ('debug' === $type) {
$label = $field_name;
} else {
$label = $field['label'];
}
$return .= sprintf("%s: %s\n", $label, $value);
}
$return .= "\n";
}
$return .= '`';
return $return;
}
public static function get_database_size()
{
global $wpdb;
$size = 0;
$rows = $wpdb->get_results('SHOW TABLE STATUS', ARRAY_A);
if ($wpdb->num_rows > 0) {
foreach ($rows as $row) {
$size += $row['Data_length'] + $row['Index_length'];
}
}
return (int) $size;
}
public static function get_sizes()
{
$size_db = self::get_database_size();
$upload_dir = wp_get_upload_dir();
if (function_exists('ini_get')) {
$max_execution_time = ini_get('max_execution_time');
}
if (empty($max_execution_time)) {
$max_execution_time = 30;
}
if ($max_execution_time > 20) {
$max_execution_time -= 2;
}
$paths = array('wordpress_size' => untrailingslashit(ABSPATH), 'themes_size' => get_theme_root(), 'plugins_size' => WP_PLUGIN_DIR, 'uploads_size' => $upload_dir['basedir']);
$exclude = $paths;
unset($exclude['wordpress_size']);
$exclude = array_values($exclude);
$size_total = 0;
$all_sizes = array();
foreach ($paths as $name => $path) {
$dir_size = null;
$results = array('path' => $path, 'raw' => 0);
if (microtime(true) - WP_START_TIMESTAMP < $max_execution_time) {
if ('wordpress_size' === $name) {
$dir_size = recurse_dirsize($path, $exclude, $max_execution_time);
} else {
$dir_size = recurse_dirsize($path, null, $max_execution_time);
}
}
if (false === $dir_size) {
$results['size'] = __('The size cannot be calculated. The directory is not accessible. Usually caused by invalid permissions.');
$results['debug'] = 'not accessible';
$size_total = null;
} elseif (null === $dir_size) {
$results['size'] = __('The directory size calculation has timed out. Usually caused by a very large number of sub-directories and files.');
$results['debug'] = 'timeout while calculating size';
$size_total = null;
} else {
if (null !== $size_total) {
$size_total += $dir_size;
}
$results['raw'] = $dir_size;
$results['size'] = size_format($dir_size, 2);
$results['debug'] = $results['size'] . " ({$dir_size} bytes)";
}
$all_sizes[$name] = $results;
}
if ($size_db > 0) {
$database_size = size_format($size_db, 2);
$all_sizes['database_size'] = array('raw' => $size_db, 'size' => $database_size, 'debug' => $database_size . " ({$size_db} bytes)");
} else {
$all_sizes['database_size'] = array('size' => __('Not available'), 'debug' => 'not available');
}
if (null !== $size_total && $size_db > 0) {
$total_size = $size_total + $size_db;
$total_size_mb = size_format($total_size, 2);
$all_sizes['total_size'] = array('raw' => $total_size, 'size' => $total_size_mb, 'debug' => $total_size_mb . " ({$total_size} bytes)");
} else {
$all_sizes['total_size'] = array('size' => __('Total size is not available. Some errors were encountered when determining the size of your installation.'), 'debug' => 'not available');
}
return $all_sizes;
}
}