Файл: concrete5.7.5.6/concrete/src/Logging/Query/Logger.php
Строк: 33
<?php
namespace ConcreteCoreLoggingQuery;
use ConcreteCoreHttpRequest;
use ConcreteCoreSupportFacadeDatabase;
use Config;
use Core;
use DoctrineDBALLoggingDebugStack;
class Logger
{
protected $excludedPaths = array(
'/dashboard/system/optimization/query_log*',
'/tools/required/*'
);
public function clearQueryLog()
{
$db = Database::get();
$db->query('truncate table SystemDatabaseQueryLog');
}
public function shouldLogQueries(Request $request)
{
$th = Core::make('helper/text');
foreach($this->excludedPaths as $path) {
if ($th->fnmatch($path, $request->getPath())) {
return false;
}
}
return true;
}
/**
* @DoctrineDBALLoggingDebugStack[] $loggers
*/
public function write($loggers)
{
$db = Database::get();
foreach($loggers as $stack) {
if (isset($stack->queries)) {
foreach($stack->queries as $query) {
$params = '';
if (is_array($query['params'])) {
$params = implode(',', $query['params']);
}
$db->insert('SystemDatabaseQueryLog', array(
'query' => $query['sql'],
'params' => $params,
'executionMS' => $query['executionMS']
)
);
}
}
}
}
public static function getTotalLogged()
{
$db = Database::get();
return $db->query('select count(*) from SystemDatabaseQueryLog')->fetchColumn();
}
public static function getParametersForQuery($query)
{
$db = Database::get();
return $db->GetCol('select params from SystemDatabaseQueryLog where query = ? order by params asc', array($query));
}
}