140 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php declare(strict_types = 1);
 | |
| /**
 | |
|  * Mock 'Debug Bar' data collector.
 | |
|  *
 | |
|  * @package query-monitor
 | |
|  */
 | |
| 
 | |
| if ( ! defined( 'ABSPATH' ) ) {
 | |
| 	exit;
 | |
| }
 | |
| 
 | |
| final class QM_Collector_Debug_Bar extends QM_Collector {
 | |
| 
 | |
| 	/**
 | |
| 	 * @var string
 | |
| 	 */
 | |
| 	public $id = 'debug_bar';
 | |
| 
 | |
| 	/**
 | |
| 	 * @var Debug_Bar_Panel|null
 | |
| 	 */
 | |
| 	private $panel = null;
 | |
| 
 | |
| 	/**
 | |
| 	 * @param Debug_Bar_Panel $panel
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	public function set_panel( Debug_Bar_Panel $panel ) {
 | |
| 		$this->panel = $panel;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @return Debug_Bar_Panel|null
 | |
| 	 */
 | |
| 	public function get_panel() {
 | |
| 		return $this->panel;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	public function process() {
 | |
| 		$this->get_panel()->prerender();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @return bool
 | |
| 	 */
 | |
| 	public function is_visible() {
 | |
| 		return $this->get_panel()->is_visible();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	public function render() {
 | |
| 		$this->get_panel()->render();
 | |
| 	}
 | |
| 
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * @return void
 | |
|  */
 | |
| function register_qm_collectors_debug_bar() {
 | |
| 
 | |
| 	global $debug_bar;
 | |
| 
 | |
| 	if ( class_exists( 'Debug_Bar', false ) || qm_debug_bar_being_activated() ) {
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	$collectors = QM_Collectors::init();
 | |
| 
 | |
| 	$debug_bar = new Debug_Bar();
 | |
| 	$redundant = array(
 | |
| 		'debug_bar_actions_addon_panel', // Debug Bar Actions and Filters Addon
 | |
| 		'debug_bar_remote_requests_panel', // Debug Bar Remote Requests
 | |
| 		'debug_bar_screen_info_panel', // Debug Bar Screen Info
 | |
| 		'ps_listdeps_debug_bar_panel', // Debug Bar List Script & Style Dependencies
 | |
| 	);
 | |
| 
 | |
| 	foreach ( $debug_bar->panels as $panel ) {
 | |
| 		$panel_id = strtolower( sanitize_html_class( get_class( $panel ) ) );
 | |
| 
 | |
| 		if ( in_array( $panel_id, $redundant, true ) ) {
 | |
| 			continue;
 | |
| 		}
 | |
| 
 | |
| 		$collector = new QM_Collector_Debug_Bar();
 | |
| 		$collector->set_id( "debug_bar_{$panel_id}" );
 | |
| 		$collector->set_panel( $panel );
 | |
| 
 | |
| 		$collectors->add( $collector );
 | |
| 	}
 | |
| 
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * @return bool
 | |
|  */
 | |
| function qm_debug_bar_being_activated() {
 | |
| 	// phpcs:disable
 | |
| 
 | |
| 	if ( ! is_admin() ) {
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	if ( ! isset( $_REQUEST['action'] ) ) {
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	if ( isset( $_GET['action'] ) ) {
 | |
| 
 | |
| 		if ( ! isset( $_GET['plugin'] ) || ! isset( $_GET['_wpnonce'] ) ) {
 | |
| 			return false;
 | |
| 		}
 | |
| 
 | |
| 		if ( 'activate' === $_GET['action'] && false !== strpos( wp_unslash( $_GET['plugin'] ), 'debug-bar.php' ) ) {
 | |
| 			return true;
 | |
| 		}
 | |
| 
 | |
| 	} elseif ( isset( $_POST['action'] ) ) {
 | |
| 
 | |
| 		if ( ! isset( $_POST['checked'] ) || ! is_array( $_POST['checked'] ) || ! isset( $_POST['_wpnonce'] ) ) {
 | |
| 			return false;
 | |
| 		}
 | |
| 
 | |
| 		if ( 'activate-selected' === wp_unslash( $_POST['action'] ) && in_array( 'debug-bar/debug-bar.php', wp_unslash( $_POST['checked'] ), true ) ) {
 | |
| 			return true;
 | |
| 		}
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	return false;
 | |
| 	// phpcs:enable
 | |
| }
 | |
| 
 | |
| add_action( 'init', 'register_qm_collectors_debug_bar' );
 |