forked from stfalcon-studio/ls-plugin_debugtoolbar
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPluginDebugtoolbar.class.php
114 lines (96 loc) · 2.99 KB
/
PluginDebugtoolbar.class.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
/* ---------------------------------------------------------------------------
* @Plugin Name: Debug Toolbar
* @Plugin Id: debugtoolbar
* @Plugin URI:
* @Description: Shows some technical and debug information of Livestreet
* @Author: stfalcon-studio
* @Author URI: http://stfalcon.com
* @LiveStreet Version: 0.5
* @License: GNU GPL v2, http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* ----------------------------------------------------------------------------
*/
// Prevents a direct access to the file
if (!class_exists('Plugin')) {
die('Hacking attemp!');
}
class PluginDebugtoolbar extends Plugin
{
// SQL queries storage
protected static $aSqlData = array();
/**
* Store SQL data into temp storage
*
* @param object $oDb
* @param string $sMessage
*/
public static function setSqlData($oDb, $sMessage)
{
// Call native Logger to store queries log
databaseLogger($oDb, $sMessage);
static $iQueryCount = 0;
/**
* Так как пока не получается нормально получить время исполнения запроса и сам запрос,
* будем парсить кашу которая стекается в лог файл.
* @TODO: Найти способ нормально получить данные о запросах из DbSimple.
*/
if (false !== strpos($sMessage, '--')) {
// This is result: -- 0 ms; returned 0 row(s)
if (preg_match("/(\d+).+returned\s+(.*)/u", $sMessage, $aMatch)) {
self::$aSqlData[$iQueryCount]['time'] = $aMatch[1];
self::$aSqlData[$iQueryCount]['return'] = $aMatch[2];
} else {
self::$aSqlData[$iQueryCount]['time'] = 0;
self::$aSqlData[$iQueryCount]['return'] = '';
}
} else {
// This is query. So let's clean it to pretty view
$aReplace = array(
"#\s+#u" => ' ',
'#[,.]#u' => '\1 '
);
$sMessage = preg_replace(array_keys($aReplace), array_values($aReplace), $sMessage);
$iQueryCount++;
self::$aSqlData[$iQueryCount]['query'] = trim($sMessage);
}
}
/**
* Get SQL data from temp storage
*
* @return array
*/
public static function getSqlData()
{
return self::$aSqlData;
}
/**
* Конструктор плагина
*/
public function __construct()
{
parent::__construct();
// Включаем логирование запросов, для того чтобы их позже вывести в панель
Engine::getInstance()->Database_GetConnect()->setLogger('PluginDebugtoolbar::setSqlData');
}
/**
* Plugin activation
*
* @return boolean
*/
public function Activate()
{
$this->Cache_Clean();
return true;
}
/**
* Plugin initialization
*/
public function Init()
{
$oSmarty = $this->Viewer_GetSmartyObject();
// Переопределяем шаблон отладчика Smarty
$oSmarty->debug_tpl = Plugin::GetTemplatePath(__CLASS__) . 'smarty.debug.tpl';
}
}
// Подключаем необходимые плагину функции
include_once 'include/dt_functions.php';