From 5c99ffd5cc2728aee57b075f06e4aafbcb88fb32 Mon Sep 17 00:00:00 2001 From: William DURAND Date: Thu, 7 Apr 2011 09:55:50 +0200 Subject: [PATCH] Added query report in the Propel panel (profiler) --- DataCollector/PropelDataCollector.php | 45 +++++++++++++++++++++- Logger/PropelLogger.php | 22 ++++++++++- Resources/views/Collector/propel.html.twig | 28 ++++++++++++-- 3 files changed, 89 insertions(+), 6 deletions(-) diff --git a/DataCollector/PropelDataCollector.php b/DataCollector/PropelDataCollector.php index 52c4abd..86d457e 100644 --- a/DataCollector/PropelDataCollector.php +++ b/DataCollector/PropelDataCollector.php @@ -1,7 +1,7 @@ * @@ -28,9 +28,19 @@ class PropelDataCollector extends DataCollector * @var Propel\PropelBundle\Logger\PropelLogger */ private $logger; - + /** + * Connection name + * + * @var string + */ private $connectionName; + /** + * Constructor + * + * @param \Propel\PropelBundle\Logger\PropelLogger $logger A PropelLogger + * @param string $connectionName A connection name + */ public function __construct(\Propel\PropelBundle\Logger\PropelLogger $logger, $connectionName) { $this->logger = $logger; @@ -44,15 +54,46 @@ class PropelDataCollector extends DataCollector public function collect(Request $request, Response $response, \Exception $exception = null) { $this->data = array( + 'queries' => $this->logger->getQueries(), 'connectionName' => $this->connectionName, ); } + /** + * Returns the collector name. + * + * @return string The collector name. + */ public function getName() { return 'propel'; } + /** + * Returns queries. + * + * @return array Queries + */ + public function getQueries() + { + return $this->data['queries']; + } + + /** + * Returns the query count. + * + * @return integer The query count + */ + public function getQueryCount() + { + return count($this->data['queries']); + } + + /** + * Returns the connection name. + * + * @return string The connection name + */ public function getConnectionName() { return $this->data['connectionName']; diff --git a/Logger/PropelLogger.php b/Logger/PropelLogger.php index ee07bee..0720165 100644 --- a/Logger/PropelLogger.php +++ b/Logger/PropelLogger.php @@ -20,7 +20,14 @@ use Symfony\Component\HttpKernel\Log\LoggerInterface; */ class PropelLogger implements \BasicLogger { + /** + * @var LoggerInterface + */ protected $logger; + /** + * @var array + */ + protected $queries; /** * Constructor. @@ -29,7 +36,8 @@ class PropelLogger implements \BasicLogger */ public function __construct(LoggerInterface $logger = null) { - $this->logger = $logger; + $this->logger = $logger; + $this->queries = array(); } /** @@ -124,8 +132,20 @@ class PropelLogger implements \BasicLogger */ public function debug($message) { + $this->queries[] = $message; + if (null !== $this->logger) { $this->logger->debug($message); } } + + /** + * Returns queries. + * + * @return array Queries + */ + public function getQueries() + { + return $this->queries; + } } diff --git a/Resources/views/Collector/propel.html.twig b/Resources/views/Collector/propel.html.twig index fa0e962..eb84aa2 100644 --- a/Resources/views/Collector/propel.html.twig +++ b/Resources/views/Collector/propel.html.twig @@ -17,13 +17,35 @@ {# the menu content #} - Propel - - + Propel + + {{ collector.querycount }} + {% endblock %} {% block panel %} {# the panel content #} + +

Queries

+ + + + + + + + {% if not collector.querycount %} + + {% else %} + {% for query in collector.queries %} + + + + {% endfor %} + {% endif %} + +
SQL queries
No queries.
{{ query }}
+ {% render 'PropelBundle:Panel:configuration' with { 'collector': collector } %} {% endblock %}