Completed
Branch develop (a0a623)
by Romain
02:33
created

ListeElement::setButtons()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 7
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 4
nc 1
nop 1
1
<?php
2
namespace Kerox\Messenger\Message\Attachment\Template\Element;
3
4
use Kerox\Messenger\Message\Attachment\Template\Buttons\WebUrl;
5
6
class ListeElement extends AbstractElement
7
{
8
9
    /**
10
     * @var \Kerox\Messenger\Message\Attachment\Template\Buttons\WebUrl
11
     */
12
    protected $defaultAction;
13
14
    /**
15
     * @var \Kerox\Messenger\Message\Attachment\Template\Buttons\AbstractButtons[]
16
     */
17
    protected $buttons = [];
18
19
    /**
20
     * ListeElement constructor.
21
     *
22
     * @param string $title
23
     */
24
    public function __construct(string $title)
25
    {
26
        parent::__construct($title);
27
    }
28
29
    /**
30
     * @param \Kerox\Messenger\Message\Attachment\Template\Buttons\WebUrl $defaultAction
31
     * @return \Kerox\Messenger\Message\Attachment\Template\Element\ListeElement
32
     */
33
    public function setDefaultAction(WebUrl $defaultAction): ListeElement
34
    {
35
        $this->defaultAction = $defaultAction;
36
37
        return $this;
38
    }
39
40
    /**
41
     * @param \Kerox\Messenger\Message\Attachment\Template\Buttons\AbstractButtons[] $buttons
42
     * @return ListeElement
43
     */
44
    public function setButtons(array $buttons): ListeElement
45
    {
46
        $this->isValidArray($buttons, 1);
47
        $this->buttons = $buttons;
48
49
        return $this;
50
    }
51
52
    /**
53
     * @return array
54
     */
55
    public function jsonSerialize(): array
56
    {
57
        $json = parent::jsonSerialize();
58
        $json += [
59
            'subtitle' => $this->subtitle,
60
            'image_url' => $this->imageUrl,
61
            'default_action' => $this->defaultAction,
62
            'buttons' => $this->buttons,
63
        ];
64
65
        return array_filter($json);
66
    }
67
}
68