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;
20:
21: use LINE\LINEBot\Constant\MessageType;
22: use LINE\LINEBot\ImagemapActionBuilder;
23: use LINE\LINEBot\MessageBuilder;
24: use LINE\LINEBot\MessageBuilder\Imagemap\BaseSizeBuilder;
25:
26: /**
27: * A builder class for imagemap message.
28: *
29: * @package LINE\LINEBot\MessageBuilder
30: */
31: class ImagemapMessageBuilder implements MessageBuilder
32: {
33: /** @var string */
34: private $baseUrl;
35: /** @var string */
36: private $altText;
37: /** @var BaseSizeBuilder */
38: private $baseSizeBuilder;
39: /** @var ImagemapActionBuilder[] */
40: private $imagemapActionBuilders;
41:
42: /** @var array */
43: private $message = [];
44:
45: /**
46: * ImagemapMessageBuilder constructor.
47: *
48: * @param string $baseUrl
49: * @param string $altText
50: * @param BaseSizeBuilder $baseSizeBuilder
51: * @param ImagemapActionBuilder[] $imagemapActionBuilders
52: */
53: public function __construct($baseUrl, $altText, $baseSizeBuilder, array $imagemapActionBuilders)
54: {
55: $this->baseUrl = $baseUrl;
56: $this->altText = $altText;
57: $this->baseSizeBuilder = $baseSizeBuilder;
58: $this->imagemapActionBuilders = $imagemapActionBuilders;
59: }
60:
61: /**
62: * Builds imagemap message strucutre.
63: *
64: * @return array
65: */
66: public function buildMessage()
67: {
68: if (!empty($this->message)) {
69: return $this->message;
70: }
71:
72: $actions = [];
73: foreach ($this->imagemapActionBuilders as $builder) {
74: $actions[] = $builder->buildImagemapAction();
75: }
76:
77: $this->message[] = [
78: 'type' => MessageType::IMAGEMAP,
79: 'baseUrl' => $this->baseUrl,
80: 'altText' => $this->altText,
81: 'baseSize' => $this->baseSizeBuilder->build(),
82: 'actions' => $actions,
83: ];
84:
85: return $this->message;
86: }
87: }
88: