1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
authproviders.php
См. документацию.
1<?php
2
5
7
9{
10 public function __construct()
11 {
12 $this->id = 'socnetgroup';
13 }
14
15 public function UpdateCodes($USER_ID)
16 {
17 global $DB;
18
19 $USER_ID = intval($USER_ID);
20
21 $connection = Application::getConnection();
22 $helper = $connection->getSqlHelper();
23
24 $sql = $helper->getInsertIgnore(
25 'b_user_access',
26 '(USER_ID, PROVIDER_ID, ACCESS_CODE)',
27 "SELECT ".$USER_ID.", '".$DB->ForSQL($this->id)."', ".$DB->Concat("'SG'", "U2G.GROUP_ID", "'_'", "U2G.ROLE")."
28 FROM b_sonet_user2group U2G
29 WHERE U2G.USER_ID=".$USER_ID." AND U2G.ROLE IN ('A','E','K')
30 UNION
31 SELECT ".$USER_ID.", '".$DB->ForSQL($this->id)."', ".$DB->Concat("'SG'", "U2G.GROUP_ID", "'_K'")."
32 FROM b_sonet_user2group U2G
33 WHERE U2G.USER_ID=".$USER_ID." AND U2G.ROLE IN ('A','E')
34 UNION
35 SELECT ".$USER_ID.", '".$DB->ForSQL($this->id)."', ".$DB->Concat("'SG'", "U2G.GROUP_ID", "'_E'")."
36 FROM b_sonet_user2group U2G
37 WHERE U2G.USER_ID=".$USER_ID." AND U2G.ROLE IN ('A')"
38 );
39 $DB->Query($sql);
40 }
41
42 public function AjaxRequest($arParams=false)
43 {
44 global $USER;
45
46 $search = urldecode($_REQUEST['search']);
47 $elements = '';
48 $arFinderParams = Array(
49 "PROVIDER" => $this->id,
50 "TYPE" => 4,
51 );
52
53 $arFilter = array("%NAME" => $search, "ACTIVE"=>"Y");
54 if ($arParams["SITE_ID"] <> '')
55 {
56 $arFilter["SITE_ID"] = $arParams["SITE_ID"];
57 }
58
59 if (!CSocNetUser::IsCurrentUserModuleAdmin($arParams["SITE_ID"], $arParams["SITE_ID"] <> ''))
60 {
61 $arFilter["CHECK_PERMISSIONS"] = $USER->GetID();
62 }
63
64 $rsGroups = CSocNetGroup::GetList(array("NAME" => "ASC"), $arFilter);
65 $rsGroups->NavStart(30);
66 while ($arGroup = $rsGroups->NavNext(false))
67 {
68 $arItem = Array(
69 "ID" => "SG".$arGroup['ID'],
70 "AVATAR" => '/bitrix/js/main/core/images/access/avatar-user-everyone.png',
71 "NAME" => Emoji::decode($arGroup['NAME']),
72 "DESC" => Emoji::decode($arGroup['DESCRIPTION']),
73 "CHECKBOX" => array(
74 "#ID#_A" => GetMessage("authprov_sg_a"),
75 "#ID#_E" => GetMessage("authprov_sg_e"),
76 "#ID#_K" => GetMessage("authprov_sg_k"),
77 ),
78 );
79 if($arGroup["IMAGE_ID"])
80 {
81 $imageFile = CFile::GetFileArray($arGroup["IMAGE_ID"]);
82 if ($imageFile !== false)
83 {
84 $arFileTmp = CFile::ResizeImageGet(
85 $imageFile,
86 array("width" => 30, "height" => 30)
87 );
88 $arItem["AVATAR"] = $arFileTmp["src"];
89 }
90 }
91 $elements .= CFinder::GetFinderItem($arFinderParams, $arItem);
92 }
93
94 return $elements;
95 }
96
97 public function GetFormHtml($arParams=false)
98 {
99 global $USER;
100
101 if (
102 is_array($arParams["socnetgroups"] ?? null)
103 && $arParams["socnetgroups"]["disabled"] == "true"
104 )
105 {
106 return false;
107 }
108
109 $currElements = '';
110 if (
111 is_array($arParams[$this->id] ?? null)
112 && ($group_id = intval($arParams[$this->id]["group_id"])) > 0
113 )
114 {
115 $arFinderParams = Array(
116 "PROVIDER" => $this->id,
117 "TYPE" => 4,
118 );
119
121 "ID" => $group_id,
122 "ACTIVE" => "Y"
123 );
124 if (!CSocNetUser::IsCurrentUserModuleAdmin($arParams["SITE_ID"]))
125 {
126 $arFilter["CHECK_PERMISSIONS"] = $USER->GetID();
127 }
128
129 $rsGroups = CSocNetGroup::GetList(array(), $arFilter);
130 if($arGroup = $rsGroups->Fetch())
131 {
132 $arItem = Array(
133 "ID" => "SG".$arGroup['ID'],
134 "AVATAR" => '/bitrix/js/main/core/images/access/avatar-user-everyone.png',
135 "NAME" => Emoji::decode($arGroup['NAME']),
136 "DESC" => Emoji::decode($arGroup['DESCRIPTION']),
137 "OPEN" => "Y",
138 "CHECKBOX" => array(
139 "#ID#_A" => GetMessage("authprov_sg_a"),
140 "#ID#_E" => GetMessage("authprov_sg_e"),
141 "#ID#_K" => GetMessage("authprov_sg_k"),
142 ),
143 );
144 if($arGroup["IMAGE_ID"])
145 {
146 $imageFile = CFile::GetFileArray($arGroup["IMAGE_ID"]);
147 if ($imageFile !== false)
148 {
149 $arFileTmp = CFile::ResizeImageGet(
150 $imageFile,
151 array("width" => 30, "height" => 30)
152 );
153 $arItem["AVATAR"] = $arFileTmp["src"];
154 }
155 }
156 $currElements .= CFinder::GetFinderItem($arFinderParams, $arItem);
157 }
158 }
159
160 $elements = "";
161 $arFinderParams = Array(
162 "PROVIDER" => $this->id,
163 "TYPE" => 3,
164 );
165
166 $arLRU = CAccess::GetLastRecentlyUsed($this->id);
167
168 if (!empty($arLRU))
169 {
170 $arLastID = array();
171 $arElements = array();
172
173 foreach($arLRU as $val)
174 {
175 if (preg_match('/^SG([0-9]+)_([A-Z])/', $val, $match))
176 {
177 $arLastID[$match[1]] = $match[1];
178 }
179 }
180
181 if (!empty($arLastID))
182 {
184 "ID" => $arLastID,
185 "ACTIVE" => "Y"
186 );
187 if($arParams["SITE_ID"] <> '')
188 {
189 $arFilter["SITE_ID"] = $arParams["SITE_ID"];
190 }
191 if(!CSocNetUser::IsCurrentUserModuleAdmin($arParams["SITE_ID"]))
192 {
193 $arFilter["CHECK_PERMISSIONS"] = $USER->GetID();
194 }
195
196 $rsGroups = CSocNetGroup::GetList(array("NAME" => "ASC"), $arFilter);
197 while($arGroup = $rsGroups->Fetch())
198 {
199 $arItem = Array(
200 "ID" => $arGroup['ID'],
201 "AVATAR" => '/bitrix/js/main/core/images/access/avatar-user-everyone.png',
202 "NAME" => Emoji::decode($arGroup['NAME']),
203 "DESC" => Emoji::decode($arGroup['DESCRIPTION']),
204 );
205 if($arGroup["IMAGE_ID"])
206 {
207 $imageFile = CFile::GetFileArray($arGroup["IMAGE_ID"]);
208 if ($imageFile !== false)
209 {
210 $arFileTmp = CFile::ResizeImageGet(
211 $imageFile,
212 array("width" => 30, "height" => 30)
213 );
214 $arItem["AVATAR"] = $arFileTmp["src"];
215 }
216 }
217 $arElements[$arItem['ID']] = $arItem;
218 }
219
220 foreach($arLRU as $val)
221 {
222 if (preg_match('/^SG([0-9]+)_([A-Z])/', $val, $match))
223 {
224 if (isset($arElements[$match[1]]))
225 {
226 $arItem = $arElements[$match[1]];
227 if ($match[2] == 'K')
228 {
229 $arItem['ID'] = 'SG'.$arElements[$match[1]]['ID'].'_K';
230 $arItem['NAME'] = $arElements[$match[1]]['NAME'].': '.GetMessage("authprov_sg_k");
231 }
232 else if ($match[2] == 'E')
233 {
234 $arItem['ID'] = 'SG'.$arElements[$match[1]]['ID'].'_E';
235 $arItem['NAME'] = $arElements[$match[1]]['NAME'].': '.GetMessage("authprov_sg_e");
236 }
237 else if ($match[2] == 'A')
238 {
239 $arItem['ID'] = 'SG'.$arElements[$match[1]]['ID'].'_A';
240 $arItem['NAME'] = $arElements[$match[1]]['NAME'].': '.GetMessage("authprov_sg_a");
241 }
242 $elements .= CFinder::GetFinderItem($arFinderParams, $arItem);
243 }
244 }
245 }
246 }
247 }
248
249 $arFinderParams = Array(
250 "PROVIDER" => $this->id,
251 "TYPE" => 4,
252 );
253
255 "USER_ID" => $USER->GetID(),
256 "<=ROLE" => SONET_ROLES_USER,
257 "GROUP_ACTIVE" => "Y"
258 );
259 if($arParams["SITE_ID"] <> '')
260 {
261 $arFilter["GROUP_SITE_ID"] = $arParams["SITE_ID"];
262 }
263
264 $rsGroups = CSocNetUserToGroup::GetList(
265 array("GROUP_NAME" => "ASC"),
266 $arFilter,
267 false,
268 false,
269 array("ID", "GROUP_ID", "GROUP_NAME", "GROUP_DESCRIPTION", "GROUP_IMAGE_ID")
270 );
271
272 $myElements = '';
273 while($arGroup = $rsGroups->Fetch())
274 {
275 $arItem = Array(
276 "ID" => "SG".$arGroup['GROUP_ID'],
277 "AVATAR" => $arGroup['GROUP_IMAGE_ID'],
278 "NAME" => $arGroup['GROUP_NAME'],
279 "DESC" => $arGroup['GROUP_DESCRIPTION'],
280 "CHECKBOX" => array(
281 "#ID#_A" => GetMessage("authprov_sg_a"),
282 "#ID#_E" => GetMessage("authprov_sg_e"),
283 "#ID#_K" => GetMessage("authprov_sg_k"),
284 ),
285 );
286 if($arGroup["GROUP_IMAGE_ID"])
287 {
288 $imageFile = CFile::GetFileArray($arGroup["GROUP_IMAGE_ID"]);
289 if ($imageFile !== false)
290 {
291 $arFileTmp = CFile::ResizeImageGet(
292 $imageFile,
293 array("width" => 30, "height" => 30)
294 );
295 $arItem["AVATAR"] = $arFileTmp["src"];
296 }
297 }
298 $myElements .= CFinder::GetFinderItem($arFinderParams, $arItem);
299 }
300
301 $arPanels = array();
302 if($currElements <> '')
303 {
304 $arPanels[] = array(
305 "NAME" => GetMessage("authprov_sg_current"),
306 "ELEMENTS" => $currElements,
307 );
308 }
309 $arPanels[] = array(
310 "NAME" => GetMessage("authprov_sg_panel_last"),
311 "ELEMENTS" => $elements,
312 );
313 $arPanels[] = array(
314 "NAME" => GetMessage("authprov_sg_panel_my_group"),
315 "ELEMENTS" => $myElements,
316 );
317 $arPanels[] = array(
318 "NAME" => GetMessage("authprov_sg_panel_search"),
319 "ELEMENTS" => CFinder::GetFinderItem(Array("TYPE" => "text"), Array("TEXT" => GetMessage("authprov_sg_panel_search_text"))),
320 "SEARCH" => "Y",
321 );
322 $html = CFinder::GetFinderAppearance($arFinderParams, $arPanels);
323
324 return array("HTML"=>$html, "SELECTED"=>($currElements <> ''));
325 }
326
327 public function GetNames($arCodes)
328 {
329 $arID = array();
330 foreach ($arCodes as $code)
331 {
332 if (preg_match('/^SG([0-9]+)_[A-Z]$/', $code, $match))
333 {
334 $arID[] = $match[1];
335 }
336 }
337
338 if(!empty($arID))
339 {
340 $arResult = array();
341 $rsGroups = CSocNetGroup::GetList(array(), array("ID"=>$arID));
342 while($arGroup = $rsGroups->Fetch())
343 {
344 $arResult["SG".$arGroup["ID"]."_A"] = array("provider" => GetMessage("authprov_sg_socnet_group"), "name"=> Emoji::decode($arGroup["NAME"]) .": ".GetMessage("authprov_sg_a"));
345 $arResult["SG".$arGroup["ID"]."_E"] = array("provider" => GetMessage("authprov_sg_socnet_group"), "name"=> Emoji::decode($arGroup["NAME"]) .": ".GetMessage("authprov_sg_e"));
346 $arResult["SG".$arGroup["ID"]."_K"] = array("provider" => GetMessage("authprov_sg_socnet_group"), "name"=> Emoji::decode($arGroup["NAME"]) .": ".GetMessage("authprov_sg_k"));
347 }
348 return $arResult;
349 }
350 return false;
351 }
352
353 public static function GetProviders()
354 {
355 return array(
356 array(
357 "ID" => "socnetgroup",
358 "NAME" => GetMessage("authprov_sg_name"),
359 "PROVIDER_NAME" => GetMessage("authprov_sg_socnet_group"),
360 "SORT" => 400,
361 "CLASS" => "CSocNetGroupAuthProvider",
362 ),
363 array(
364 "ID" => "socnetuser",
365 "CLASS" => "CSocNetUserAuthProvider",
366 ),
367 );
368 }
369}
370
372{
373 public function __construct()
374 {
375 $this->id = 'socnetuser';
376 }
377
378 public function UpdateCodes($USER_ID)
379 {
380 global $DB;
381 if(CSocNetUser::IsFriendsAllowed())
382 {
383 $USER_ID = intval($USER_ID);
384
385 $connection = Application::getConnection();
386 $helper = $connection->getSqlHelper();
387
389 while ($arFriends = $dbFriends->Fetch())
390 {
391 $friendID = (($USER_ID == $arFriends["FIRST_USER_ID"]) ? $arFriends["SECOND_USER_ID"] : $arFriends["FIRST_USER_ID"]);
392
393 $sql = $helper->getInsertIgnore(
394 'b_user_access',
395 '(USER_ID, PROVIDER_ID, ACCESS_CODE)',
396 "VALUES (".(int)$friendID.", '".$DB->ForSQL($this->id)."', 'SU".$USER_ID."_".SONET_RELATIONS_TYPE_FRIENDS."')"
397 );
398 $DB->Query($sql);
399 }
400 }
401 }
402}
$arParams
Определения access_dialog.php:21
$connection
Определения actionsdefinitions.php:38
$arResult
Определения generate_coupon.php:16
Определения emoji.php:10
static GetRelatedUsers($userID, $relation, $arNavStartParams=false, $bActiveOnly="N")
Определения user_relations.php:215
Определения authproviders.php:17
static GetFinderAppearance($arParams, $arPanels)
Определения finder.php:12
static GetFinderItem($arParams, $arItem)
Определения finder.php:75
UpdateCodes($USER_ID)
Определения authproviders.php:15
static GetProviders()
Определения authproviders.php:353
GetNames($arCodes)
Определения authproviders.php:327
AjaxRequest($arParams=false)
Определения authproviders.php:42
GetFormHtml($arParams=false)
Определения authproviders.php:97
UpdateCodes($USER_ID)
Определения authproviders.php:378
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$_REQUEST["admin_mnu_menu_id"]
Определения get_menu.php:8
$rsGroups
Определения options.php:36
global $DB
Определения cron_frame.php:29
global $USER
Определения csv_new_run.php:40
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
Определения options.php:195
$arCodes
Определения options.php:154
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$val
Определения options.php:1793
const SONET_ROLES_USER
Определения include.php:31
const SONET_RELATIONS_FRIEND
Определения include.php:24
const SONET_RELATIONS_TYPE_FRIENDS
Определения include.php:41
$arFilter
Определения user_search.php:106