/var/www/html_de/wp-content/plugins/query-monitor/classes/DB.php


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;
    }

}