theme_textdomain = wp_get_theme()->get( 'TextDomain' ); $this->is_premium = preg_match( '/-pro/', $this->theme_textdomain ); if( $this->is_premium ) : $this->parent_menu_slug = str_replace( '-pro', '-info', $this->theme_textdomain ); else: $this->parent_menu_slug = $this->theme_textdomain . '-info'; endif; add_action( 'admin_menu', [ $this, 'register_menus' ] ); add_action( 'admin_enqueue_scripts', [ $this, 'register_scripts' ] ); } /** * Register styles and scripts * * @since 1.0.5 */ public function register_scripts( $hook ) { if( $hook == 'blogistic-info_page_blaze-system-info' ) : wp_enqueue_style( 'blaze-admin-menu', BLAZE_DEMO_IMPORTER_URL . 'admin-menu/menu.css', [], BLAZE_DEMO_IMPORTER_VERSION ); wp_enqueue_script( 'blaze-admin-menu', BLAZE_DEMO_IMPORTER_URL . 'admin-menu/menu.js', [ 'jquery' ], BLAZE_DEMO_IMPORTER_VERSION, true ); wp_localize_script( 'blaze-admin-menu', 'BlazeMenuObject', [ 'ajaxUrl' => admin_url( 'admin-ajax.php' ), '_wpnonce' => wp_create_nonce( 'blogistic-security-nonce' ), 'systemInfo' => json_encode( $this->get_system_info_data() ) ]); endif; } /** * Register menus and sub menus * * @since 1.0.5 */ public function register_menus() { add_submenu_page( $this->parent_menu_slug, // parent slug esc_html__( 'System Info', 'blaze-demo-importer' ), // page title esc_html__( 'System Info', 'blaze-demo-importer' ), // menu title 'manage_capabilities', 'blaze-system-info', [ $this, 'system_info_callback' ] ); } /** * Callback function for system info sub menu page * * @since 1.0.5 */ public function system_info_callback() { ?>

system_info_html_part(); ?>
get_system_info_data(); if( ! empty( $system_data ) && is_array( $system_data ) ) : foreach( $system_data as $data ) : ?>
'. esc_html__( 'Required: ', 'blaze-demo-importer' ) . esc_html( $reading['remark'] ) .'
'; ?>
get_plugins_list( 'active-plugins' ); $inactive_plugins = $this->get_plugins_list( 'inactive-plugins' ); $system_info = [ 'system-info' => [ 'label' => esc_html__( 'System Info', 'blaze-demo-importer' ), 'readings' => [ 'operating-system' => $this->set_reading_value( esc_html__( 'Operating System', 'blaze-demo-importer' ), PHP_OS ), 'server' => $this->set_reading_value( esc_html__( 'Server', 'blaze-demo-importer' ), wp_unslash( $_SERVER['SERVER_SOFTWARE'] ) ), 'mysql-server' => $this->set_reading_value( esc_html__( 'MySQL Version', 'blaze-demo-importer' ), $wpdb->get_var( 'SELECT VERSION()' ) ), 'php-version' => $this->set_reading_value( esc_html__( 'PHP Version', 'blaze-demo-importer' ), PHP_VERSION, wp_get_theme()->get( 'RequiresPHP' ) ), 'php-max-execution-time' => $this->set_reading_value( esc_html__( 'PHP Max Execution Time', 'blaze-demo-importer' ), ini_get( 'max_execution_time' ), esc_html__( '> 30', 'blaze-demo-importer' ) ), 'php-max-upload-size' => $this->set_reading_value( esc_html__( 'PHP Max Upload Size', 'blaze-demo-importer' ), ini_get( 'upload_max_filesize' ), esc_html__( 'at least 1M', 'blaze-demo-importer' ) ), 'php-post-max-size' => $this->set_reading_value( esc_html__( 'PHP Post Max Size', 'blaze-demo-importer' ), ini_get( 'post_max_size' ) ), 'php-max-input-vars' => $this->set_reading_value( esc_html__( 'PHP Max Input Vars', 'blaze-demo-importer' ), ini_get( 'max_input_vars' ) ), 'php-memory-limit' => $this->set_reading_value( esc_html__( 'PHP Memory Limit', 'blaze-demo-importer' ), ini_get( 'memory_limit' ) ), 'curl-installed' => $this->set_reading_value( esc_html__( 'cURL Installed', 'blaze-demo-importer' ), $this->get_yes_no_value( extension_loaded( 'curl' ) ) ), 'curl-version' => $this->set_reading_value( esc_html__( 'cURL Version', 'blaze-demo-importer' ), $curl_data['version'] ), 'gd-installed' => $this->set_reading_value( esc_html__( 'GD Installed', 'blaze-demo-importer' ), $this->get_yes_no_value( extension_loaded( 'gd' ) ) ), 'gd-version' => $this->set_reading_value( esc_html__( 'GD Version', 'blaze-demo-importer' ), $gd_data['GD Version'] ), 'write-permission' => $this->set_reading_value( esc_html__( 'Write Permission', 'blaze-demo-importer' ), wp_unslash( $_SERVER['SERVER_SOFTWARE'] ) ), // yet 'demo-pack-server-connection' => $this->set_reading_value( esc_html__( 'Demo Pack Server Connection', 'blaze-demo-importer' ), wp_unslash( $_SERVER['SERVER_SOFTWARE'] ) ), //yet ] ], 'wordpress-info' => [ 'label' => esc_html__( 'Wordpress Info', 'blaze-demo-importer' ), 'readings' => [ 'version' => $this->set_reading_value( esc_html__( 'Version', 'blaze-demo-importer' ), get_bloginfo( 'version' ) ), 'site-url' => $this->set_reading_value( esc_html__( 'Site URL', 'blaze-demo-importer' ), get_site_url() ), 'home-url' => $this->set_reading_value( esc_html__( 'Home URL', 'blaze-demo-importer' ), get_home_url() ), 'multisite' => $this->set_reading_value( esc_html__( 'Multisite', 'blaze-demo-importer' ), $this->get_yes_no_value( is_multisite() ) ), 'max-upload-size' => $this->set_reading_value( esc_html__( 'Max Upload Size', 'blaze-demo-importer' ), size_format( wp_max_upload_size() ), esc_html__( 'at least 1M', 'blaze-demo-importer' ) ), 'memory-limit' => $this->set_reading_value( esc_html__( 'Memory Limit', 'blaze-demo-importer' ), WP_MEMORY_LIMIT ), 'max-memory-limit' => $this->set_reading_value( esc_html__( 'Max Memory Limit', 'blaze-demo-importer' ), WP_MAX_MEMORY_LIMIT ), 'permalink-structure' => $this->set_reading_value( esc_html__( 'Permalink Structure', 'blaze-demo-importer' ), get_option('permalink_structure') ), // yet 'language' => $this->set_reading_value( esc_html__( 'Language', 'blaze-demo-importer' ), get_bloginfo( 'language' ) ), 'debug-mode-enabled' => $this->set_reading_value( esc_html__( 'Debug Mode Enabled', 'blaze-demo-importer' ), $this->get_yes_no_value( WP_DEBUG ) ), 'script-debug-mode-enabled' => $this->set_reading_value( esc_html__( 'Script Debug Mode Enabled', 'blaze-demo-importer' ), $this->get_yes_no_value( SCRIPT_DEBUG ) ), 'blaze-demo-importer-version' => $this->set_reading_value( esc_html__( 'Blaze Demo Importer Version', 'blaze-demo-importer' ), BLAZE_DEMO_IMPORTER_VERSION ) ] ], 'theme-info' => [ 'label' => esc_html__( 'Theme Info', 'blaze-demo-importer' ), 'readings' => [ 'name' => $this->set_reading_value( esc_html__( 'Name', 'blaze-demo-importer' ), wp_get_theme()->get( 'Name' ) ), 'version' => $this->set_reading_value( esc_html__( 'Version', 'blaze-demo-importer' ), wp_get_theme()->get( 'Version' ) ), 'author' => $this->set_reading_value( esc_html__( 'Author', 'blaze-demo-importer' ), wp_get_theme()->get( 'Author' ) ), 'author-url' => $this->set_reading_value( esc_html__( 'Author URL', 'blaze-demo-importer' ), wp_get_theme()->get( 'AuthorURI' ) ), 'child-theme' => $this->set_reading_value( esc_html__( 'Child Theme', 'blaze-demo-importer' ), $this->get_yes_no_value( is_child_theme() ) ) ] ], 'active-plugins' => [ 'label' => esc_html__( 'Active Plugins', 'blaze-demo-importer' ), 'readings' => $this->filter_plugins( $active_plugins ) ], 'inactive-plugins' => [ 'label' => esc_html__( 'Inactive Plugins', 'blaze-demo-importer' ), 'readings' => $this->filter_plugins( $inactive_plugins ) ] ]; return $system_info; } /** * set readings value * * @since 1.0.5 */ public function set_reading_value( $label, $value, $remark = '' ) { $readings_array = [ 'label' => esc_html( $label ), 'value' => esc_html( $value ) ]; if( $remark ) $readings_array['remark'] = esc_html( $remark ); return $readings_array; } /** * Echo yer or no * * @since 1.0.5 */ public function get_yes_no_value( $condition ) { switch( $condition ) : case true: return esc_html__( 'Yes', 'blaze-demo-importer' ); break; case false: return esc_html__( 'No', 'blaze-demo-importer' ); break; endswitch; } /** * Get list of installed plugins * * @since 1.0.5 */ public function get_plugins_list( $type ) { $all_plugins = get_plugins(); $active_plugins_list = get_option( 'active_plugins' ); $active_plugins_array = []; $inactive_plugins_array = []; if( ! empty( $active_plugins_list ) && is_array( $active_plugins_list ) ) : foreach( $all_plugins as $active_key => $active_value ) : if( in_array( $active_key, $active_plugins_list ) ) : $active_plugins_array[ $active_key ] = $active_value; else: $inactive_plugins_array[ $active_key ] = $active_value; endif; endforeach; endif; switch( $type ) : case 'active-plugins' : return $active_plugins_array; break; case 'inactive-plugins' : return $inactive_plugins_array; break; endswitch; } /** * Filter the plugins array * * @since 1.0.5 */ public function filter_plugins( $plugins ) { if( ! empty( $plugins ) && is_array( $plugins ) ) : $filtered_plugins = []; foreach( $plugins as $plugin ) : $label = esc_html( $plugin['Name'] . ' - ' . $plugin['Version'] ); $value = esc_html( 'By ' . $plugin['Author'] ); $filtered_plugins[ $plugin['TextDomain'] ] = $this->set_reading_value( $label, $value ); endforeach; return $filtered_plugins; endif; } } new Admin_Menu(); endif;