diff --git a/README.md b/README.md index a3b24ce..52fa305 100644 --- a/README.md +++ b/README.md @@ -233,6 +233,7 @@ LeKoala\DebugBar\DebugBar: | `db_collector` | bool | Show the db tab. Defaults to true | | `db_save_csv` | bool | Save queries to csv in the temp folder. Use ?downloadqueries to download current. Defaults to false | | `config_collector` | bool | Show the config tab. Defaults to true | +| `cache_collector` | bool | Show the cache tab. Defaults to true | | `partial_cache_collector` | bool | Show the partial cache tab. Defaults to true | | `email_collector` | bool | Show the email tab. Defaults to true | | `header_collector` | bool | Show the headers tab. Defaults to true | diff --git a/_config/debugbar.yml b/_config/debugbar.yml index 7915c4a..f510d10 100644 --- a/_config/debugbar.yml +++ b/_config/debugbar.yml @@ -38,6 +38,7 @@ LeKoala\DebugBar\DebugBar: config_track_empty: false db_collector: true db_save_csv: false + cache_collector: true partial_cache_collector: true email_collector: true header_collector: true @@ -48,6 +49,8 @@ SilverStripe\Control\Director: rules: '__debugbar': 'LeKoala\DebugBar\DebugBarController' SilverStripe\Core\Injector\Injector: + Symfony\Component\Cache\Psr16Cache: + class: LeKoala\DebugBar\Proxy\CacheProxy SilverStripe\View\SSViewer: class: LeKoala\DebugBar\Proxy\SSViewerProxy DebugBarMiddleware: diff --git a/code/Collector/CacheCollector.php b/code/Collector/CacheCollector.php new file mode 100644 index 0000000..37b8d1d --- /dev/null +++ b/code/Collector/CacheCollector.php @@ -0,0 +1,76 @@ + '/' . DebugBar::moduleResource('javascript')->getRelativePath(), + 'base_url' => Director::makeRelative(DebugBar::moduleResource('javascript')->getURL()), + 'css' => 'config/widget.css', + 'js' => 'config/widget.js' + ]; + } + + public function collect() + { + $result = CacheProxy::getData(); + + + $keys = []; + foreach ($result as $k => $v) { + $val = $v['value']; + if (!is_string($val)) { + $val = json_encode($val); + } + if (strlen($val) > 150) { + $val = substr($val, 0, 150) . "..."; + } + if (!empty($v['ttl'])) { + $val .= " - TTL: " . $v['ttl']; + } + $keys[$k] = $val; + } + + return [ + 'count' => count($result), + 'keys' => $keys + ]; + } + + public function getWidgets() + { + $widgets = [ + 'Cache' => [ + 'icon' => 'puzzle-piece', + 'widget' => 'PhpDebugBar.Widgets.VariableListWidget', + 'map' => 'cache.keys', + 'default' => '{}' + ] + ]; + $widgets['Cache:badge'] = [ + 'map' => 'cache.count', + 'default' => 0 + ]; + + return $widgets; + } +} diff --git a/code/Collector/DatabaseCollector.php b/code/Collector/DatabaseCollector.php index 9d08475..4ac0243 100644 --- a/code/Collector/DatabaseCollector.php +++ b/code/Collector/DatabaseCollector.php @@ -128,7 +128,6 @@ protected function collectData(TimeDataCollector $timeCollector = null) // Save as CSV $db_save_csv = DebugBar::config()->get('db_save_csv'); - $db_save_csv = true; if ($db_save_csv && !empty($queries)) { $filename = date('Ymd_His') . '_' . count($queries) . '_' . uniqid() . '.csv'; $isOutput = false; diff --git a/code/Collector/HeaderCollector.php b/code/Collector/HeaderCollector.php index d03aa4e..e85ca98 100644 --- a/code/Collector/HeaderCollector.php +++ b/code/Collector/HeaderCollector.php @@ -47,7 +47,6 @@ public function getWidgets() */ public function collect() { - $result = $this->controller->getResponse()->getHeaders(); foreach ($result as $key => &$value) { diff --git a/code/DebugBar.php b/code/DebugBar.php index d5b6322..884d97e 100644 --- a/code/DebugBar.php +++ b/code/DebugBar.php @@ -32,8 +32,8 @@ use SilverStripe\Core\Manifest\ModuleLoader; use DebugBar\DataCollector\MessagesCollector; use LeKoala\DebugBar\Bridge\MonologCollector; -use LeKoala\DebugBar\Bridge\SymfonyMailer\MailerEventListener; use Symfony\Component\Mailer\MailerInterface; +use LeKoala\DebugBar\Collector\CacheCollector; use SilverStripe\Core\Manifest\ModuleResource; use LeKoala\DebugBar\Collector\ConfigCollector; use LeKoala\DebugBar\Proxy\ConfigManifestProxy; @@ -46,6 +46,7 @@ use LeKoala\DebugBar\Collector\SilverStripeCollector; use SilverStripe\Config\Collections\DeltaConfigCollection; use SilverStripe\Config\Collections\CachedConfigCollection; +use LeKoala\DebugBar\Bridge\SymfonyMailer\MailerEventListener; use LeKoala\DebugBar\Bridge\SymfonyMailer\SymfonyMailerCollector; use LeKoala\DebugBar\Bridge\SymfonyMailer\SymfonyMailerLogCollector; @@ -191,6 +192,11 @@ public static function initDebugBar() $debugbar->addCollector(new ConfigCollector); } + // Cache + if (self::config()->cache_collector) { + $debugbar->addCollector(new CacheCollector); + } + // Partial cache if (self::config()->partial_cache_collector) { $debugbar->addCollector(new PartialCacheCollector); diff --git a/code/Proxy/CacheProxy.php b/code/Proxy/CacheProxy.php new file mode 100644 index 0000000..78dcd23 --- /dev/null +++ b/code/Proxy/CacheProxy.php @@ -0,0 +1,24 @@ + $value, + "ttl" => $ttl + ]; + return parent::set($key, $value, $ttl); + } + + public static function getData(): array + { + return self::$data; + } +}