Completed
Push — master ( 00c767...680d7f )
by Joas
15:12 queued 01:14
created

QueryLogger   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
dl 0
loc 43
rs 10
c 1
b 0
f 1
wmc 5
lcom 1
cbo 1

4 Methods

Rating   Name   Duplication   Size   Complexity  
A startQuery() 0 3 1
A getStack() 0 7 1
A stopQuery() 0 7 2
A getQueries() 0 3 1
1
<?php
2
/**
3
 * @copyright Copyright (c) 2016, ownCloud, Inc.
4
 *
5
 * @author Morris Jobke <[email protected]>
6
 * @author Robin Appelman <[email protected]>
7
 *
8
 * @license AGPL-3.0
9
 *
10
 * This code is free software: you can redistribute it and/or modify
11
 * it under the terms of the GNU Affero General Public License, version 3,
12
 * as published by the Free Software Foundation.
13
 *
14
 * This program is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
 * GNU Affero General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU Affero General Public License, version 3,
20
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
21
 *
22
 */
23
24
namespace OC\Diagnostics;
25
26
use OCP\Diagnostics\IQueryLogger;
27
28
class QueryLogger implements IQueryLogger {
29
	/**
30
	 * @var \OC\Diagnostics\Query
31
	 */
32
	protected $activeQuery;
33
34
	/**
35
	 * @var \OC\Diagnostics\Query[]
36
	 */
37
	protected $queries = array();
38
39
	/**
40
	 * @param string $sql
41
	 * @param array $params
42
	 * @param array $types
43
	 */
44
	public function startQuery($sql, array $params = null, array $types = null) {
45
		$this->activeQuery = new Query($sql, $params, microtime(true), $this->getStack());
0 ignored issues
show
Bug introduced by
It seems like $params defined by parameter $params on line 44 can also be of type null; however, OC\Diagnostics\Query::__construct() does only seem to accept array, maybe add an additional type check?

This check looks at variables that have been passed in as parameters and are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
46
	}
47
48
	private function getStack() {
49
		$stack = debug_backtrace();
50
		array_shift($stack);
51
		array_shift($stack);
52
		array_shift($stack);
53
		return $stack;
54
	}
55
56
	public function stopQuery() {
57
		if ($this->activeQuery) {
58
			$this->activeQuery->end(microtime(true));
59
			$this->queries[] = $this->activeQuery;
60
			$this->activeQuery = null;
61
		}
62
	}
63
64
	/**
65
	 * @return Query[]
66
	 */
67
	public function getQueries() {
68
		return $this->queries;
69
	}
70
}
71