Completed
Pull Request — master (#244)
by Łukasz
11:47
created

ContextAbstract::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
3
/**
4
 * (c) FSi sp. z o.o. <[email protected]>
5
 *
6
 * For the full copyright and license information, please view the LICENSE
7
 * file that was distributed with this source code.
8
 */
9
10
namespace FSi\Bundle\AdminBundle\Admin\Context;
11
12
use FSi\Bundle\AdminBundle\Admin\Context\Request\HandlerInterface;
13
use FSi\Bundle\AdminBundle\Admin\Element;
14
use FSi\Bundle\AdminBundle\Event\AdminEvent;
15
use Symfony\Component\HttpFoundation\Request;
16
17
abstract class ContextAbstract implements ContextInterface
18
{
19
    /**
20
     * @var HandlerInterface[]
21
     */
22
    private $requestHandlers;
23
24
    /**
25
     * @param HandlerInterface[]|array $requestHandlers
26
     */
27
    public function __construct(array $requestHandlers)
28
    {
29
        $this->requestHandlers = $requestHandlers;
30
    }
31
32
    /**
33
     * {@inheritdoc}
34
     */
35
    public function supports($route, Element $element)
36
    {
37
        if ($route !== $this->getSupportedRoute()) {
38
            return false;
39
        }
40
41
        return $this->supportsElement($element);
42
    }
43
44
    /**
45
     * {@inheritdoc}
46
     */
47
    public function handleRequest(Request $request)
48
    {
49
        $event = $this->createEvent($request);
50
51
        foreach ($this->requestHandlers as $handler) {
52
            $response = $handler->handleRequest($event, $request);
53
            if (isset($response)) {
54
                return $response;
55
            }
56
        }
57
    }
58
59
    /**
60
     * {@inheritdoc}
61
     */
62
    public function hasTemplateName()
63
    {
64
        return false;
65
    }
66
67
    /**
68
     * {@inheritdoc}
69
     */
70
    public function getTemplateName()
71
    {
72
        return null;
73
    }
74
75
    /**
76
     * @return string
77
     */
78
    abstract protected function getSupportedRoute();
79
80
    /**
81
     * @param Element $element
82
     * @return bool
83
     */
84
    abstract protected function supportsElement(Element $element);
85
86
    /**
87
     * @param Request $request
88
     * @return AdminEvent
89
     */
90
    abstract protected function createEvent(Request $request);
91
}
92