function output_diagnostic_info($escape = true)
{
global $table_prefix;
global $wpdb;
$output = 'site_url(): ';
$output .= esc_html(site_url());
$output .= "\r\n";
$output .= 'home_url(): ';
$output .= esc_html(home_url());
$output .= "\r\n";
$output .= 'Database Name: ';
$output .= esc_html($wpdb->dbname);
$output .= "\r\n";
$output .= 'Table Prefix: ';
$output .= esc_html($table_prefix);
$output .= "\r\n";
$output .= 'WordPress: ';
$output .= get_bloginfo('version', 'display');
if (is_multisite()) {
$output .= ' Multisite';
$output .= "\r\n";
$output .= 'Multisite Site Count: ';
$output .= esc_html(get_blog_count());
}
$output .= "\r\n";
$output .= 'Web Server: ';
$output .= esc_html(!empty($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : '');
$output .= "\r\n";
$output .= 'PHP: ';
if (function_exists('phpversion')) {
$output .= esc_html(phpversion());
}
$output .= "\r\n";
$output .= 'MySQL: ';
$output .= esc_html($wpdb->db_version());
$output .= "\r\n";
$output .= 'ext/mysqli: ';
$output .= empty($wpdb->use_mysqli) ? 'no' : 'yes';
$output .= "\r\n";
$output .= 'PHP Memory Limit: ';
if (function_exists('ini_get')) {
$output .= esc_html(ini_get('memory_limit'));
}
$output .= "\r\n";
$output .= 'WP Memory Limit: ';
$output .= esc_html(WP_MEMORY_LIMIT);
$output .= "\r\n";
$output .= 'Memory Usage: ';
$output .= size_format(memory_get_usage(true));
$output .= "\r\n";
$output .= 'Blocked External HTTP Requests: ';
if (!defined('WP_HTTP_BLOCK_EXTERNAL') || !WP_HTTP_BLOCK_EXTERNAL) {
$output .= 'None';
} else {
$accessible_hosts = defined('WP_ACCESSIBLE_HOSTS') ? WP_ACCESSIBLE_HOSTS : '';
if (empty($accessible_hosts)) {
$output .= 'ALL';
} else {
$output .= 'Partially (Accessible Hosts: ' . esc_html($accessible_hosts) . ')';
}
}
$output .= "\r\n";
$output .= 'WP Locale: ';
$output .= esc_html(get_locale());
$output .= "\r\n";
$output .= 'Organize uploads by month/year: ';
$output .= esc_html(get_option('uploads_use_yearmonth_folders') ? 'Enabled' : 'Disabled');
$output .= "\r\n";
$output .= 'WP_DEBUG: ';
$output .= esc_html(defined('WP_DEBUG') && WP_DEBUG ? 'Yes' : 'No');
$output .= "\r\n";
$output .= 'WP_DEBUG_LOG: ';
$output .= esc_html(defined('WP_DEBUG_LOG') && WP_DEBUG_LOG ? 'Yes' : 'No');
$output .= "\r\n";
$output .= 'WP_DEBUG_DISPLAY: ';
$output .= esc_html(defined('WP_DEBUG_DISPLAY') && WP_DEBUG_DISPLAY ? 'Yes' : 'No');
$output .= "\r\n";
$output .= 'SCRIPT_DEBUG: ';
$output .= esc_html(defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? 'Yes' : 'No');
$output .= "\r\n";
$output .= 'WP Max Upload Size: ';
$output .= esc_html(size_format(wp_max_upload_size()));
$output .= "\r\n";
$output .= 'PHP Time Limit: ';
if (function_exists('ini_get')) {
$output .= esc_html(ini_get('max_execution_time'));
}
$output .= "\r\n";
$output .= 'PHP Error Log: ';
if (function_exists('ini_get')) {
$output .= esc_html(ini_get('error_log'));
}
$output .= "\r\n";
$output .= 'WP Cron: ';
$output .= esc_html(defined('DISABLE_WP_CRON') && DISABLE_WP_CRON ? 'Disabled' : 'Enabled');
$output .= "\r\n";
$output .= 'fsockopen: ';
if (function_exists('fsockopen')) {
$output .= 'Enabled';
} else {
$output .= 'Disabled';
}
$output .= "\r\n";
$output .= 'allow_url_fopen: ';
$allow_url_fopen = ini_get('allow_url_fopen');
if (empty($allow_url_fopen)) {
$output .= 'Disabled';
} else {
$output .= 'Enabled';
}
$output .= "\r\n";
$output .= 'OpenSSL: ';
if ($this->open_ssl_enabled()) {
$output .= esc_html(OPENSSL_VERSION_TEXT);
} else {
$output .= 'Disabled';
}
$output .= "\r\n";
$output .= 'cURL: ';
if (function_exists('curl_init')) {
$output .= 'Enabled';
} else {
$output .= 'Disabled';
}
$output .= "\r\n";
$output .= 'Zlib Compression: ';
if (function_exists('gzcompress')) {
$output .= 'Enabled';
} else {
$output .= 'Disabled';
}
$output .= "\r\n";
$output .= 'PHP GD: ';
if ($this->gd_enabled()) {
$gd_info = gd_info();
$output .= isset($gd_info['GD Version']) ? esc_html($gd_info['GD Version']) : 'Enabled';
} else {
$output .= 'Disabled';
}
$output .= "\r\n";
$output .= 'Imagick: ';
if ($this->imagick_enabled()) {
$output .= 'Enabled';
} else {
$output .= 'Disabled';
}
$output .= "\r\n";
$output .= 'Basic Auth: ';
if (isset($_SERVER['REMOTE_USER']) || isset($_SERVER['PHP_AUTH_USER']) || isset($_SERVER['REDIRECT_REMOTE_USER'])) {
$output .= 'Enabled';
} else {
$output .= 'Disabled';
}
$output .= "\r\n";
$output .= 'Proxy: ';
if (defined('WP_PROXY_HOST') || defined('WP_PROXY_PORT')) {
$output .= 'Enabled';
} else {
$output .= 'Disabled';
}
$output .= "\r\n\r\n";
$media_counts = $this->diagnostic_media_counts();
$output .= 'Media Files: ';
$output .= number_format_i18n($media_counts['all']);
$output .= "\r\n";
$output .= 'Media Files on S3: ';
$output .= number_format_i18n($media_counts['s3']);
$output .= "\r\n";
$output .= 'Number of Image Sizes: ';
$sizes = count(get_intermediate_image_sizes());
$output .= number_format_i18n($sizes);
$output .= "\r\n\r\n";
$output .= 'Names and Dimensions of Image Sizes: ';
$output .= "\r\n";
$size_details = $this->get_image_sizes_details();
$output .= $size_details;
$output .= "\r\n";
$output .= 'WP_CONTENT_DIR: ';
$output .= esc_html(defined('WP_CONTENT_DIR') ? WP_CONTENT_DIR : 'Not defined');
$output .= "\r\n";
$output .= 'WP_CONTENT_URL: ';
$output .= esc_html(defined('WP_CONTENT_URL') ? WP_CONTENT_URL : 'Not defined');
$output .= "\r\n";
$output .= 'UPLOADS: ';
$output .= esc_html(defined('UPLOADS') ? UPLOADS : 'Not defined');
$output .= "\r\n";
$output .= 'WP_PLUGIN_DIR: ';
$output .= esc_html(defined('WP_PLUGIN_DIR') ? WP_PLUGIN_DIR : 'Not defined');
$output .= "\r\n";
$output .= 'WP_PLUGIN_URL: ';
$output .= esc_html(defined('WP_PLUGIN_URL') ? WP_PLUGIN_URL : 'Not defined');
$output .= "\r\n\r\n";
$output .= 'AWS_USE_EC2_IAM_ROLE: ';
$output .= esc_html(defined('AWS_USE_EC2_IAM_ROLE') ? AWS_USE_EC2_IAM_ROLE : 'Not defined');
$output .= "\r\n";
$output .= 'AS3CF_BUCKET: ';
$output .= esc_html(defined('AS3CF_BUCKET') ? AS3CF_BUCKET : 'Not defined');
$output .= "\r\n";
$output .= 'AS3CF_ASSETS_BUCKET: ';
$output .= esc_html(defined('AS3CF_ASSETS_BUCKET') ? AS3CF_ASSETS_BUCKET : 'Not defined');
$output .= "\r\n";
$output .= 'AS3CF_REGION: ';
$output .= esc_html(defined('AS3CF_REGION') ? AS3CF_REGION : 'Not defined');
$output .= "\r\n\r\n";
$output .= 'Bucket: ';
$output .= $this->get_setting('bucket');
$output .= "\r\n";
$output .= 'Region: ';
$region = $this->get_setting('region');
if (!is_wp_error($region)) {
$output .= $region;
}
$output .= "\r\n";
$output .= 'Copy Files to S3: ';
$output .= $this->on_off('copy-to-s3');
$output .= "\r\n";
$output .= 'Rewrite File URLs: ';
$output .= $this->on_off('serve-from-s3');
$output .= "\r\n";
$output .= "\r\n";
$output .= "Local URL:\r\n";
$output .= $this->get_local_url_preview($escape);
$output .= "\r\n";
$output .= "S3 URL:\r\n";
$output .= $this->get_url_preview($escape);
$output .= "\r\n";
$output .= "\r\n";
$output .= 'Domain: ';
$output .= $this->get_setting('domain');
$output .= "\r\n";
$output .= 'Enable Path: ';
$output .= $this->on_off('enable-object-prefix');
$output .= "\r\n";
$output .= 'Custom Path: ';
$output .= $this->get_setting('object-prefix');
$output .= "\r\n";
$output .= 'Use Year/Month: ';
$output .= $this->on_off('use-yearmonth-folders');
$output .= "\r\n";
$output .= 'Force HTTPS: ';
$output .= $this->on_off('force-https');
$output .= "\r\n";
$output .= 'Remove Files From Server: ';
$output .= $this->on_off('remove-local-file');
$output .= "\r\n";
$output .= 'Object Versioning: ';
$output .= $this->on_off('object-versioning');
$output .= "\r\n\r\n";
$output = apply_filters('as3cf_diagnostic_info', $output);
if (has_action('as3cf_diagnostic_info')) {
$output .= "\r\n";
}
$theme_info = wp_get_theme();
$output .= "Active Theme Name: " . esc_html($theme_info->get('Name')) . "\r\n";
$output .= "Active Theme Folder: " . esc_html(basename($theme_info->get_stylesheet_directory())) . "\r\n";
if ($theme_info->get('Template')) {
$output .= "Parent Theme Folder: " . esc_html($theme_info->get('Template')) . "\r\n";
}
if (!file_exists($theme_info->get_stylesheet_directory())) {
$output .= "WARNING: Active Theme Folder Not Found\r\n";
}
$output .= "\r\n";
$output .= "Active Plugins:\r\n";
$active_plugins = (array) get_option('active_plugins', array());
$plugin_details = array();
if (is_multisite()) {
$network_active_plugins = wp_get_active_network_plugins();
$active_plugins = array_map(array($this, 'remove_wp_plugin_dir'), $network_active_plugins);
}
foreach ($active_plugins as $plugin) {
$plugin_details[] = $this->get_plugin_details(WP_PLUGIN_DIR . '/' . $plugin);
}
asort($plugin_details);
$output .= implode('', $plugin_details);
$mu_plugins = wp_get_mu_plugins();
if ($mu_plugins) {
$mu_plugin_details = array();
$output .= "\r\n";
$output .= "Must-use Plugins:\r\n";
foreach ($mu_plugins as $mu_plugin) {
$mu_plugin_details[] = $this->get_plugin_details($mu_plugin);
}
asort($mu_plugin_details);
$output .= implode('', $mu_plugin_details);
}
return $output;
}