Sindbad~EG File Manager
<?php
namespace PixelYourSite;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
const HTML_WARNING = '<i class="fa fa-exclamation-triangle text-warning" aria-hidden="true" style="color: #fa0;"></i> ';
const HTML_CRITICAL = '<i class="fa fa-exclamation-circle" aria-hidden="true" style="color: #d64d4d;"></i> ';
const TEXT_WARNING = '[warning] ';
const TEXT_CRITICAL = '[critical] ';
/**
* @return array
*/
function get_system_report_data( $for_download = false ) {
global $wpdb;
/**
* Wordpress
*/
$wordpress = array(
'Home URL' => get_option( 'home' ),
'Site URL' => get_option( 'siteurl' ),
'WP version' => get_bloginfo( 'version' ),
'WP multisite' => is_multisite() ? 'Yes' : 'No',
'Language' => get_locale(),
);
/**
* Server
*/
// check php version
if ( version_compare( phpversion(), '5.3.0', '<' ) ) {
$version_check = $for_download ? TEXT_CRITICAL : HTML_CRITICAL;
$version_check .= 'Ask your hosting company to upgrade you to at least PHP 5.6.15 or newer. ';
} elseif ( version_compare( phpversion(), '5.6.14', '<' ) ) {
$version_check = $for_download ? TEXT_WARNING : HTML_WARNING;
$version_check .= 'Ask your hosting company to upgrade you to at least PHP 5.6.15 or newer. ';
} else {
$version_check = '';
}
// check mb_string extension presence
if ( extension_loaded( 'mbstring' ) ) {
$mb_string_check = 'Yes';
} else {
$mb_string_check = $for_download ? TEXT_WARNING : HTML_WARNING;
$mb_string_check .= 'No. Ask your hosting company to upgrade to enable "mbstring" extension.';
}
$server = array(
'Server info' => isset( $_SERVER['SERVER_SOFTWARE'] ) ? $_SERVER['SERVER_SOFTWARE'] : 'Unknown',
'PHP version' => phpversion() . $version_check,
'Multibyte string' => $mb_string_check,
'MySQL version' => ( ! empty( $wpdb->is_mysql ) ? $wpdb->db_version() : 'Unknown' ),
);
/**
* Plugins
*/
$plugins = array();
$conflict_plugins = array(
'sumodiscounts/sumodiscounts.php' => array(
'type' => 'warning',
),
'imagify/imagify.php' => array(
'type' => 'warning',
),
);
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
require_once( ABSPATH . 'wp-admin/includes/update.php' );
if ( function_exists( 'get_plugin_updates' ) ) {
// Get both site plugins and network plugins
$active_plugins = (array) get_option( 'active_plugins', array() );
if ( is_multisite() ) {
$network_activated_plugins = array_keys( get_site_option( 'active_sitewide_plugins', array() ) );
$active_plugins = array_merge( $active_plugins, $network_activated_plugins );
}
$available_updates = get_plugin_updates();
foreach ( $active_plugins as $plugin ) {
$data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin );
$name = $data['Name'];
$value = '';
// check for conflicts
if ( array_key_exists( $plugin, $conflict_plugins ) ) {
$conflict_data = $conflict_plugins[ $plugin ];
if ( $for_download ) {
$value .= $conflict_data['type'] == 'warning' ? TEXT_WARNING : TEXT_CRITICAL;
} else {
$value .= $conflict_data['type'] == 'warning' ? HTML_WARNING : HTML_CRITICAL;
}
}
// add plugin author name and URL
if ( $for_download ) {
$value .= 'by ' . $data['AuthorName'] . ' [' . esc_url_raw( $data['PluginURI'] ) . ']';
} else {
$value .= 'by <a href="' . esc_url_raw( $data['PluginURI'] ) . '" target="_blank">' .
$data['AuthorName'] . '</a> ';
}
// plugin version
$value .= '[' . $data['Version'] . '] ';
// available update version if any
if ( array_key_exists( $plugin, $available_updates ) ) {
$update = $available_updates[ $plugin ];
$value .= '[Update available: ' . $update->update->new_version . '] ';
}
// is network activated?
if ( $data['Network'] ) {
$value .= '[Network] ';
}
$plugins[ $name ] = trim( $value );
}
}
/**
* Theme
*/
$active_theme = wp_get_theme();
$theme = array(
'Name' => $active_theme->Name,
'Version' => $active_theme->Version,
'Author URL' => esc_url_raw( $active_theme->{'Author URI'} ),
'Child Theme' => is_child_theme() ? 'Yes' : 'No',
);
if ( is_child_theme() ) {
$parent_theme = wp_get_theme( $active_theme->Template );
$theme['Parent Theme Name'] = $parent_theme->Name;
$theme['Parent Theme Version'] = $parent_theme->Version;
$theme['Parent Author URL'] = $parent_theme->{'Author URI'};
}
$report = array(
'WordPress Environment' => $wordpress,
'Server Environment' => $server,
'Active Plugins' => $plugins,
'Theme' => $theme,
);
return apply_filters( 'pys_system_report', $report, $for_download );
}
/**
* Process a system report download.
*/
function download_system_report() {
if ( empty( $_POST['pys_action'] ) || 'download_system_report' !== $_POST['pys_action'] ) {
return;
}
if ( ! wp_verify_nonce( $_POST['_wpnonce'], 'pys_download_system_report_nonce' ) ) {
return;
}
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
// prepare human-readable system report
$output = "";
$report_data = get_system_report_data( true );
foreach ( $report_data as $section_name => $section_report ) {
$output .= "\r\n";
$output .= "### {$section_name } ###";
$output .= "\r\n";
$output .= "\r\n";
foreach ( $section_report as $name => $value ) {
$output .= "{$name}: $value";
$output .= "\r\n";
}
}
// send report to client browser
ignore_user_abort( true );
nocache_headers();
header( 'Content-Type: text/plain; charset=utf-8' );
header( 'Content-Disposition: attachment; filename=pys-system-report-' . date( 'm-d-Y' ) . '.txt' );
header( "Expires: 0" );
echo $output;
exit;
}
add_action( 'admin_init', 'PixelYourSite\download_system_report' );
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists