| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422 |
- <?php
- final class FL_Debug {
- static private $tests = array();
- public static function init() {
- if ( isset( $_GET['fldebug'] ) && get_option( 'fl_debug_mode', false ) === $_GET['fldebug'] ) {
- add_action( 'init', array( 'FL_Debug', 'display_tests' ) );
- }
- if ( get_option( 'fl_debug_mode', false ) ) {
- self::enable_logging();
- }
- }
- public static function enable_logging() {
- @ini_set( 'display_errors', 1 ); // @codingStandardsIgnoreLine
- @ini_set( 'display_startup_errors', 1 ); // @codingStandardsIgnoreLine
- @error_reporting( E_ALL ); // @codingStandardsIgnoreLine
- }
- public static function display_tests() {
- self::prepare_tests();
- header( 'Content-Type:text/plain' );
- foreach ( (array) self::$tests as $test ) {
- echo self::display( $test );
- }
- die();
- }
- private static function display( $test ) {
- if ( is_array( $test['data'] ) ) {
- $test['data'] = implode( "\n", $test['data'] );
- }
- return sprintf( "%s\n%s\n\n", $test['name'], $test['data'] );
- }
- private static function register( $slug, $args ) {
- self::$tests[ $slug ] = $args;
- }
- private static function formatbytes( $size, $precision = 2 ) {
- $base = log( $size, 1024 );
- $suffixes = array( '', 'K', 'M', 'G', 'T' );
- return round( pow( 1024, $base - floor( $base ) ), $precision ) . $suffixes[ floor( $base ) ];
- }
- private static function get_plugins() {
- $plugins = array();
- require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
- require_once( ABSPATH . 'wp-admin/includes/update.php' );
- $plugins_data = get_plugins();
- foreach ( $plugins_data as $plugin_path => $plugin ) {
- if ( is_plugin_active( $plugin_path ) ) {
- $plugins['active'][] = sprintf( '%s - version %s by %s.', $plugin['Name'], $plugin['Version'], $plugin['Author'] );
- } else {
- $plugins['deactive'][] = sprintf( '%s - version %s by %s.', $plugin['Name'], $plugin['Version'], $plugin['Author'] );
- }
- }
- return $plugins;
- }
- private static function get_mu_plugins() {
- $plugins_data = get_mu_plugins();
- $plugins = array();
- foreach ( $plugins_data as $plugin_path => $plugin ) {
- $plugins[] = sprintf( '%s version %s by %s', $plugin['Name'], $plugin['Version'], $plugin['Author'] );
- }
- return $plugins;
- }
- private static function safe_ini_get( $ini ) {
- return @ini_get( $ini ); // @codingStandardsIgnoreLine
- }
- private static function divider() {
- return '----------------------------------------------';
- }
- private static function prepare_tests() {
- global $wpdb, $wp_version;
- $args = array(
- 'name' => 'WordPress',
- 'data' => self::divider(),
- );
- self::register( 'wp', $args );
- $args = array(
- 'name' => 'WordPress Address',
- 'data' => get_option( 'siteurl' ),
- );
- self::register( 'wp_url', $args );
- $args = array(
- 'name' => 'Site Address',
- 'data' => get_option( 'home' ),
- );
- self::register( 'site_url', $args );
- $args = array(
- 'name' => 'WP Version',
- 'data' => $wp_version,
- );
- self::register( 'wp_version', $args );
- $args = array(
- 'name' => 'WP Debug',
- 'data' => defined( 'WP_DEBUG' ) && WP_DEBUG ? 'Yes' : 'No',
- );
- self::register( 'wp_debug', $args );
- $args = array(
- 'name' => 'FL Debug',
- 'data' => FLBuilder::is_debug() ? 'Yes' : 'No',
- );
- self::register( 'fl_debug', $args );
- $args = array(
- 'name' => 'SSL Enabled',
- 'data' => is_ssl() ? 'Yes' : 'No',
- );
- self::register( 'wp_ssl', $args );
- $args = array(
- 'name' => 'Language',
- 'data' => get_locale(),
- );
- self::register( 'lang', $args );
- $args = array(
- 'name' => 'Multisite',
- 'data' => is_multisite() ? 'Yes' : 'No',
- );
- self::register( 'is_multi', $args );
- $args = array(
- 'name' => 'WordPress memory limit',
- 'data' => WP_MAX_MEMORY_LIMIT,
- );
- self::register( 'wp_max_mem', $args );
- $args = array(
- 'name' => 'Themes',
- 'data' => self::divider(),
- );
- self::register( 'themes', $args );
- $theme = wp_get_theme();
- $args = array(
- 'name' => 'Active Theme',
- 'data' => array(
- sprintf( '%s - v%s', $theme->get( 'Name' ), $theme->get( 'Version' ) ),
- sprintf( 'Parent Theme: %s', ( $theme->get( 'Template' ) ) ? $theme->get( 'Template' ) : 'Not a child theme' ),
- ),
- );
- self::register( 'active_theme', $args );
- $args = array(
- 'name' => 'Plugins',
- 'data' => self::divider(),
- );
- self::register( 'plugins', $args );
- $args = array(
- 'name' => 'Plugins',
- 'data' => self::divider(),
- );
- self::register( 'wp_plugins', $args );
- $defaults = array(
- 'active' => array(),
- 'deactive' => array(),
- );
- $plugins = wp_parse_args( self::get_plugins(), $defaults );
- $args = array(
- 'name' => 'Active Plugins',
- 'data' => $plugins['active'],
- );
- self::register( 'wp_plugins', $args );
- $args = array(
- 'name' => 'Unactive Plugins',
- 'data' => $plugins['deactive'],
- );
- self::register( 'wp_plugins_deactive', $args );
- $args = array(
- 'name' => 'Must-Use Plugins',
- 'data' => self::get_mu_plugins(),
- );
- self::register( 'mu_plugins', $args );
- $args = array(
- 'name' => 'PHP',
- 'data' => self::divider(),
- );
- self::register( 'php', $args );
- $args = array(
- 'name' => 'PHP SAPI',
- 'data' => php_sapi_name(),
- );
- self::register( 'php_sapi', $args );
- $args = array(
- 'name' => 'PHP Memory Limit',
- 'data' => self::safe_ini_get( 'memory_limit' ),
- );
- self::register( 'php_mem_limit', $args );
- $args = array(
- 'name' => 'PHP Version',
- 'data' => phpversion(),
- );
- self::register( 'php_ver', $args );
- $args = array(
- 'name' => 'Post Max Size',
- 'data' => self::safe_ini_get( 'post_max_size' ),
- );
- self::register( 'post_max', $args );
- $args = array(
- 'name' => 'PHP Max Input Vars',
- 'data' => self::safe_ini_get( 'max_input_vars' ),
- );
- self::register( 'post_max_input', $args );
- $args = array(
- 'name' => 'PHP Max Execution Time',
- 'data' => self::safe_ini_get( 'max_execution_time' ),
- );
- self::register( 'post_max_time', $args );
- $args = array(
- 'name' => 'Max Upload Size',
- 'data' => self::formatbytes( wp_max_upload_size() ),
- );
- self::register( 'post_max_upload', $args );
- $curl = ( function_exists( 'curl_version' ) ) ? curl_version() : false;
- $args = array(
- 'name' => 'Curl',
- 'data' => ( $curl ) ? sprintf( '%s - %s', $curl['version'], $curl['ssl_version'] ) : 'Not Enabled.',
- );
- self::register( 'curl', $args );
- $args = array(
- 'name' => 'PCRE Backtrack Limit ( default 1000000 )',
- 'data' => self::safe_ini_get( 'pcre.backtrack_limit' ),
- );
- self::register( 'backtrack', $args );
- $args = array(
- 'name' => 'PCRE Recursion Limit ( default 100000 )',
- 'data' => self::safe_ini_get( 'pcre.recursion_limit' ),
- );
- self::register( 'recursion', $args );
- $args = array(
- 'name' => 'BB Products',
- 'data' => self::divider(),
- );
- self::register( 'bb', $args );
- $args = array(
- 'name' => 'Beaver Builder',
- 'data' => FL_BUILDER_VERSION,
- );
- self::register( 'bb_version', $args );
- $args = array(
- 'name' => 'Beaver Themer',
- 'data' => ( defined( 'FL_THEME_BUILDER_VERSION' ) ) ? FL_THEME_BUILDER_VERSION : 'Not active/installed.',
- );
- self::register( 'themer_version', $args );
- $args = array(
- 'name' => 'Beaver Theme',
- 'data' => ( defined( 'FL_THEME_VERSION' ) ) ? FL_THEME_VERSION : 'Not active/installed.',
- );
- self::register( 'theme_version', $args );
- $args = array(
- 'name' => 'Cache Folders',
- 'data' => self::divider(),
- );
- self::register( 'cache_folders', $args );
- $cache = FLBuilderModel::get_cache_dir();
- $args = array(
- 'name' => 'Beaver Builder Path',
- 'data' => $cache['path'],
- );
- self::register( 'bb_cache_path', $args );
- $args = array(
- 'name' => 'Beaver Builder Path writable',
- 'data' => ( fl_builder_filesystem()->is_writable( $cache['path'] ) ) ? 'Yes' : 'No',
- );
- self::register( 'bb_cache_path_writable', $args );
- if ( class_exists( 'FLCustomizer' ) ) {
- $cache = FLCustomizer::get_cache_dir();
- $args = array(
- 'name' => 'Beaver Theme Path',
- 'data' => $cache['path'],
- );
- self::register( 'bb_theme_cache_path', $args );
- $args = array(
- 'name' => 'Beaver Theme Path writable',
- 'data' => ( fl_builder_filesystem()->is_writable( $cache['path'] ) ) ? 'Yes' : 'No',
- );
- self::register( 'bb_theme_cache_path_writable', $args );
- }
- $args = array(
- 'name' => 'License',
- 'data' => self::divider(),
- );
- self::register( 'license', $args );
- if ( true === FL_BUILDER_LITE ) {
- $args = array(
- 'name' => 'Beaver Builder License',
- 'data' => 'Lite version detected',
- );
- self::register( 'bb_sub_lite', $args );
- } elseif ( class_exists( 'FLUpdater' ) ) {
- $subscription = FLUpdater::get_subscription_info();
- $args = array(
- 'name' => 'Beaver Builder License',
- 'data' => ( $subscription->active ) ? 'Active' : 'Not Active',
- );
- self::register( 'bb_sub', $args );
- if ( isset( $subscription->error ) ) {
- $args = array(
- 'name' => 'License Error',
- 'data' => $subscription->error,
- );
- self::register( 'bb_sub_err', $args );
- }
- if ( isset( $subscription->domain ) ) {
- $args = array(
- 'name' => 'Domain Active',
- 'data' => ( '1' == $subscription->domain->active ) ? 'Yes' : 'No',
- );
- self::register( 'bb_sub_domain', $args );
- }
- }
- $args = array(
- 'name' => 'Server',
- 'data' => self::divider(),
- );
- self::register( 'serv', $args );
- $args = array(
- 'name' => 'MySQL Version',
- 'data' => ( ! empty( $wpdb->is_mysql ) ? $wpdb->db_version() : 'Unknown' ),
- );
- self::register( 'mysql_version', $args );
- $args = array(
- 'name' => 'Server Info',
- 'data' => $_SERVER['SERVER_SOFTWARE'],
- );
- self::register( 'server', $args );
- $args = array(
- 'name' => 'htaccess files',
- 'data' => self::divider(),
- );
- self::register( 'up_htaccess', $args );
- // detect uploads folder .htaccess file and display it if found.
- $uploads = wp_upload_dir( null, false );
- $uploads_htaccess = trailingslashit( $uploads['basedir'] ) . '.htaccess';
- $root_htaccess = trailingslashit( ABSPATH ) . '.htaccess';
- if ( file_exists( $root_htaccess ) ) {
- ob_start();
- readfile( $root_htaccess );
- $htaccess = ob_get_clean();
- $args = array(
- 'name' => $root_htaccess . "\n",
- 'data' => $htaccess,
- );
- self::register( 'up_htaccess_root', $args );
- }
- if ( file_exists( $uploads_htaccess ) ) {
- ob_start();
- readfile( $uploads_htaccess );
- $htaccess = ob_get_clean();
- $args = array(
- 'name' => $uploads_htaccess . "\n",
- 'data' => $htaccess,
- );
- self::register( 'up_htaccess_uploads', $args );
- }
- }
- }
- add_action( 'plugins_loaded', array( 'FL_Debug', 'init' ) );
|