Completed
Pull Request — master (#45)
by Cees-Jan
48:17 queued 38:20
created

ExtensionsListener   C

Complexity

Total Complexity 5

Size/Duplication

Total Lines 64
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 19

Test Coverage

Coverage 100%

Importance

Changes 4
Bugs 0 Features 1
Metric Value
wmc 5
c 4
b 0
f 1
lcom 0
cbo 19
dl 0
loc 64
ccs 22
cts 22
cp 1
rs 6.875

2 Methods

Rating   Name   Duplication   Size   Complexity  
A implementedEvents() 0 6 1
B construct() 0 41 4
1
<?php
2
3
/**
4
 * This file is part of TwigView.
5
 *
6
 ** (c) 2014 Cees-Jan Kiewiet
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
namespace WyriHaximus\TwigView\Event;
12
13
use Aptoma\Twig\Extension\MarkdownEngineInterface;
14
use Aptoma\Twig\Extension\MarkdownExtension;
15
use Aptoma\Twig\TokenParser\MarkdownTokenParser;
16
use Ajgl\Twig\Extension\BreakpointExtension;
17
use Asm89\Twig\CacheExtension\CacheStrategy\LifetimeCacheStrategy;
18
use Asm89\Twig\CacheExtension\Extension as CacheExtension;
19
use Cake\Core\Configure;
20
use Cake\Event\EventListenerInterface;
21
use WyriHaximus\TwigView\Lib\Cache;
22
use WyriHaximus\TwigView\Lib\Twig\Extension;
23
use WyriHaximus\TwigView\Lib\Twig\TokenParser;
24
25
/**
26
 * Class ExtensionsListener
27
 * @package WyriHaximus\TwigView\Event
28
 */
29
class ExtensionsListener implements EventListenerInterface
30
{
31
    /**
32
     * Return implemented events.
33 1
     *
34
     * @return array
35
     */
36 1
    public function implementedEvents()
37 1
    {
38
        return [
39
            ConstructEvent::EVENT => 'construct',
40
        ];
41
    }
42
43
    /**
44
     * Event handler.
45
     *
46
     * @param ConstructEvent $event Event.
47
     *
48 3
     * @return void
49
     */
50
    // @codingStandardsIgnoreStart
51
    public function construct(ConstructEvent $event)
52
    {
53 3
        // @codingStandardsIgnoreEnd
54 3
        // @codingStandardsIgnoreStart
55
        // Twig core extensions
56
        $event->getTwig()->addExtension(new \Twig_Extension_StringLoader);
57 3
        $event->getTwig()->addExtension(new \Twig_Extension_Debug);
58 3
59 3
        // CakePHP bridging extensions
60 3
        $event->getTwig()->addExtension(new Extension\I18n);
61 3
        $event->getTwig()->addExtension(new Extension\Time);
62 3
        $event->getTwig()->addExtension(new Extension\Basic);
63 3
        $event->getTwig()->addExtension(new Extension\Number);
64 3
        $event->getTwig()->addExtension(new Extension\Utils);
65
        $event->getTwig()->addExtension(new Extension\Arrays);
66
        $event->getTwig()->addExtension(new Extension\Strings);
67 3
        $event->getTwig()->addExtension(new Extension\Inflector);
68 3
69 3
        // Markdown extension
70 3
        if (
71
            Configure::check('WyriHaximus.TwigView.markdown.engine') &&
72
            Configure::read('WyriHaximus.TwigView.markdown.engine') instanceof MarkdownEngineInterface
73 3
        ) {
74 2
            $engine = Configure::read('WyriHaximus.TwigView.markdown.engine');
75 2
            $event->getTwig()->addExtension(new MarkdownExtension($engine));
76
            $event->getTwig()->addTokenParser(new MarkdownTokenParser($engine));
77
        }
78 3
79
        // Third party cache extension
80
        $cacheProvider = new Cache();
81
        $cacheStrategy = new LifetimeCacheStrategy($cacheProvider);
82
        $cacheExtension = new CacheExtension($cacheStrategy);
83
        $event->getTwig()->addExtension($cacheExtension);
84
85
        // Breakpoint extension
86
        if (Configure::read('debug') === true) {
87
            $event->getTwig()->addExtension(new BreakpointExtension());
88
        }
89
90
        // @codingStandardsIgnoreEnd
91
    }
92
}
93