155 lines
3.9 KiB
PHP
155 lines
3.9 KiB
PHP
<?php
|
|
/**
|
|
* Autoloader - Loads all plugin modules
|
|
*
|
|
* @package WP_Debug
|
|
* @since 1.0.0
|
|
*/
|
|
|
|
// Exit if accessed directly
|
|
if (!defined('ABSPATH')) {
|
|
exit;
|
|
}
|
|
|
|
/**
|
|
* WP_Debug_Autoloader class
|
|
*/
|
|
class WP_Debug_Autoloader {
|
|
|
|
/**
|
|
* Modules to load
|
|
*
|
|
* @var array
|
|
*/
|
|
private static $modules = array(
|
|
'logger' => array(
|
|
'file' => 'logger.php',
|
|
'class' => 'WP_Debug_Logger',
|
|
'enabled' => true,
|
|
),
|
|
'hook_monitor' => array(
|
|
'file' => 'hook-monitor.php',
|
|
'class' => 'WP_Debug_Hook_Monitor',
|
|
'enabled' => true,
|
|
),
|
|
'template_tracer' => array(
|
|
'file' => 'template-tracer.php',
|
|
'class' => 'WP_Debug_Template_Tracer',
|
|
'enabled' => true,
|
|
),
|
|
'asset_tracker' => array(
|
|
'file' => 'asset-tracker.php',
|
|
'class' => 'WP_Debug_Asset_Tracker',
|
|
'enabled' => true,
|
|
),
|
|
'profiler' => array(
|
|
'file' => 'profiler.php',
|
|
'class' => 'WP_Debug_Profiler',
|
|
'enabled' => true,
|
|
),
|
|
'query_analyzer' => array(
|
|
'file' => 'query-analyzer.php',
|
|
'class' => 'WP_Debug_Query_Analyzer',
|
|
'enabled' => true,
|
|
),
|
|
'frontend_panel' => array(
|
|
'file' => 'frontend-panel.php',
|
|
'class' => 'WP_Debug_Frontend_Panel',
|
|
'enabled' => true,
|
|
),
|
|
'cli_commands' => array(
|
|
'file' => 'cli-commands.php',
|
|
'class' => 'WP_Debug_CLI_Commands',
|
|
'enabled' => true,
|
|
),
|
|
);
|
|
|
|
/**
|
|
* Initialize autoloader
|
|
*/
|
|
public static function init() {
|
|
// Check if debug is enabled globally
|
|
$debug_enabled = get_option('wp_debug_enabled', true);
|
|
|
|
if (!$debug_enabled) {
|
|
return;
|
|
}
|
|
|
|
// Load each module
|
|
foreach (self::$modules as $module_name => $module_data) {
|
|
self::load_module($module_name, $module_data);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Load a single module
|
|
*
|
|
* @param string $module_name Module name
|
|
* @param array $module_data Module data
|
|
*/
|
|
private static function load_module($module_name, $module_data) {
|
|
// Check if module is enabled
|
|
$module_enabled = get_option('wp_debug_module_' . $module_name, $module_data['enabled']);
|
|
|
|
if (!$module_enabled) {
|
|
return;
|
|
}
|
|
|
|
// Build file path
|
|
$file_path = WP_DEBUG_PLUGIN_DIR . 'inc/' . $module_data['file'];
|
|
|
|
// Check if file exists
|
|
if (!file_exists($file_path)) {
|
|
if (WP_DEBUG) {
|
|
error_log(sprintf('WP Debug: Module file not found: %s', $file_path));
|
|
}
|
|
return;
|
|
}
|
|
|
|
// Load the file
|
|
require_once $file_path;
|
|
|
|
// Initialize the class if it has an init method
|
|
if (class_exists($module_data['class']) && method_exists($module_data['class'], 'init')) {
|
|
call_user_func(array($module_data['class'], 'init'));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get list of available modules
|
|
*
|
|
* @return array List of modules
|
|
*/
|
|
public static function get_modules() {
|
|
return self::$modules;
|
|
}
|
|
|
|
/**
|
|
* Enable a module
|
|
*
|
|
* @param string $module_name Module name
|
|
* @return bool True on success
|
|
*/
|
|
public static function enable_module($module_name) {
|
|
if (!isset(self::$modules[$module_name])) {
|
|
return false;
|
|
}
|
|
|
|
return update_option('wp_debug_module_' . $module_name, true);
|
|
}
|
|
|
|
/**
|
|
* Disable a module
|
|
*
|
|
* @param string $module_name Module name
|
|
* @return bool True on success
|
|
*/
|
|
public static function disable_module($module_name) {
|
|
if (!isset(self::$modules[$module_name])) {
|
|
return false;
|
|
}
|
|
|
|
return update_option('wp_debug_module_' . $module_name, false);
|
|
}
|
|
}
|