1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
user.php
См. документацию.
1<?php
2
4{
5 protected $_user_id;
6
7 function __construct($user_id)
8 {
9 $this->_user_id = intval($user_id);
10 }
11
12 public static function OnAfterUserUpdate(&$arFields)
13 {
14 if (array_key_exists('GROUP_ID', $arFields))
15 {
16 $ob = new CSearchUser($arFields['ID']);
17 $ob->DeleteGroups();
18 }
19 }
20
21 public static function DeleteByUserID($USER_ID)
22 {
23 $ob = new CSearchUser($USER_ID);
24 $ob->DeleteGroups();
25 }
26
27 public static function CheckCurrentUserGroups()
28 {
29 global $USER;
30 $user_id = is_object($USER) ? intval($USER->GetID()) : 0;
31
32 if ($user_id > 0)
33 {
34 $arGroupCodes = ['AU', 'U' . $user_id]; // Authorized
35 foreach ($USER->GetUserGroupArray() as $group_id)
36 {
37 $arGroupCodes[] = 'G' . $group_id;
38 }
39
40 foreach (GetModuleEvents('search', 'OnSearchCheckPermissions', true) as $arEvent)
41 {
42 $arCodes = ExecuteModuleEventEx($arEvent, [null]);
43 if (is_array($arCodes))
44 {
45 $arGroupCodes = array_merge($arGroupCodes, $arCodes);
46 }
47 }
48
49 $ob = new CSearchUser($user_id);
50 $ob->SetGroups($arGroupCodes);
51 }
52 }
53
54 function IsGroupsExists()
55 {
56 $DB = CDatabase::GetModuleConnection('search');
57 $rs = $DB->Query($DB->TopSql('
58 SELECT * FROM b_search_user_right
59 WHERE USER_ID = ' . $this->_user_id . '
60 ', 1));
61 return is_array($rs->Fetch());
62 }
63
64 function DeleteGroups()
65 {
66 $DB = CDatabase::GetModuleConnection('search');
67 $DB->Query('
68 DELETE FROM b_search_user_right
69 WHERE USER_ID = ' . $this->_user_id . '
70 ');
71 }
72
74 {
75 $DB = CDatabase::GetModuleConnection('search');
76
77 $arToInsert = [];
78 foreach ($arGroups as $group_code)
79 {
80 if ($group_code != '')
81 {
82 $arToInsert[$group_code] = $group_code;
83 }
84 }
85
86 foreach ($arToInsert as $group_code)
87 {
88 $DB->Query('
89 INSERT INTO b_search_user_right
90 (USER_ID, GROUP_CODE)
91 VALUES
92 (' . $this->_user_id . ", '" . $DB->ForSQL($group_code, 100) . "')
93 ", true);
94 }
95 }
96
98 {
99 $DB = CDatabase::GetModuleConnection('search');
100 $dbCodes = $DB->Query('
101 SELECT GROUP_CODE
102 FROM b_search_user_right
103 WHERE USER_ID = ' . $this->_user_id . '
104 ');
105
106 $arGroupsToCheck = array_flip($arGroups);
107 while ($dbCode = $dbCodes->Fetch())
108 {
109 if (!array_key_exists($dbCode['GROUP_CODE'], $arGroupsToCheck))
110 {
111 $DB->Query('
112 DELETE FROM b_search_user_right
113 WHERE USER_ID = ' . $this->_user_id . "
114 AND GROUP_CODE = '" . $DB->ForSQL($dbCode['GROUP_CODE']) . "'
115 ");
116 }
117 else
118 {
119 unset($arGroups[$arGroupsToCheck[$dbCode['GROUP_CODE']]]);
120 }
121 }
122 $this->AddGroups($arGroups);
123 }
124}
Определения user.php:4
DeleteGroups()
Определения user.php:64
static DeleteByUserID($USER_ID)
Определения user.php:21
SetGroups($arGroups)
Определения user.php:97
static OnAfterUserUpdate(&$arFields)
Определения user.php:12
AddGroups($arGroups)
Определения user.php:73
static CheckCurrentUserGroups()
Определения user.php:27
$_user_id
Определения user.php:5
IsGroupsExists()
Определения user.php:54
__construct($user_id)
Определения user.php:7
$arFields
Определения dblapprove.php:5
$arGroups
Определения options.php:1766
global $DB
Определения cron_frame.php:29
global $USER
Определения csv_new_run.php:40
$arCodes
Определения options.php:154
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
$rs
Определения action.php:82