AbstractCommand::onTemplateCreated()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 20

Importance

Changes 0
Metric Value
dl 0
loc 15
ccs 0
cts 12
cp 0
rs 9.2
c 0
b 0
f 0
cc 4
eloc 9
nc 4
nop 1
crap 20
1
<?php
2
3
namespace Synapse\Cmf\Framework\Theme\Template\Domain\Command;
4
5
use Majora\Framework\Domain\Action\ActionInterface;
6
use Majora\Framework\Domain\Action\Dal\DalActionTrait;
7
use Synapse\Cmf\Framework\Theme\Template\Entity\Template;
8
use Synapse\Cmf\Framework\Theme\Template\Event\Event as TemplateEvent;
9
use Synapse\Cmf\Framework\Theme\Template\Model\TemplateInterface;
10
use Synapse\Cmf\Framework\Theme\Zone\Domain\DomainInterface as ZoneDomain;
11
use Synapse\Cmf\Framework\Theme\Zone\Entity\ZoneCollection;
12
13
/**
14
 * Base class for Template commands.
15
 */
16
abstract class AbstractCommand implements ActionInterface
17
{
18
    use DalActionTrait;
19
20
    /**
21
     * @var TemplateInterface
22
     */
23
    protected $template;
24
25
    /**
26
     * @var ZoneCollection
27
     */
28
    protected $zones;
29
30
    /**
31
     * @var ZoneDomain
32
     */
33
    protected $zoneDomain;
34
35
    /**
36
     * Template creation event handler.
37
     *
38
     * @param TemplateEvent $event
39
     */
40
    public function onTemplateCreated(TemplateEvent $event)
41
    {
42
        $template = $event->getTemplate();
43
        $zones = $template->getZones();
44
        foreach ($template->getTemplateType()->getZoneTypes() as $zoneType) {
45
            if ($zones->search(array('zoneType' => $zoneType))->isEmpty()) {
46
                if (null === $this->zoneDomain) {
47
                    throw new \DomainException('No zoneDomain was set, you are unable to update your configuration.');
48
                }
49
50
                $zones->add($this->zoneDomain->create($zoneType));
51
            }
52
        }
53
        $template->setZones($zones);
54
    }
55
56
    /**
57
     * Return related Template if defined.
58
     *
59
     * @return TemplateInterface $template
60
     */
61
    public function getTemplate()
62
    {
63
        return $this->template;
64
    }
65
66
    /**
67
     * Define Command zones.
68
     *
69
     * @param ZoneCollection $zones
70
     *
71
     * @return self
72
     */
73 2
    public function setZones(ZoneCollection $zones)
74
    {
75 2
        $this->zones = $zones;
76
77 2
        return $this;
78
    }
79
80
    /**
81
     * Returns Command zones.
82
     *
83
     * @return ZoneCollection
84
     */
85
    public function getZones()
86
    {
87
        return $this->zones;
88
    }
89
90
    /**
91
     * Set zoneDomain.
92
     *
93
     * @param ZoneDomain $zoneDomain
94
     */
95 2
    public function setZoneDomain(ZoneDomain $zoneDomain)
96
    {
97 2
        $this->zoneDomain = $zoneDomain;
98 2
    }
99
}
100