/
LogList.php
58 lines (50 loc) · 1.5 KB
/
LogList.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
<?php
namespace Concrete\Core\Logging\Query;
use Concrete\Core\Search\ItemList\Database\ItemList;
use Concrete\Core\Search\Pagination\Pagination;
use Pagerfanta\Adapter\DoctrineDbalAdapter;
class LogList extends ItemList
{
protected $autoSortColumns = array('queryTotal', 'query');
protected $sortBy = 'queryTotal';
protected $sortByDirection = 'desc';
public function createQuery()
{
$this->query->select('query', 'count(*) as queryTotal')
->from('SystemDatabaseQueryLog', 'ql')
->groupBy('query')
->orderBy('queryTotal', 'desc');
}
/**
* The total results of the query.
*
* @return int
*/
public function getTotalResults()
{
$query = $this->deliverQueryObject();
return $query->resetQueryParts(['groupBy', 'orderBy'])->select('count(distinct ql.query)')->setMaxResults(1)->execute()->fetchColumn();
}
/**
* Gets the pagination object for the query.
*
* @return Pagination
*/
protected function createPaginationObject()
{
$adapter = new DoctrineDbalAdapter($this->deliverQueryObject(), function ($query) {
$query->resetQueryParts(['groupBy', 'orderBy'])->select('count(distinct ql.query)')->setMaxResults(1);
});
$pagination = new Pagination($this, $adapter);
return $pagination;
}
/**
* @param $queryRow
*
* @return array
*/
public function getResult($queryRow)
{
return $queryRow;
}
}