1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
PopupConfigurationValidator.php
См. документацию.
1<?php
2
3namespace Bitrix\UI\FeaturePromoter;
4
6{
7
8 public function __construct(private array $configuration)
9 {
10 }
11
12 public function isValidConfiguration(): bool
13 {
14 if (!is_array($this->configuration['header']) || !is_array($this->configuration['items']))
15 {
16 return false;
17 }
18
19 return $this->isValidHeaderConfiguration($this->configuration['header'])
20 && $this->isValidItemsConfiguration($this->configuration['items']);
21 }
22
23 private function isValidHeaderConfiguration(array $headerConfiguration): bool
24 {
25 if (isset($headerConfiguration['iconClass']) && !is_string($headerConfiguration['iconClass']))
26 {
27 return false;
28 }
29
30 return is_array($headerConfiguration['top'])
31 && $this->isValidHeaderTopConfiguration($headerConfiguration['top'])
32 && is_array($headerConfiguration['info'])
33 && $this->isValidHeaderInfoConfiguration($headerConfiguration['info']);
34 }
35
36 private function isValidHeaderTopConfiguration(array $headerTopConfiguration): bool
37 {
38 if (isset($headerTopConfiguration['subtitle']) && !is_string($headerTopConfiguration['subtitle']))
39 {
40 return false;
41 }
42
43 return is_string($headerTopConfiguration['title']);
44 }
45
46 private function isValidHeaderInfoConfiguration(array $headerInfoConfiguration): bool
47 {
48 if (
49 (isset($headerTopConfiguration['subtitle']) && !is_string($headerTopConfiguration['subtitle']))
50 || (isset($headerTopConfiguration['subtitleDescription'])
51 && !is_string($headerTopConfiguration['subtitleDescription']))
52 || (isset($headerTopConfiguration['moreLabel']) && !is_string($headerTopConfiguration['moreLabel']))
53 || (isset($headerTopConfiguration['moreUrl']) && !is_string($headerTopConfiguration['moreUrl']))
54 || (isset($headerTopConfiguration['roundContent'])
55 && (is_string($headerTopConfiguration['roundContent'])
56 || is_array($headerTopConfiguration['roundContent']))
57 && !$this->isValidRoundContentConfiguration($headerTopConfiguration['roundContent']))
58 )
59 {
60 return false;
61 }
62
63 return is_string($headerInfoConfiguration['title']);
64 }
65
66 private function isValidRoundContentConfiguration(array|string $roundContentConfiguration): bool
67 {
68 if (is_array($roundContentConfiguration))
69 {
70 return is_string($roundContentConfiguration['posterUrl'])
71 && is_array($roundContentConfiguration['videos'])
72 && $this->isValidVideosConfiguration($roundContentConfiguration['videos']);
73 }
74
75 return true;
76 }
77
78 private function isValidVideosConfiguration(array $videosConfiguration): bool
79 {
80 foreach ($videosConfiguration as $videoConfiguration)
81 {
82 if (!is_string($videoConfiguration['url']) && !is_string($videoConfiguration['type']))
83 {
84 return false;
85 }
86 }
87
88 return true;
89 }
90
91 private function isValidItemsConfiguration(array $itemsConfiguration): bool
92 {
93 foreach ($itemsConfiguration as $itemConfiguration)
94 {
95 if (!is_array($itemConfiguration) || !$this->isValidItemConfiguration($itemConfiguration))
96 {
97 return false;
98 }
99 }
100
101 return true;
102 }
103
104 private function isValidItemConfiguration(array $itemConfiguration): bool
105 {
106 if (
107 (isset($itemConfiguration['description']) && (!is_array($itemConfiguration['description'])
108 || !$this->isValidTextConfiguration($itemConfiguration['description'])))
109 || (isset($itemConfiguration['more']) && (!is_array($itemConfiguration['more'])
110 || !$this->isValidMoreItemConfiguration($itemConfiguration['more'])))
111 || (isset($itemConfiguration['icon']) && (!is_array($itemConfiguration['icon'])
112 || !$this->isValidItemIconConfiguration($itemConfiguration['icon'])))
113 || (isset($itemConfiguration['button']) && (!is_array($itemConfiguration['button'])
114 || !$this->isValidItemButtonConfiguration($itemConfiguration['button'])))
115 )
116 {
117 return false;
118 }
119
120 return is_array($itemConfiguration['title']) && $this->isValidTextConfiguration($itemConfiguration['title']);
121 }
122
123 private function isValidTextConfiguration(array $textConfiguration): bool
124 {
125 if (isset($textConfiguration['color']) && !is_string($textConfiguration['color']))
126 {
127 return false;
128 }
129
130 return is_string($textConfiguration['text']);
131 }
132
133 private function isValidMoreItemConfiguration(array $itemMoreConfiguration): bool
134 {
135 return is_array($itemMoreConfiguration['text'])
136 && $this->isValidTextConfiguration($itemMoreConfiguration['text']);
137 }
138
139 private function isValidItemIconConfiguration(array $itemIconConfiguration): bool
140 {
141 if (isset($itemIconConfiguration['color']) && !is_string($itemIconConfiguration['color']))
142 {
143 return false;
144 }
145
146 return is_string($itemIconConfiguration['name']);
147 }
148
149 private function isValidItemButtonConfiguration(array $itemButtonConfiguration): bool
150 {
151 if (
152 (isset($itemButtonConfiguration['description'])
153 && !is_array($itemButtonConfiguration['description'])
154 && !$this->isValidTextConfiguration($itemButtonConfiguration['description']))
155 || (isset($itemButtonConfiguration['backgroundColor'])
156 && !is_string($itemButtonConfiguration['backgroundColor']))
157 || (isset($itemButtonConfiguration['onclick']) && !is_string($itemButtonConfiguration['onclick']))
158 || (isset($itemButtonConfiguration['url']) && !is_string($itemButtonConfiguration['url']))
159 )
160 {
161 return false;
162 }
163
164 return is_string($itemButtonConfiguration['text']);
165 }
166}
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804