first
This commit is contained in:
64
wp-content/plugins/query-monitor/collectors/multisite.php
Normal file
64
wp-content/plugins/query-monitor/collectors/multisite.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php declare(strict_types = 1);
|
||||
/**
|
||||
* Multisite collector, used for monitoring use of `switch_to_blog()` and `restore_current_blog()`.
|
||||
*
|
||||
* @package query-monitor
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @extends QM_DataCollector<QM_Data_Multisite>
|
||||
*/
|
||||
class QM_Collector_Multisite extends QM_DataCollector {
|
||||
public $id = 'multisite';
|
||||
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
|
||||
$this->data->switches = array();
|
||||
|
||||
add_action( 'switch_blog', array( $this, 'action_switch_blog' ), 10, 3 );
|
||||
}
|
||||
|
||||
public function get_storage(): QM_Data {
|
||||
return new QM_Data_Multisite();
|
||||
}
|
||||
|
||||
/**
|
||||
* Fires when the blog is switched.
|
||||
*
|
||||
* @param int $new_blog_id New blog ID.
|
||||
* @param int $prev_blog_id Previous blog ID.
|
||||
* @param string $context Additional context. Accepts 'switch' when called from switch_to_blog()
|
||||
* or 'restore' when called from restore_current_blog().
|
||||
* @return void
|
||||
*/
|
||||
public function action_switch_blog( $new_blog_id, $prev_blog_id, $context ) {
|
||||
if ( intval( $new_blog_id ) === intval( $prev_blog_id ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->data->switches[] = array(
|
||||
'new' => $new_blog_id,
|
||||
'prev' => $prev_blog_id,
|
||||
'to' => ( 'switch' === $context ),
|
||||
'trace' => new QM_Backtrace( array(
|
||||
'ignore_hook' => array(
|
||||
'switch_blog' => true,
|
||||
),
|
||||
'ignore_func' => array(
|
||||
'switch_to_blog' => true,
|
||||
'restore_current_blog' => true,
|
||||
),
|
||||
) ),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if ( is_multisite() ) {
|
||||
# Load early to detect as many happenings during the bootstrap process as possible
|
||||
QM_Collectors::add( new QM_Collector_Multisite() );
|
||||
}
|
Reference in New Issue
Block a user