Initial commit

This commit is contained in:
Tobias Matthaiou 2019-08-20 23:34:33 +02:00
parent 2a51da46c3
commit a551e9b857
7 changed files with 154 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/vendor/

19
README.md Normal file
View File

@ -0,0 +1,19 @@
Oxid SQL Logger
---------------
Returns all SQL queries in the console browser.
## Install
composer require --dev tumtum/oxid-sql-logger
## Usage
```php
\StartSQLLog();
$db = \OxidEsales\Eshop\Core\DatabaseProvider::getDb(\OxidEsales\Eshop\Core\DatabaseProvider::FETCH_MODE_ASSOC);
$list = $db->getAll('SELECT * FROM oxarticle WHERE oxprice < ? LIMIT 100', [49.99]);
\StopSQLLog();
```

23
composer.json Normal file
View File

@ -0,0 +1,23 @@
{
"name": "tumtum/oxid-sql-logger",
"description": "Returns all SQL queries in the browser.",
"type": "library",
"require": {
"monolog/monolog": "^1"
},
"license": "GPL-3.0",
"autoload": {
"psr-4": {
"tm\\oxid\\sql\\logger\\": "./src"
},
"files": [
"./src/functions.php"
]
},
"authors": [
{
"name": "Tobias Matthaiou",
"email": "developer@tobimat.eu"
}
]
}

10
example/simple.php Normal file
View File

@ -0,0 +1,10 @@
<?php
require __DIR__ . '/../../../../source/bootstrap.php';
\StartSQLLog();
$db = \OxidEsales\Eshop\Core\DatabaseProvider::getDb(\OxidEsales\Eshop\Core\DatabaseProvider::FETCH_MODE_ASSOC);
$list = $db->getAll('SELECT * FROM oxarticle WHERE oxprice < ? LIMIT 100', [49.99]);
\StopSQLLog();

View File

@ -0,0 +1,33 @@
<?php
/**
* Autor: Tobias Matthaiou <developer@tobimat.eu>
* Date: 2019-08-20
* Time: 21:56
*/
namespace tm\oxid\sql\logger;
use Doctrine\DBAL\Configuration;
/**
* Class OxidEsalesDatabase
* Is a depenction injection Helper Class
*
* @package tm\oxid\sql\logger
*/
class OxidEsalesDatabase extends \OxidEsales\Eshop\Core\Database\Adapter\Doctrine\Database
{
public static function enableLogger()
{
$database = \OxidEsales\Eshop\Core\DatabaseProvider::getDb(\OxidEsales\Eshop\Core\DatabaseProvider::FETCH_MODE_ASSOC);
$dbalConfig = $database->getConnection()->getConfiguration();
$dbalConfig->setSQLLogger(new OxidSQLLogger());
}
public static function disableLogger()
{
$database = \OxidEsales\Eshop\Core\DatabaseProvider::getDb(\OxidEsales\Eshop\Core\DatabaseProvider::FETCH_MODE_ASSOC);
$dbalConfig = $database->getConnection()->getConfiguration();
$dbalConfig->setSQLLogger(null);
}
}

54
src/OxidSQLLogger.php Normal file
View File

@ -0,0 +1,54 @@
<?php
/**
* Autor: Tobias Matthaiou <developer@tobimat.eu>
* Date: 2019-08-20
* Time: 21:33
*/
namespace tm\oxid\sql\logger;
use Doctrine\DBAL\Logging\SQLLogger;
use Monolog;
/**
* Class OxidSQLLogger
* @package tm\oxid\sql\logger
*/
class OxidSQLLogger implements SQLLogger
{
/**
* @inheritDoc
*/
public function __construct()
{
if (!Monolog\Registry::hasLogger('sql')) {
Monolog\Registry::addLogger(
new Monolog\Logger(
'sql',
[
new Monolog\Handler\BrowserConsoleHandler(),
],
[
new Monolog\Processor\IntrospectionProcessor(Monolog\Logger::DEBUG, ['tm\\oxid\\sql\\logger', 'Doctrine\\DBAL\\Connection', 'OxidEsales\\EshopCommunity\\Core\\Database\\Adapter\\Doctrine\\Database']),
new Monolog\Processor\PsrLogMessageProcessor(),
]
)
);
}
}
/**
* @inheritDoc
*/
public function startQuery($sql, array $params = null, array $types = null)
{
Monolog\Registry::sql()->addDebug($sql, ['params' => $params, 'types' => $types]);
}
/**
* @inheritDoc
*/
public function stopQuery()
{
}
}

14
src/functions.php Normal file
View File

@ -0,0 +1,14 @@
<?php
/**
* Autor: Tobias Matthaiou <developer@tobimat.eu>
* Date: 2019-08-20
* Time: 23:11
*/
function StartSQLLog() {
\tm\oxid\sql\logger\OxidEsalesDatabase::enableLogger();
}
function StopSQLLog() {
\tm\oxid\sql\logger\OxidEsalesDatabase::disableLogger();
}