1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
<?php declare(strict_types = 1); /** * Database class used by the database dropin. * * @package query-monitor */
class QM_DB extends wpdb {
/** * @var float */ public $time_start;
/** * Performs a MySQL database query, using current database connection. * * @see wpdb::query() * * @param string $query Database query * @return int|bool Boolean true for CREATE, ALTER, TRUNCATE and DROP queries. Number of rows * affected/selected for all other queries. Boolean false on error. */ public function query( $query ) { if ( $this->show_errors ) { $this->hide_errors(); }
$result = parent::query( $query ); $i = $this->num_queries - 1;
if ( did_action( 'qm/cease' ) ) { // It's not possible to prevent the parent class from logging queries because it reads // the `SAVEQUERIES` constant and I don't want to override more methods than necessary. $this->queries = array(); }
if ( ! isset( $this->queries[ $i ] ) ) { return $result; }
$this->queries[ $i ]['trace'] = new QM_Backtrace();
if ( ! isset( $this->queries[ $i ][3] ) ) { $this->queries[ $i ][3] = $this->time_start; }
if ( $this->last_error ) { $code = 'qmdb';
// This needs to remain in place to account for a user still on PHP 5. Don't want to kill their site. if ( $this->dbh instanceof mysqli ) { $code = mysqli_errno( $this->dbh ); }
$this->queries[ $i ]['result'] = new WP_Error( $code, $this->last_error ); } else { $this->queries[ $i ]['result'] = $result; }
return $result; }
}
|