1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
converter.php
См. документацию.
1
<?
2
3
namespace
Bitrix\Main\UI\EntitySelector
;
4
5
class
Converter
6
{
7
static
$sampleSortPriority
= [
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
}
Bitrix\Main\UI\EntitySelector\Converter
Определения
converter.php:6
Bitrix\Main\UI\EntitySelector\Converter\sortEntities
static sortEntities(array $entities=[])
Определения
converter.php:184
Bitrix\Main\UI\EntitySelector\Converter\convertFromFinderCodes
static convertFromFinderCodes(array $codesList=[])
Определения
converter.php:123
Bitrix\Main\UI\EntitySelector\Converter\convertToFinderCodes
static convertToFinderCodes(array $entitiesList=[])
Определения
converter.php:152
Bitrix\Main\UI\EntitySelector\Converter\getCompatEntities
static getCompatEntities()
Определения
converter.php:22
Bitrix\Main\UI\EntitySelector\Converter\$sampleSortPriority
static $sampleSortPriority
Определения
converter.php:7
array
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения
file_new.php:804
$result
$result
Определения
get_property_values.php:14
$entity
$entity
Определения
group_bizproc_workflow_delete.php:17
$code
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
Определения
options.php:195
Bitrix\Main\UI\EntitySelector
Определения
converter.php:3
$entityId
$entityId
Определения
payment.php:4
$a
else $a
Определения
template.php:137
$matches
$matches
Определения
index.php:22
bitrix
modules
main
lib
ui
entityselector
converter.php
Создано системой
1.14.0