1: <?php
2:
3: /**
4: * Copyright 2016 LINE Corporation
5: *
6: * LINE Corporation licenses this file to you under the Apache License,
7: * version 2.0 (the "License"); you may not use this file except in compliance
8: * with the License. You may obtain a copy of the License at:
9: *
10: * https://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing, software
13: * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14: * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15: * License for the specific language governing permissions and limitations
16: * under the License.
17: */
18:
19: namespace LINE\LINEBot\MessageBuilder\TemplateBuilder;
20:
21: use LINE\LINEBot\MessageBuilder\TemplateBuilder;
22: use LINE\LINEBot\TemplateActionBuilder;
23:
24: /**
25: * A builder class for column of carousel template.
26: *
27: * @package LINE\LINEBot\MessageBuilder\TemplateBuilder
28: */
29: class CarouselColumnTemplateBuilder implements TemplateBuilder
30: {
31: /** @var string */
32: private $title;
33: /** @var string */
34: private $text;
35: /** @var string */
36: private $thumbnailImageUrl;
37: /** @var TemplateActionBuilder[] */
38: private $actionBuilders;
39:
40: /** @var array */
41: private $template;
42:
43: /**
44: * CarouselColumnTemplateBuilder constructor.
45: *
46: * @param string $title
47: * @param string $text
48: * @param string $thumbnailImageUrl
49: * @param TemplateActionBuilder[] $actionBuilders
50: */
51: public function __construct($title, $text, $thumbnailImageUrl, array $actionBuilders)
52: {
53: $this->title = $title;
54: $this->text = $text;
55: $this->thumbnailImageUrl = $thumbnailImageUrl;
56: $this->actionBuilders = $actionBuilders;
57: }
58:
59: /**
60: * Builds column of carousel template structure.
61: *
62: * @return array
63: */
64: public function buildTemplate()
65: {
66: if (!empty($this->template)) {
67: return $this->template;
68: }
69:
70: $actions = [];
71: foreach ($this->actionBuilders as $actionBuilder) {
72: $actions[] = $actionBuilder->buildTemplateAction();
73: }
74:
75: $this->template = [
76: 'thumbnailImageUrl' => $this->thumbnailImageUrl,
77: 'title' => $this->title,
78: 'text' => $this->text,
79: 'actions' => $actions,
80: ];
81:
82: return $this->template;
83: }
84: }
85: