1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
prop_userid.php
См. документацию.
1<?php
2
5
7
9{
10 static array $cache = [];
11 public const USER_TYPE = 'UserID';
12
13 public static function GetUserTypeDescription()
14 {
15 return [
16 "PROPERTY_TYPE" => PropertyTable::TYPE_NUMBER,
17 "USER_TYPE" => self::USER_TYPE,
18 "DESCRIPTION" => GetMessage("IBLOCK_PROP_USERID_DESC"),
19 "GetAdminListViewHTML" => [__CLASS__, "getAdminListViewHTMLExtended"],
20 "GetPropertyFieldHtml" => [__CLASS__, "GetPropertyFieldHtml"],
21 "ConvertToDB" => [__CLASS__, "ConvertToDB"],
22 "ConvertFromDB" => [__CLASS__, "ConvertFromDB"],
23 "GetSettingsHTML" => [__CLASS__, "GetSettingsHTML"],
24 "GetPublicViewHTML" => [__CLASS__, "getPublicViewHTML"],
25 "AddFilterFields" => [__CLASS__,'AddFilterFields'],
26 "GetAdminFilterHTML" => [__CLASS__, "GetAdminFilterHTML"],
27 "GetUIFilterProperty" => [__CLASS__, 'GetUIFilterProperty'],
28 "GetUIEntityEditorProperty" => [__CLASS__, 'GetUIEntityEditorProperty'],
29 "GetUIEntityEditorPropertyEditHtml" => [__CLASS__, 'GetUIEntityEditorPropertyEditHtml'],
30 "GetUIEntityEditorPropertyViewHtml" => [__CLASS__, 'GetUIEntityEditorPropertyViewHtml'],
31 ];
32 }
33
34 public static function GetAdminListViewHTML($arProperty, $value, $strHTMLControlName)
35 {
36 static $cache = array();
37 $value = intval($value["VALUE"]);
38 if(!array_key_exists($value, $cache))
39 {
40 $rsUsers = CUser::GetList('', '', array("ID" => $value));
41 $cache[$value] = $rsUsers->Fetch();
42 }
43 $arUser = $cache[$value];
44 if($arUser)
45 {
46 return "[<a title='".GetMessage("MAIN_EDIT_USER_PROFILE")."' href='user_edit.php?ID=".$arUser["ID"]."&lang=".LANGUAGE_ID."'>".$arUser["ID"]."</a>]&nbsp;(".htmlspecialcharsbx($arUser["LOGIN"]).") ".htmlspecialcharsbx($arUser["NAME"])." ".htmlspecialcharsbx($arUser["LAST_NAME"]);
47 }
48 else
49 return "&nbsp;";
50 }
51
59 public static function getAdminListViewHTMLExtended(array $property, array $value, $control): string
60 {
61 $result = '';
62 if ($value['VALUE'])
63 {
64 $isPublicMode = (defined("PUBLIC_MODE") && (int)PUBLIC_MODE === 1);
65
66 if ($isPublicMode)
67 {
68 $result .= self::getPublicViewHTML($property, $value, $control);
69 }
70 else
71 {
72 $result .= self::GetAdminListViewHTML($property, $value, $control);
73 }
74 }
75
76 return $result;
77 }
78
79 //PARAMETERS:
80 //$arProperty - b_iblock_property.*
81 //$value - array("VALUE","DESCRIPTION") -- here comes HTML form value
82 //strHTMLControlName - array("VALUE","DESCRIPTION")
83 //return:
84 //safe html
85
86 public static function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
87 {
88 global $USER;
89 $default_value = intval($value["VALUE"]);
90 $res = "";
91 if ($default_value == $USER->GetID())
92 {
93 $select = "CU";
94 $res = "[<a title='".GetMessage("MAIN_EDIT_USER_PROFILE")."' href='/bitrix/admin/user_edit.php?ID=".$USER->GetID()."&lang=".LANG."'>".$USER->GetID()."</a>] (".htmlspecialcharsbx($USER->GetLogin()).") ".htmlspecialcharsbx($USER->GetFirstName())." ".htmlspecialcharsbx($USER->GetLastName());
95 }
96 elseif ($default_value > 0)
97 {
98 $select = "SU";
99 $rsUsers = CUser::GetList('', '', array("ID" => $default_value));
100 if ($arUser = $rsUsers->Fetch())
101 $res = "[<a title='".GetMessage("MAIN_EDIT_USER_PROFILE")."' href='/bitrix/admin/user_edit.php?ID=".$arUser["ID"]."&lang=".LANG."'>".$arUser["ID"]."</a>] (".htmlspecialcharsbx($arUser["LOGIN"]).") ".htmlspecialcharsbx($arUser["NAME"])." ".htmlspecialcharsbx($arUser["LAST_NAME"]);
102 else
103 $res = "&nbsp;".GetMessage("MAIN_NOT_FOUND");
104 }
105 else
106 {
107 $select = "none";
108 $default_value = "";
109 }
110 $name_x = preg_replace("/([^a-z0-9])/is", "x", $strHTMLControlName["VALUE"]);
111 if (trim($strHTMLControlName["FORM_NAME"]) == '')
112 $strHTMLControlName["FORM_NAME"] = "form_element";
113
114 $selfFolderUrl = (defined("SELF_FOLDER_URL") ? SELF_FOLDER_URL : "/bitrix/admin/");
115
116 ob_start();
117 ?><select id="SELECT<?=htmlspecialcharsbx($strHTMLControlName["VALUE"])?>" name="SELECT<?=htmlspecialcharsbx($strHTMLControlName["VALUE"])?>" onchange="if(this.value == 'none')
118 {
119 var v=document.getElementById('<?=htmlspecialcharsbx($strHTMLControlName["VALUE"])?>');
120 v.value = '';
121 v.readOnly = true;
122 document.getElementById('FindUser<?=$name_x?>').disabled = true;
123 }
124 else
125 {
126 var v=document.getElementById('<?=htmlspecialcharsbx($strHTMLControlName["VALUE"])?>');
127 v.value = this.value == 'CU'?'<?=$USER->GetID()?>':'';
128 v.readOnly = false;
129 document.getElementById('FindUser<?=$name_x?>').disabled = false;
130 }">
131 <option value="none"<?if($select=="none")echo " selected"?>><?=GetMessage("IBLOCK_PROP_USERID_NONE")?></option>
132 <option value="CU"<?if($select=="CU")echo " selected"?>><?=GetMessage("IBLOCK_PROP_USERID_CURR")?></option>
133 <option value="SU"<?if($select=="SU")echo " selected"?>><?=GetMessage("IBLOCK_PROP_USERID_OTHR")?></option>
134 </select>&nbsp;
135 <?echo FindUserIDNew(
136 htmlspecialcharsbx($strHTMLControlName["VALUE"]),
137 $value["VALUE"],
138 $res,
139 htmlspecialcharsEx($strHTMLControlName["FORM_NAME"]),
140 $select,
141 "3",
142 "",
143 "...",
144 "typeinput",
145 "tablebodybutton",
146 $selfFolderUrl."user_search.php"
147 );
148 $return = ob_get_contents();
149 ob_end_clean();
150 return $return;
151 }
152
153 //PARAMETERS:
154 //$arProperty - b_iblock_property.*
155 //$value - array("VALUE",["DESCRIPTION"]) -- here comes HTML form value
156 //return:
157 //array of error messages
158 //PARAMETERS:
159 //$arProperty - b_iblock_property.*
160 //$value - array("VALUE",["DESCRIPTION"]) -- here comes HTML form value
161 //return:
162 //DB form of the value
163 public static function ConvertToDB($arProperty, $value)
164 {
165 $value["VALUE"] = intval($value["VALUE"]);
166 if($value["VALUE"] <= 0)
167 $value["VALUE"] = "";
168 return $value;
169 }
170
171 public static function ConvertFromDB($arProperty, $value)
172 {
173 $value["VALUE"] = intval($value["VALUE"]);
174 if($value["VALUE"] <= 0)
175 $value["VALUE"] = "";
176 return $value;
177 }
178
179 public static function GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields)
180 {
181 $arPropertyFields = array(
182 "HIDE" => array("WITH_DESCRIPTION"),
183 );
184 return '';
185 }
186
187 public static function AddFilterFields($arProperty, $control, &$arFilter, &$filtered)
188 {
189 $filtered = false;
190 $filterValue = self::getFilterValue($control);
191
192 if ($filterValue !== null)
193 {
194 $arFilter["=PROPERTY_".$arProperty["ID"]] = $filterValue;
195 $filtered = true;
196 }
197 }
198
199 public static function GetAdminFilterHTML($property, $control)
200 {
201 $controlName = $control["VALUE"];
202
203 $value = (string)self::getFilterValue($control);
204 return '<input type="text" name="'.$controlName.'" value="'.htmlspecialcharsbx($value).'" size="30">';
205 }
206
213 public static function GetUIFilterProperty($property, $strHTMLControlName, &$fields)
214 {
215 $fields["type"] = "custom_entity";
216 $fields["filterable"] = "";
217 $fields["selector"] = array("type" => "user");
218 $fields["operators"] = array("default" => "=");
219 }
220
221 private static function getFilterValue($control)
222 {
223 $filterValue = null;
224
225 $controlName = $control["VALUE"];
226
227 if (isset($GLOBALS[$controlName]) && !is_array($GLOBALS[$controlName]))
228 {
229 if (is_int($GLOBALS[$controlName]))
230 {
231 $filterValue = $GLOBALS[$controlName];
232 }
233 elseif (is_string($GLOBALS[$controlName]))
234 {
235 $rawValue = trim($GLOBALS[$controlName]);
236 if ($rawValue !== '')
237 $filterValue = (int)$rawValue;
238 }
239 }
240
241 return $filterValue;
242 }
243
250 public static function GetUIEntityEditorProperty($property, $value): array
251 {
252 return [
253 'type' => 'custom',
254 ];
255 }
256
262 public static function GetUIEntityEditorPropertyEditHtml(array $params = []): string
263 {
264 \Bitrix\Main\UI\Extension::load(['ui.entity-selector', 'ui.buttons', 'ui.forms']);
265 $fieldName = $params['FIELD_NAME'];
266
267 $containerId = $fieldName . '_container';
268 $inputsContainerId = $fieldName . '_inputs_container';
269
270 $isMultiple = $params['SETTINGS']['MULTIPLE'] === 'Y' ? 'true' : 'false';
271
272 if (!is_array($params['VALUE']))
273 {
274 if (empty($params['VALUE']))
275 {
276 $params['VALUE'] = [];
277 }
278 else
279 {
280 $params['VALUE'] = [$params['VALUE']];
281 }
282 }
283
284 $preselectedItems = [];
285 foreach ($params['VALUE'] as $value)
286 {
287 $preselectedItems[] = ['user', $value];
288 }
289 $dialogItems = \Bitrix\UI\EntitySelector\Dialog::getPreselectedItems($preselectedItems)->toArray();
290
291 foreach ($dialogItems as $index => $item)
292 {
294 if (isset($item['hidden'], $item['id']))
295 {
296 $userId = (int)($item['id']);
297 $user = self::getUserArray($userId);
298 unset(
299 $dialogItems[$index]['searchable'],
300 $dialogItems[$index]['saveable'],
301 $dialogItems[$index]['hidden'],
302 $dialogItems[$index]['deselectable'],
303 $dialogItems[$index]['avatar'],
304 $dialogItems[$index]['link']
305 );
306 if ($user)
307 {
308 $dialogItems[$index]['title'] = $user['NAME'] . ' ' . $user['LAST_NAME'];
309 }
310 }
311 }
312 $selectedItems = Json::encode($dialogItems);
313
314 return <<<HTML
315 <div id="{$containerId}" name="{$containerId}"></div>
316 <div id="{$inputsContainerId}" name="{$inputsContainerId}"></div>
317 <script>
318 (function() {
319 var selector = new BX.UI.EntitySelector.TagSelector({
320 id: '{$containerId}',
321 multiple: {$isMultiple},
322
323 dialogOptions: {
324 height: 300,
325 id: '{$containerId}',
326 multiple: {$isMultiple},
327 selectedItems: {$selectedItems},
328
329 events: {
330 'Item:onSelect': setSelectedInputs.bind(this, 'Item:onSelect'),
331 'Item:onDeselect': setSelectedInputs.bind(this, 'Item:onDeselect'),
332 },
333
334 entities: [
335 {
336 id: 'user',
337 options: {
338 'inviteEmployeeLink': false,
339 },
340 },
341 ],
342 },
343 })
344
345 function setSelectedInputs(eventName, event)
346 {
347 var dialog = event.getData().item.getDialog();
348 if (!dialog.isMultiple())
349 {
350 dialog.hide();
351 }
352 var selectedItems = dialog.getSelectedItems();
353 if (Array.isArray(selectedItems))
354 {
355 var htmlInputs = '';
356 selectedItems.forEach(function(item)
357 {
358 htmlInputs +=
359 '<input type="hidden" name="{$fieldName}[]" value="' + item['id'] + '" />'
360 ;
361 });
362 if (htmlInputs === '')
363 {
364 htmlInputs =
365 '<input type="hidden" name="{$fieldName}[]" value="" />'
366 ;
367 }
368 document.getElementById('{$inputsContainerId}').innerHTML = htmlInputs;
369 BX.Event.EventEmitter.emit('onChangeUser');
370 }
371 }
372
373 selector.renderTo(document.getElementById('{$containerId}'));
374 })();
375
376 </script>
377HTML;
378 }
379
385 public static function GetUIEntityEditorPropertyViewHtml(array $params = []): string
386 {
387 $result = [];
388 if (!is_array($params['VALUE']))
389 {
390 $params['VALUE'] = [$params['VALUE']];
391 }
392
393 $nameFormat = CSite::GetNameFormat();
394 foreach ($params['VALUE'] as $userId)
395 {
396 $userId = (int)$userId;
397 $user = static::getUserArray($userId);
398 if ($user)
399 {
400 $result[] = '<a href="/company/personal/user/' . $userId . '/">' . CUser::FormatName($nameFormat, $user) . '</a>';
401 }
402 }
403
404 return implode(', ', $result);
405 }
406
412 private static function getUserArray(int $userId)
413 {
414 if (!isset(self::$cache[$userId]))
415 {
416 $userResult = \Bitrix\Main\UserTable::getRow([
417 'select' => [
418 'ID',
419 'NAME',
420 'LAST_NAME',
421 'SECOND_NAME',
422 'TITLE',
423 'LOGIN',
424 'EMAIL',
425 ],
426 'filter' => ['ID' => $userId],
427 ]);
428 if ($userResult)
429 {
430 self::$cache[$userId] = $userResult;
431 }
432 else
433 {
434 self::$cache[$userId] = [];
435 }
436 }
437
438 return self::$cache[$userId];
439 }
440
448 public static function getPublicViewHTML(array $property, array $value, $control): string
449 {
450 $userId = (int)$value['VALUE'];
451 $user = static::getUserArray($userId);
452 if ($user)
453 {
454 $link = '[<a href="/company/personal/user/' . $userId . '/">' . $userId . '</a>] ';
455 $login = '(' . htmlspecialcharsbx($user['LOGIN']) . ') ';
456 $nameFormat = CSite::GetNameFormat();
457 $name = CUser::FormatName($nameFormat, $user);
458
459 return $link . $login . $name;
460 }
461
462 return '';
463 }
464}
465
466function FindUserIDNew($tag_name, $tag_value, $user_name="", $form_name = "form1", $select="none", $tag_size = "3", $tag_maxlength="", $button_value = "...", $tag_class="typeinput", $button_class="tablebodybutton", $search_page="/bitrix/admin/user_search.php")
467{
468 global $APPLICATION, $USER;
469 $tag_name_x = preg_replace("/([^a-z0-9])/is", "x", $tag_name);
470 $tag_name_escaped = CUtil::JSEscape($tag_name);
471
472 if($APPLICATION->GetGroupRight("main") >= "R")
473 {
474 $selfFolderUrl = (defined("SELF_FOLDER_URL") ? SELF_FOLDER_URL : "/bitrix/admin/");
475
476 $strReturn = "
477<input type=\"text\" name=\"".$tag_name."\" id=\"".$tag_name."\" value=\"".($select=="none"?"":$tag_value)."\" size=\"".$tag_size."\" maxlength=\"".$tag_maxlength."\" class=\"".$tag_class."\">
478<IFRAME style=\"width:0px; height:0px; border: 0px\" src=\"javascript:void(0)\" name=\"hiddenframe".$tag_name."\" id=\"hiddenframe".$tag_name."\"></IFRAME>
479<input class=\"".$button_class."\" type=\"button\" name=\"FindUser".$tag_name_x."\" id=\"FindUser".$tag_name_x."\" OnClick=\"window.open('".$search_page."?lang=".LANGUAGE_ID."&FN=".$form_name."&FC=".$tag_name_escaped."', '', 'scrollbars=yes,resizable=yes,width=760,height=500,top='+Math.floor((screen.height - 560)/2-14)+',left='+Math.floor((screen.width - 760)/2-5));\" value=\"".$button_value."\" ".($select=="none"?"disabled":"").">
480<span id=\"div_".$tag_name."\">".$user_name."</span>
481<script>
482";
483 if($user_name=="")
484 $strReturn.= "var tv".$tag_name_x."='';\n";
485 else
486 $strReturn.= "var tv".$tag_name_x."='".CUtil::JSEscape($tag_value)."';\n";
487
488 $strReturn.= "
489function Ch".$tag_name_x."()
490{
491 var DV_".$tag_name_x.";
492 DV_".$tag_name_x." = document.getElementById(\"div_".$tag_name_escaped."\");
493 if (!!DV_".$tag_name_x.")
494 {
495 if (
496 document.".$form_name."
497 && document.".$form_name."['".$tag_name_escaped."']
498 && typeof tv".$tag_name_x." != 'undefined'
499 && tv".$tag_name_x." != document.".$form_name."['".$tag_name_escaped."'].value
500 )
501 {
502 tv".$tag_name_x."=document.".$form_name."['".$tag_name_escaped."'].value;
503 if (tv".$tag_name_x."!='')
504 {
505 DV_".$tag_name_x.".innerHTML = '<i>".GetMessage("MAIN_WAIT")."</i>';
506
507 if (tv".$tag_name_x."!=".intval($USER->GetID()).")
508 {
509 document.getElementById(\"hiddenframe".$tag_name_escaped."\").src='".$selfFolderUrl."get_user.php?ID=' + tv".$tag_name_x."+'&strName=".$tag_name_escaped."&lang=".LANGUAGE_ID.(defined("ADMIN_SECTION") && ADMIN_SECTION===true?"&admin_section=Y":"")."';
510 document.getElementById('SELECT".$tag_name_escaped."').value = 'SU';
511 }
512 else
513 {
514 DV_".$tag_name_x.".innerHTML = '".CUtil::JSEscape("[<a title=\"".GetMessage("MAIN_EDIT_USER_PROFILE")."\" class=\"tablebodylink\" href=\"/bitrix/admin/user_edit.php?ID=".$USER->GetID()."&lang=".LANGUAGE_ID."\">".$USER->GetID()."</a>] (".htmlspecialcharsbx($USER->GetLogin()).") ".htmlspecialcharsbx($USER->GetFirstName())." ".htmlspecialcharsbx($USER->GetLastName()))."';
515 document.getElementById('SELECT".$tag_name_escaped."').value = 'CU';
516 }
517 }
518 else
519 {
520 DV_".$tag_name_x.".innerHTML = '';
521 }
522 }
523 else if (
524 DV_".$tag_name_x."
525 && DV_".$tag_name_x.".innerHTML.length > 0
526 && document.".$form_name."
527 && document.".$form_name."['".$tag_name_escaped."']
528 && document.".$form_name."['".$tag_name_escaped."'].value == ''
529 )
530 {
531 document.getElementById('div_".$tag_name."').innerHTML = '';
532 }
533 }
534 setTimeout(function(){Ch".$tag_name_x."()},1000);
535}
536Ch".$tag_name_x."();
537</script>
538";
539 }
540 else
541 {
542 $strReturn = "
543 <input type=\"text\" name=\"$tag_name\" id=\"$tag_name\" value=\"$tag_value\" size=\"$tag_size\" maxlength=\"strMaxLenght\">
544 <input type=\"button\" name=\"FindUser".$tag_name_x."\" id=\"FindUser".$tag_name_x."\" OnClick=\"window.open('".$search_page."?lang=".LANGUAGE_ID."&FN=$form_name&FC=$tag_name_escaped', '', 'scrollbars=yes,resizable=yes,width=760,height=560,top='+Math.floor((screen.height - 560)/2-14)+',left='+Math.floor((screen.width - 760)/2-5));\" value=\"$button_value\">
545 $user_name
546 ";
547 }
548 return $strReturn;
549}
return select
Определения access_edit.php:440
global $APPLICATION
Определения include.php:80
$login
Определения change_password.php:8
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
static getRow(array $parameters)
Определения datamanager.php:398
static load($extNames)
Определения extension.php:16
Определения json.php:9
static GetUIFilterProperty($property, $strHTMLControlName, &$fields)
Определения prop_userid.php:213
static GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields)
Определения prop_userid.php:179
static GetAdminFilterHTML($property, $control)
Определения prop_userid.php:199
static GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
Определения prop_userid.php:86
static array $cache
Определения prop_userid.php:10
static GetUserTypeDescription()
Определения prop_userid.php:13
static GetUIEntityEditorPropertyViewHtml(array $params=[])
Определения prop_userid.php:385
static GetAdminListViewHTML($arProperty, $value, $strHTMLControlName)
Определения prop_userid.php:34
static GetUIEntityEditorProperty($property, $value)
Определения prop_userid.php:250
static getPublicViewHTML(array $property, array $value, $control)
Определения prop_userid.php:448
static ConvertFromDB($arProperty, $value)
Определения prop_userid.php:171
static AddFilterFields($arProperty, $control, &$arFilter, &$filtered)
Определения prop_userid.php:187
const USER_TYPE
Определения prop_userid.php:11
static ConvertToDB($arProperty, $value)
Определения prop_userid.php:163
static getAdminListViewHTMLExtended(array $property, array $value, $control)
Определения prop_userid.php:59
$nameFormat
Определения discount_coupon_list.php:278
$selfFolderUrl
Определения discount_coupon_list.php:18
& nbsp
Определения epilog_main_admin.php:38
hidden PROPERTY[<?=$propertyIndex?>][CODE]<?=htmlspecialcharsEx( $propertyCode)?> height
Определения file_new.php:759
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
$result
Определения get_property_values.php:14
$control
Определения iblock_catalog_edit.php:61
$select
Определения iblock_catalog_list.php:194
global $USER
Определения csv_new_run.php:40
htmlspecialcharsEx($str)
Определения tools.php:2685
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$name
Определения menu_edit.php:35
$value
Определения Param.php:39
$user
Определения mysql_to_pgsql.php:33
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
FindUserIDNew($tag_name, $tag_value, $user_name="", $form_name="form1", $select="none", $tag_size="3", $tag_maxlength="", $button_value="...", $tag_class="typeinput", $button_class="tablebodybutton", $search_page="/bitrix/admin/user_search.php")
Определения prop_userid.php:466
const ADMIN_SECTION
Определения rss.php:2
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799
$GLOBALS['_____370096793']
Определения update_client.php:1
$arFilter
Определения user_search.php:106
$fields
Определения yandex_run.php:501