From 93d996ef6d910c8276588cf788279d421dc37edd Mon Sep 17 00:00:00 2001 From: David Grudl Date: Sat, 22 Jun 2013 18:14:36 +0200 Subject: [PATCH] DibiNettePanel is compatible with Nette Framework 2.1 [Closes #97] --- dibi/bridges/Nette/DibiNette20Extension.php | 2 +- dibi/bridges/Nette/DibiNette21Extension.php | 2 +- dibi/bridges/Nette/DibiNettePanel.php | 22 ++++++++++++--------- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/dibi/bridges/Nette/DibiNette20Extension.php b/dibi/bridges/Nette/DibiNette20Extension.php index 87eb2470..1045571c 100644 --- a/dibi/bridges/Nette/DibiNette20Extension.php +++ b/dibi/bridges/Nette/DibiNette20Extension.php @@ -47,7 +47,7 @@ class DibiNette20Extension extends Nette\Config\CompilerExtension $panel = $container->addDefinition($this->prefix('panel')) ->setClass('DibiNettePanel') ->addSetup('Nette\Diagnostics\Debugger::$bar->addPanel(?)', array('@self')) - ->addSetup('Nette\Diagnostics\Debugger::$blueScreen->addPanel(?)', array(array('@self', 'renderException'))); + ->addSetup('Nette\Diagnostics\Debugger::$blueScreen->addPanel(?)', array('DibiNettePanel::renderException')); $connection->addSetup('$service->onEvent[] = ?', array(array($panel, 'logEvent'))); } diff --git a/dibi/bridges/Nette/DibiNette21Extension.php b/dibi/bridges/Nette/DibiNette21Extension.php index 551b6123..7144f69e 100644 --- a/dibi/bridges/Nette/DibiNette21Extension.php +++ b/dibi/bridges/Nette/DibiNette21Extension.php @@ -47,7 +47,7 @@ class DibiNette21Extension extends Nette\DI\CompilerExtension $panel = $container->addDefinition($this->prefix('panel')) ->setClass('DibiNettePanel') ->addSetup('Nette\Diagnostics\Debugger::getBar()->addPanel(?)', array('@self')) - ->addSetup('Nette\Diagnostics\Debugger::getBlueScreen()->addPanel(?)', array(array('@self', 'renderException'))); + ->addSetup('Nette\Diagnostics\Debugger::getBlueScreen()->addPanel(?)', array('DibiNettePanel::renderException')); $connection->addSetup('$service->onEvent[] = ?', array(array($panel, 'logEvent'))); } diff --git a/dibi/bridges/Nette/DibiNettePanel.php b/dibi/bridges/Nette/DibiNettePanel.php index 37ba825c..3a030a15 100644 --- a/dibi/bridges/Nette/DibiNettePanel.php +++ b/dibi/bridges/Nette/DibiNettePanel.php @@ -49,20 +49,24 @@ class DibiNettePanel extends DibiObject implements IBarPanel public function register(DibiConnection $connection) { - static $done; if (is_callable('Nette\Diagnostics\Debugger::enable') && !class_exists('NDebugger')) { class_alias('Nette\Diagnostics\Debugger', 'NDebugger'); // PHP 5.2 code compatibility } - if (is_callable('NDebugger::enable')) { - NDebugger::$bar && NDebugger::$bar->addPanel($this); - NDebugger::$blueScreen && !$done && NDebugger::$blueScreen->addPanel(array($this, 'renderException'), __CLASS__); + if (is_callable('NDebugger::enable') && is_callable('NDebugger::getBlueScreen')) { // Nette Framework 2.1 + NDebugger::getBar()->addPanel($this); + NDebugger::getBlueScreen()->addPanel(array(__CLASS__, 'renderException')); $connection->onEvent[] = array($this, 'logEvent'); - } elseif (is_callable('Debugger::enable')) { + + } elseif (is_callable('NDebugger::enable')) { // Nette Framework 2.0 (for PHP 5.3 or PHP 5.2 prefixed) + NDebugger::$bar && NDebugger::$bar->addPanel($this); + NDebugger::$blueScreen && NDebugger::$blueScreen->addPanel(array(__CLASS__, 'renderException'), __CLASS__); + $connection->onEvent[] = array($this, 'logEvent'); + + } elseif (is_callable('Debugger::enable') && !is_callable('Debugger::getBlueScreen')) { // Nette Framework 2.0 for PHP 5.2 non-prefixed Debugger::$bar && Debugger::$bar->addPanel($this); - Debugger::$blueScreen && !$done && Debugger::$blueScreen->addPanel(array($this, 'renderException'), __CLASS__); + Debugger::$blueScreen && Debugger::$blueScreen->addPanel(array(__CLASS__, 'renderException'), __CLASS__); $connection->onEvent[] = array($this, 'logEvent'); } - $done = TRUE; } @@ -85,7 +89,7 @@ class DibiNettePanel extends DibiObject implements IBarPanel * Returns blue-screen custom tab. * @return mixed */ - public function renderException($e) + public static function renderException($e) { if ($e instanceof DibiException && $e->getSql()) { return array( @@ -140,7 +144,7 @@ class DibiNettePanel extends DibiObject implements IBarPanel if ($explain) { static $counter; $counter++; - $s .= "
explain"; + $s .= "
explain"; } $s .= '' . dibi::dump(strlen($event->sql) > self::$maxLength ? substr($event->sql, 0, self::$maxLength) . '...' : $event->sql, TRUE);