Passed
Push — master ( 829dd4...d4da04 )
by Thomas
02:16
created

CacheCollector::getWidgets()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 16
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 10
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 16
rs 9.9332
1
<?php
2
3
namespace LeKoala\DebugBar\Collector;
4
5
use LeKoala\DebugBar\DebugBar;
6
use SilverStripe\Control\Director;
7
use DebugBar\DataCollector\Renderable;
8
use LeKoala\DebugBar\Proxy\CacheProxy;
9
use DebugBar\DataCollector\AssetProvider;
10
use DebugBar\DataCollector\DataCollector;
11
12
/**
13
 * Collects data about the cache
14
 */
15
class CacheCollector extends DataCollector implements Renderable, AssetProvider
16
{
17
    public function getName()
18
    {
19
        return 'cache';
20
    }
21
22
    public function getAssets()
23
    {
24
        // This depends on ConfigCollector assets
25
        return [
26
            'base_path' => '/' . DebugBar::moduleResource('javascript')->getRelativePath(),
27
            'base_url' => Director::makeRelative(DebugBar::moduleResource('javascript')->getURL()),
28
            'css' => 'config/widget.css',
29
            'js' => 'config/widget.js'
30
        ];
31
    }
32
33
    public function collect()
34
    {
35
        $result = CacheProxy::getData();
36
37
38
        $keys = [];
39
        foreach ($result as $k => $v) {
40
            $val = $v['value'];
41
            if (!is_string($val)) {
42
                $val = json_encode($val);
43
            }
44
            if (strlen($val) > 150) {
45
                $val = substr($val, 0, 150) . "...";
46
            }
47
            if (!empty($v['ttl'])) {
48
                $val .= " - TTL: " . $v['ttl'];
49
            }
50
            $keys[$k] = $val;
51
        }
52
53
        return [
54
            'count' => count($result),
55
            'keys' => $keys
56
        ];
57
    }
58
59
    public function getWidgets()
60
    {
61
        $widgets = [
62
            'Cache' => [
63
                'icon' => 'puzzle-piece',
64
                'widget' => 'PhpDebugBar.Widgets.VariableListWidget',
65
                'map' => 'cache.keys',
66
                'default' => '{}'
67
            ]
68
        ];
69
        $widgets['Cache:badge'] = [
70
            'map' => 'cache.count',
71
            'default' => 0
72
        ];
73
74
        return $widgets;
75
    }
76
}
77