1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
converter.php
См. документацию.
1<?
2
4
6{
8 'meta-user',
9 'user',
10 'mail-contact',
11 'project',
12 'department',
13 'crm-company',
14 'crm-contact',
15 'crm-lead',
16 'crm-deal',
17 'crm-quote',
18 'crm-order',
19 'crm-product',
20 ];
21
22 public static function getCompatEntities()
23 {
24 static $compatEntities;
25
26 if ($compatEntities)
27 {
28 return $compatEntities;
29 }
30
31 $compatEntities = [
32 'user' => [
33 'prefix' => 'U',
34 'pattern' => '^(?<prefix>U)(?<itemId>\d+)$',
35 'reversePrefix' => 'U',
36 'reversePattern' => '^(?<itemId>\d+)$'
37 ],
38 'project' => [
39 'prefix' => 'SG',
40 'pattern' => '^(?<prefix>SG)(?<itemId>\d+)$',
41 'reversePrefix' => 'SG',
42 'reversePattern' => '^(?<itemId>\d+)$'
43 ],
44 'crm-company' => [
45 'prefix' => 'CRMCOMPANY',
46 'pattern' => '^(?<prefix>CRMCOMPANY)(?<itemId>.+)$',
47 'reversePrefix' => 'CRMCOMPANY',
48 'reversePattern' => '^(?<itemId>\d+)$'
49 ],
50 'crm-contact' => [
51 'prefix' => 'CRMCONTACT',
52 'pattern' => '^(?<prefix>CRMCONTACT)(?<itemId>.+)$',
53 'reversePrefix' => 'CRMCONTACT',
54 'reversePattern' => '^(?<itemId>\d+)$'
55 ],
56 'crm-lead' => [
57 'prefix' => 'CRMLEAD',
58 'pattern' => '^(?<prefix>CRMLEAD)(?<itemId>.+)$',
59 'reversePrefix' => 'CRMLEAD',
60 'reversePattern' => '^(?<itemId>\d+)$'
61 ],
62 'crm-deal' => [
63 'prefix' => 'CRMDEAL',
64 'pattern' => '^(?<prefix>CRMDEAL)(?<itemId>.+)$',
65 'reversePrefix' => 'CRMDEAL',
66 'reversePattern' => '^(?<itemId>\d+)$'
67 ],
68 'crm-quote' => [
69 'prefix' => 'CRMQUOTE',
70 'pattern' => '^(?<prefix>CRMQUOTE)(?<itemId>.+)$',
71 'reversePrefix' => 'CRMQUOTE',
72 'reversePattern' => '^(?<itemId>\d+)$'
73 ],
74 'crm-order' => [
75 'prefix' => 'CRMORDER',
76 'pattern' => '^(?<prefix>CRMORDER)(?<itemId>.+)$',
77 'reversePrefix' => 'CRMORDER',
78 'reversePattern' => '^(?<itemId>\d+)$'
79 ],
80 'crm-product' => [
81 'prefix' => 'CRMPRODUCT',
82 'pattern' => '^(?<prefix>CRMPRODUCT)(?<itemId>.+)$',
83 'reversePrefix' => 'CRMPRODUCT',
84 'reversePattern' => '^(?<itemId>\d+)$'
85 ],
86 'mail-contact' => [
87 'prefix' => 'MC',
88 'pattern' => '^(?<prefix>MC)(?<itemId>[0-9]+)$',
89 'reversePrefix' => 'MC',
90 'reversePattern' => '^(?<itemId>\d+)$'
91 ],
92 'department' => [
93 'prefix' => (function($itemId) {
94 return is_string($itemId) && $itemId[-1] === 'F' ? 'D' : 'DR';
95 }),
96 'itemId' => function($prefix, $itemId) {
97 return $prefix === 'D' ? $itemId.':F' : $itemId;
98 },
99 'pattern' => '^(?<prefix>DR?)(?<itemId>\d+)$',
100 'reversePrefix' => (function($suffix) {
101 return $suffix === ':F' ? 'D' : 'DR';
102 }),
103 'reversePattern' => '^(?<itemId>\d+)(?<suffix>.*)$'
104 ],
105 'structure-node' => [
106 'prefix' => (function($itemId) {
107 return is_string($itemId) && $itemId[-1] === 'F' ? 'SNT' : 'SNTR';
108 }),
109 'itemId' => function($prefix, $itemId) {
110 return $prefix === 'SNT' ? $itemId . ':F' : $itemId;
111 },
112 'pattern' => '^(?<prefix>SNTR?)(?<itemId>\d+)$',
113 'reversePrefix' => (function($suffix) {
114 return $suffix === ':F' ? 'SNT' : 'SNTR';
115 }),
116 'reversePattern' => '^(?<itemId>\d+)(?<suffix>.*)$',
117 ],
118 ];
119
120 return $compatEntities;
121 }
122
123 public static function convertFromFinderCodes(array $codesList = [])
124 {
125 $result = [];
126 foreach ($codesList as $code)
127 {
128 if ($code === 'UA')
129 {
130 $result[] = ['meta-user', 'all-users'];
131 continue;
132 }
133
134 foreach (self::getCompatEntities() as $entityId => $entity)
135 {
136 if(preg_match('/'.$entity['pattern'].'/i', $code, $matches))
137 {
138 $closure = $entity['itemId'] ?? null;
139
140 $entityType = is_callable($closure)
141 ? $closure($matches['prefix'], $matches['itemId'])
142 : $matches['itemId'];
143
144 $result[] = [$entityId, $entityType];
145 }
146 }
147 }
148
149 return $result;
150 }
151
152 public static function convertToFinderCodes(array $entitiesList = [])
153 {
154 $result = [];
155
156 foreach ($entitiesList as [ $entityId, $id ])
157 {
158 if (
159 $entityId === 'meta-user'
160 && $id === 'all-users'
161 )
162 {
163 $result[] = 'UA';
164 continue;
165 }
166
167 foreach (self::getCompatEntities() as $sampleEntityId => $sampleEntity)
168 {
169 if ($entityId !== $sampleEntityId)
170 {
171 continue;
172 }
173
174 if(preg_match('/'.$sampleEntity['reversePattern'].'/i', $id, $matches))
175 {
176 $result[] = (is_callable($sampleEntity['reversePrefix']) ? $sampleEntity['reversePrefix']($matches['suffix']) : $sampleEntity['reversePrefix']).$matches['itemId'];
177 }
178 }
179 }
180
181 return $result;
182 }
183
184 public static function sortEntities(array $entities = [])
185 {
186 usort($entities, function($a, $b) {
187 $aKey = array_search($a[0], self::$sampleSortPriority, true);
188 $bKey = array_search($b[0], self::$sampleSortPriority, true);
189
190 if($aKey < $bKey)
191 {
192 return -1;
193 }
194
195 if ($aKey > $bKey)
196 {
197 return 1;
198 }
199
200 return 0;
201 });
202
203 return $entities;
204 }
205}
static sortEntities(array $entities=[])
Определения converter.php:184
static convertFromFinderCodes(array $codesList=[])
Определения converter.php:123
static convertToFinderCodes(array $entitiesList=[])
Определения converter.php:152
static getCompatEntities()
Определения converter.php:22
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
$entity
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
Определения options.php:195
$entityId
Определения payment.php:4
else $a
Определения template.php:137
$matches
Определения index.php:22