1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
user_relations.php
См. документацию.
1<?php
2
4
6
8{
9 /***************************************/
10 /******** DATA MODIFICATION **********/
11 /***************************************/
12 public static function CheckFields($ACTION, &$arFields, $ID = 0)
13 {
15
16 if ($ACTION != "ADD" && intval($ID) <= 0)
17 {
18 $GLOBALS["APPLICATION"]->ThrowException("System error 870164", "ERROR");
19 return false;
20 }
21
22 if ((is_set($arFields, "FIRST_USER_ID") || $ACTION=="ADD") && intval($arFields["FIRST_USER_ID"]) <= 0)
23 {
24 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_FIRST_USER_ID"), "EMPTY_FIRST_USER_ID");
25 return false;
26 }
27 elseif (is_set($arFields, "FIRST_USER_ID"))
28 {
29 $dbResult = CUser::GetByID($arFields["FIRST_USER_ID"]);
30 if (!$dbResult->Fetch())
31 {
32 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_ERROR_NO_FIRST_USER_ID"), "ERROR_NO_FIRST_USER_ID");
33 return false;
34 }
35 }
36
37 if ((is_set($arFields, "SECOND_USER_ID") || $ACTION=="ADD") && intval($arFields["SECOND_USER_ID"]) <= 0)
38 {
39 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_SECOND_USER_ID"), "EMPTY_SECOND_USER_ID");
40 return false;
41 }
42 elseif (is_set($arFields, "SECOND_USER_ID"))
43 {
44 $dbResult = CUser::GetByID($arFields["SECOND_USER_ID"]);
45 if (!$dbResult->Fetch())
46 {
47 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_ERROR_NO_SECOND_USER_ID"), "ERROR_NO_SECOND_USER_ID");
48 return false;
49 }
50 }
51
52 if ((is_set($arFields, "RELATION") || $ACTION=="ADD") && $arFields["RELATION"] == '')
53 {
54 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_RELATION"), "EMPTY_RELATION");
55 return false;
56 }
57 elseif (is_set($arFields, "RELATION") && !in_array($arFields["RELATION"], $arSocNetAllowedRelations))
58 {
59 $GLOBALS["APPLICATION"]->ThrowException(str_replace("#ID#", $arFields["RELATION"], GetMessage("SONET_UR_ERROR_NO_RELATION")), "ERROR_NO_RELATION");
60 return false;
61 }
62 elseif (is_set($arFields, "RELATION") && $arFields["RELATION"] == SONET_RELATIONS_TYPE_FRIENDS2)
63 {
64 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_ERROR_RELATION_FRIENDS2"), "ERROR_RELATION_FRIENDS2");
65 return false;
66 }
67
68 if ((is_set($arFields, "INITIATED_BY") || $ACTION=="ADD") && !in_array($arFields["INITIATED_BY"], array("F", "S")))
69 $arFields["INITIATED_BY"] = "F";
70
71 if (is_set($arFields, "DATE_CREATE") && (!$DB->IsDate($arFields["DATE_CREATE"], false, LANG, "FULL")))
72 {
73 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_DATE_CREATE"), "EMPTY_DATE_CREATE");
74 return false;
75 }
76
77 if (is_set($arFields, "DATE_UPDATE") && (!$DB->IsDate($arFields["DATE_UPDATE"], false, LANG, "FULL")))
78 {
79 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_DATE_UPDATE"), "EMPTY_DATE_UPDATE");
80 return false;
81 }
82
83 return True;
84 }
85
86 public static function Delete($ID)
87 {
88 global $DB;
89
90 if (!CSocNetGroup::__ValidateID($ID))
91 return false;
92
93 $ID = intval($ID);
94 $bSuccess = True;
95
96 $rsUser2UserOld = $DB->Query("SELECT * FROM b_sonet_user_relations WHERE ID = ".$ID."");
97 if($arUser2UserOld = $rsUser2UserOld->Fetch())
98 {
99 CSocNetSearch::OnUserRelationsChange($arUser2UserOld["FIRST_USER_ID"]);
100 CSocNetSearch::OnUserRelationsChange($arUser2UserOld["SECOND_USER_ID"]);
101 }
102
103 $db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetUserRelationsDelete");
104 while ($arEvent = $db_events->Fetch())
105 if (ExecuteModuleEventEx($arEvent, array($ID))===false)
106 return false;
107
108 $events = GetModuleEvents("socialnetwork", "OnSocNetUserRelationsDelete");
109 while ($arEvent = $events->Fetch())
110 ExecuteModuleEventEx($arEvent, array($ID));
111
112 if ($bSuccess)
113 {
114 $arRelation = CSocNetUserRelations::GetByID($ID);
115 $bSuccess = $DB->Query("DELETE FROM b_sonet_user_relations WHERE ID = ".$ID."", true);
116 }
117
118 if ($bSuccess)
119 {
120 if ($arRelation && $arRelation["RELATION"] == SONET_RELATIONS_FRIEND)
121 $GLOBALS["DB"]->Query("DELETE FROM b_sonet_event_user_view WHERE
122 ENTITY_TYPE = '".SONET_ENTITY_USER."'
123 AND (
124 (USER_ID = ".$arRelation["FIRST_USER_ID"]." AND ENTITY_ID = ".$arRelation["SECOND_USER_ID"].")
125 OR (USER_ID = ".$arRelation["SECOND_USER_ID"]." AND ENTITY_ID = ".$arRelation["FIRST_USER_ID"].")
126 OR (ENTITY_ID = ".$arRelation["FIRST_USER_ID"]." AND USER_IM_ID = ".$arRelation["SECOND_USER_ID"].")
127 OR (ENTITY_ID = ".$arRelation["SECOND_USER_ID"]." AND USER_IM_ID = ".$arRelation["FIRST_USER_ID"].")
128 OR (USER_ID = ".$arRelation["FIRST_USER_ID"]." AND USER_IM_ID = ".$arRelation["SECOND_USER_ID"].")
129 OR (USER_ID = ".$arRelation["SECOND_USER_ID"]." AND USER_IM_ID = ".$arRelation["FIRST_USER_ID"].")
130 )", true);
131 }
132
133 return $bSuccess;
134 }
135
136 public static function DeleteNoDemand($userID)
137 {
138 global $DB;
139
140 if (!CSocNetGroup::__ValidateID($userID))
141 return false;
142
143 $userID = intval($userID);
144 $bSuccess = True;
145
146 $rsUser2UserOld = $DB->Query("SELECT * FROM b_sonet_user_relations WHERE FIRST_USER_ID = ".$userID." OR SECOND_USER_ID = ".$userID."");
147 while($arUser2UserOld = $rsUser2UserOld->Fetch())
148 {
149 CSocNetSearch::OnUserRelationsChange($arUser2UserOld["FIRST_USER_ID"]);
150 CSocNetSearch::OnUserRelationsChange($arUser2UserOld["SECOND_USER_ID"]);
151 }
152
153 if ($bSuccess)
154 $bSuccess = $DB->Query("DELETE FROM b_sonet_user_relations WHERE FIRST_USER_ID = ".$userID." OR SECOND_USER_ID = ".$userID."", true);
155
156 if ($bSuccess)
157 $DB->Query("DELETE FROM b_sonet_event_user_view WHERE
158 ENTITY_TYPE = '".SONET_ENTITY_USER."'
159 AND (
160 USER_ID = ".$userID."
161 OR ENTITY_ID = ".$userID."
162 OR USER_IM_ID = ".$userID."
163 )", true);
164
166
167 return $bSuccess;
168 }
169
170 /***************************************/
171 /********** DATA SELECTION ***********/
172 /***************************************/
173 public static function GetByID($ID)
174 {
175 global $DB;
176
177 if (!CSocNetGroup::__ValidateID($ID))
178 return false;
179
180 $ID = intval($ID);
181
182 $dbResult = CSocNetUserRelations::GetList(Array(), Array("ID" => $ID));
183 if ($arResult = $dbResult->GetNext())
184 {
185 return $arResult;
186 }
187
188 return False;
189 }
190
191 public static function GetByUserID($user1ID, $user2ID)
192 {
193 global $DB;
194
195 $user1ID = intval($user1ID);
196 if ($user1ID <= 0)
197 return false;
198 $user2ID = intval($user2ID);
199 if ($user2ID <= 0)
200 return false;
201
202 $strSql =
203 "SELECT ID, FIRST_USER_ID, SECOND_USER_ID, RELATION, DATE_CREATE, DATE_UPDATE, MESSAGE, INITIATED_BY ".
204 "FROM b_sonet_user_relations ".
205 "WHERE FIRST_USER_ID = ".$user1ID." AND SECOND_USER_ID = ".$user2ID." ".
206 " OR FIRST_USER_ID = ".$user2ID." AND SECOND_USER_ID = ".$user1ID." ";
207
208 $dbResult = $DB->Query($strSql);
209 if ($arResult = $dbResult->Fetch())
210 return $arResult;
211
212 return False;
213 }
214
215 public static function GetRelatedUsers($userID, $relation, $arNavStartParams = false, $bActiveOnly = "N")
216 {
218
219 $userID = intval($userID);
220 if ($userID <= 0)
221 return false;
222
223 if (!in_array($relation, $arSocNetAllowedRelations))
224 return false;
225
226 if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0)
227 $arOrderBy = array(
228 "RAND" => "ASC"
229 );
230 else
231 $arOrderBy = array(
232 "DATE_UPDATE" => "DESC"
233 );
234
236 $arOrderBy,
237 array(
238 "USER_ID" => $userID,
239 "RELATION" => $relation,
240 "ACTIVE_ONLY" => $bActiveOnly
241 ),
242 false,
243 $arNavStartParams,
244 array("ID", "FIRST_USER_ID", "SECOND_USER_ID", "DATE_CREATE", "DATE_UPDATE", "INITIATED_BY",
245 "FIRST_USER_NAME", "FIRST_USER_LAST_NAME", "FIRST_USER_PERSONAL_PHOTO", "FIRST_USER_PERSONAL_GENDER", "FIRST_USER_SECOND_NAME", "FIRST_USER_LOGIN", "FIRST_USER_EMAIL", "FIRST_USER_IS_ONLINE",
246 "SECOND_USER_NAME", "SECOND_USER_LAST_NAME", "SECOND_USER_PERSONAL_PHOTO", "SECOND_USER_PERSONAL_GENDER", "SECOND_USER_SECOND_NAME", "SECOND_USER_LOGIN", "SECOND_USER_EMAIL", "SECOND_USER_IS_ONLINE"
247 )
248 );
249
250 return $dbResult;
251 }
252
253 /***************************************/
254 /********** COMMON METHODS ***********/
255 /***************************************/
256 public static function GetRelation($firstUserID, $secondUserID)
257 {
258 global $DB;
259
260 static $arSocNetURNCache = array();
261 static $arSocNetUserRelationsCache1 = array();
262
263 $firstUserID = intval($firstUserID);
264 if ($firstUserID <= 0)
265 {
266 return false;
267 }
268
269 $secondUserID = intval($secondUserID);
270 if ($secondUserID <= 0)
271 {
272 return false;
273 }
274
275 if (array_key_exists($firstUserID, $arSocNetURNCache))
276 {
277 if (array_key_exists($secondUserID, $arSocNetURNCache[$firstUserID]))
278 {
279 return $arSocNetURNCache[$firstUserID][$secondUserID];
280 }
281 elseif(count($arSocNetURNCache[$firstUserID]) != 100)
282 {
283 return false;
284 }
285 }
286 elseif (array_key_exists($secondUserID, $arSocNetURNCache))
287 {
288 if (array_key_exists($firstUserID, $arSocNetURNCache[$secondUserID]))
289 {
290 return $arSocNetURNCache[$secondUserID][$firstUserID];
291 }
292 elseif(count($arSocNetURNCache[$secondUserID]) != 100)
293 {
294 return false;
295 }
296 }
297
298 // get top N relations of user1
299 $arSocNetURNCache[$firstUserID] = array();
301 while ($arResult = $dbResult->Fetch())
302 {
303 if ($arResult["FIRST_USER_ID"] == $firstUserID)
304 {
305 $arSocNetURNCache[$firstUserID][$arResult["SECOND_USER_ID"]] = $arResult["RELATION"];
306 }
307 else
308 {
309 $arSocNetURNCache[$firstUserID][$arResult["FIRST_USER_ID"]] = $arResult["RELATION"];
310 }
311 }
312
313 // get top N relations of user2
314 $arSocNetURNCache[$secondUserID] = array();
316 while ($arResult = $dbResult->Fetch())
317 {
318 if ($arResult["FIRST_USER_ID"] == $secondUserID)
319 {
320 $arSocNetURNCache[$secondUserID][$arResult["SECOND_USER_ID"]] = $arResult["RELATION"];
321 }
322 else
323 {
324 $arSocNetURNCache[$secondUserID][$arResult["FIRST_USER_ID"]] = $arResult["RELATION"];
325 }
326 }
327
328 if (!array_key_exists($firstUserID."_".$secondUserID, $arSocNetUserRelationsCache1))
329 {
330 $strSql =
331 "SELECT UR.RELATION ".
332 "FROM b_sonet_user_relations UR ".
333 "WHERE UR.FIRST_USER_ID = ".$firstUserID." ".
334 " AND UR.SECOND_USER_ID = ".$secondUserID." ".
335 "UNION ".
336 "SELECT UR.RELATION ".
337 "FROM b_sonet_user_relations UR ".
338 "WHERE UR.FIRST_USER_ID = ".$secondUserID." ".
339 " AND UR.SECOND_USER_ID = ".$firstUserID." ";
340
341 $dbResult = $DB->Query($strSql);
342 if ($arResult = $dbResult->Fetch())
343 {
344 $arSocNetUserRelationsCache1[$firstUserID."_".$secondUserID] = $arResult["RELATION"];
345 }
346 else
347 {
348 $arSocNetUserRelationsCache1[$firstUserID."_".$secondUserID] = false;
349 }
350 }
351
352 return $arSocNetUserRelationsCache1[$firstUserID."_".$secondUserID];
353 }
354
355 public static function IsFriends($firstUserID, $secondUserID)
356 {
357 global $DB;
358 static $arSocNetUserRelationsCache = array();
359
360 $firstUserID = intval($firstUserID);
361 if ($firstUserID <= 0)
362 {
363 return false;
364 }
365
366 $secondUserID = intval($secondUserID);
367 if ($secondUserID <= 0)
368 {
369 return false;
370 }
371
372 if (!array_key_exists($firstUserID."_".$secondUserID, $arSocNetUserRelationsCache))
373 {
374 $strSql =
375 "SELECT 'x' ".
376 "FROM b_sonet_user_relations UR ".
377 "WHERE UR.FIRST_USER_ID = ".$firstUserID." ".
378 " AND UR.SECOND_USER_ID = ".$secondUserID." ".
379 " AND UR.RELATION = '".$DB->ForSql(SONET_RELATIONS_FRIEND, 1)."' ".
380 "UNION ".
381 "SELECT 'x' ".
382 "FROM b_sonet_user_relations UR ".
383 "WHERE UR.FIRST_USER_ID = ".$secondUserID." ".
384 " AND UR.SECOND_USER_ID = ".$firstUserID." ".
385 " AND UR.RELATION = '".$DB->ForSql(SONET_RELATIONS_FRIEND, 1)."' ";
386
387 $dbResult = $DB->Query($strSql);
388 if ($dbResult->Fetch())
389 {
390 $arSocNetUserRelationsCache[$firstUserID."_".$secondUserID] = true;
391 }
392 else
393 {
394 $arSocNetUserRelationsCache[$firstUserID."_".$secondUserID] = false;
395 }
396 }
397
398 return $arSocNetUserRelationsCache[$firstUserID."_".$secondUserID];
399 }
400
401 public static function IsFriends2($firstUserID, $secondUserID)
402 {
403 global $DB;
404 static $arSocNetUser2RelationsCache = array();
405
406 $firstUserID = intval($firstUserID);
407 if ($firstUserID <= 0)
408 {
409 return false;
410 }
411
412 $secondUserID = intval($secondUserID);
413 if ($secondUserID <= 0)
414 {
415 return false;
416 }
417
418 if (!array_key_exists($firstUserID."_".$secondUserID, $arSocNetUser2RelationsCache))
419 {
420 $strSql =
421 "SELECT 'x' ".
422 "FROM b_sonet_user_relations UR, b_sonet_user_relations UR1 ".
423 "WHERE UR.FIRST_USER_ID = ".$firstUserID." ".
424 " AND UR.SECOND_USER_ID = UR1.FIRST_USER_ID ".
425 " AND UR.RELATION = '".$DB->ForSql(SONET_RELATIONS_FRIEND, 1)."' ".
426 " AND UR1.SECOND_USER_ID = ".$secondUserID." ".
427 " AND UR1.RELATION = '".$DB->ForSql(SONET_RELATIONS_FRIEND, 1)."' ".
428 "UNION ".
429 "SELECT 'x' ".
430 "FROM b_sonet_user_relations UR, b_sonet_user_relations UR1 ".
431 "WHERE UR.FIRST_USER_ID = ".$firstUserID." ".
432 " AND UR.SECOND_USER_ID = UR1.SECOND_USER_ID ".
433 " AND UR.RELATION = '".$DB->ForSql(SONET_RELATIONS_FRIEND, 1)."' ".
434 " AND UR1.FIRST_USER_ID = ".$secondUserID." ".
435 " AND UR1.RELATION = '".$DB->ForSql(SONET_RELATIONS_FRIEND, 1)."' ".
436 "UNION ".
437 "SELECT 'x' ".
438 "FROM b_sonet_user_relations UR, b_sonet_user_relations UR1 ".
439 "WHERE UR.SECOND_USER_ID = ".$firstUserID." ".
440 " AND UR.FIRST_USER_ID = UR1.FIRST_USER_ID ".
441 " AND UR.RELATION = '".$DB->ForSql(SONET_RELATIONS_FRIEND, 1)."' ".
442 " AND UR1.SECOND_USER_ID = ".$secondUserID." ".
443 " AND UR1.RELATION = '".$DB->ForSql(SONET_RELATIONS_FRIEND, 1)."' ".
444 "UNION ".
445 "SELECT 'x' ".
446 "FROM b_sonet_user_relations UR, b_sonet_user_relations UR1 ".
447 "WHERE UR.SECOND_USER_ID = ".$firstUserID." ".
448 " AND UR.FIRST_USER_ID = UR1.SECOND_USER_ID ".
449 " AND UR.RELATION = '".$DB->ForSql(SONET_RELATIONS_FRIEND, 1)."' ".
450 " AND UR1.FIRST_USER_ID = ".$secondUserID." ".
451 " AND UR1.RELATION = '".$DB->ForSql(SONET_RELATIONS_FRIEND, 1)."' ";
452
453 $dbResult = $DB->Query($strSql);
454 if ($dbResult->Fetch())
455 {
456 $arSocNetUser2RelationsCache[$firstUserID."_".$secondUserID] = true;
457 }
458 else
459 {
460 $arSocNetUser2RelationsCache[$firstUserID."_".$secondUserID] = false;
461 }
462 }
463
464 return $arSocNetUser2RelationsCache[$firstUserID."_".$secondUserID];
465 }
466
467 /***************************************/
468 /********** SEND EVENTS **************/
469 /***************************************/
470 public static function SendEvent($relationID, $mailType = "INVITE_FRIEND")
471 {
472 $relationID = intval($relationID);
473 if ($relationID <= 0)
474 return false;
475
476 $dbRelation = CSocNetUserRelations::GetList(
477 array(),
478 array("ID" => $relationID),
479 false,
480 false,
481 array("ID", "FIRST_USER_ID", "SECOND_USER_ID", "RELATION", "DATE_CREATE", "MESSAGE", "INITIATED_BY", "FIRST_USER_NAME", "FIRST_USER_LAST_NAME", "FIRST_USER_LOGIN", "FIRST_USER_EMAIL", "FIRST_USER_LID", "SECOND_USER_NAME", "SECOND_USER_LAST_NAME", "SECOND_USER_LOGIN", "SECOND_USER_EMAIL", "SECOND_USER_LID")
482 );
483 $arRelation = $dbRelation->Fetch();
484 if (!$arRelation)
485 return false;
486
487 $fromUserPref = "FIRST";
488 $toUserPref = "SECOND";
489 if ($arRelation["INITIATED_BY"] == "S")
490 {
491 $fromUserPref = "SECOND";
492 $toUserPref = "FIRST";
493 }
494
495 $mailTemplate = "SONET_INVITE_FRIEND";
496 if ($mailType == "AGREE_FRIEND")
497 $mailTemplate = "SONET_AGREE_FRIEND";
498 elseif ($mailType == "BAN_FRIEND")
499 $mailTemplate = "SONET_BAN_FRIEND";
500
501 $defSiteID = $arRelation[$toUserPref."_USER_LID"];
502 $siteID = CSocNetUserEvents::GetEventSite($arRelation[$toUserPref."_USER_ID"], $mailTemplate, $defSiteID);
503 if ($siteID == false || $siteID == '')
504 return false;
505
506 if (IsModuleInstalled("im"))
507 {
508 $url = str_replace("#USER_ID#", $arRelation[$toUserPref."_USER_ID"], COption::GetOptionString("socialnetwork", "user_request_page",
509 (IsModuleInstalled("intranet")) ? "/company/personal/user/#USER_ID#/requests/" : "/club/user/#USER_ID#/requests/", $siteID));
510 }
511 else
512 $url = COption::GetOptionString("socialnetwork", "messages_path", "/company/personal/messages/", $siteID);
513
515 "RELATION_ID" => $relationID,
516 "SENDER_USER_ID" => $arRelation[$fromUserPref."_USER_ID"],
517 "SENDER_USER_NAME" => $arRelation[$fromUserPref."_USER_NAME"],
518 "SENDER_USER_LAST_NAME" => $arRelation[$fromUserPref."_USER_LAST_NAME"],
519 "SENDER_EMAIL_TO" => $arRelation[$fromUserPref."_USER_EMAIL"],
520 "RECIPIENT_USER_ID" => $arRelation[$toUserPref."_USER_ID"],
521 "RECIPIENT_USER_NAME" => $arRelation[$toUserPref."_USER_NAME"],
522 "RECIPIENT_USER_LAST_NAME" => $arRelation[$toUserPref."_USER_LAST_NAME"],
523 "RECIPIENT_USER_EMAIL_TO" => $arRelation[$toUserPref."_USER_EMAIL"],
524 "MESSAGE" => $arRelation["MESSAGE"],
525 "URL" => $url
526 );
527
528 $event = new CEvent;
529 $event->Send($mailTemplate, $siteID, $arFields, "N");
530
531 return true;
532 }
533
534 /***************************************/
535 /************ ACTIONS ****************/
536 /***************************************/
537 public static function SendRequestToBeFriend($senderUserID, $targetUserID, $message)
538 {
539 global $APPLICATION;
540
541 $senderUserID = intval($senderUserID);
542 if ($senderUserID <= 0)
543 {
544 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_SENDER_USER_ID"), "ERROR_SENDER_USER_ID");
545 return false;
546 }
547
548 $targetUserID = intval($targetUserID);
549 if ($targetUserID <= 0)
550 {
551 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_TARGET_USER_ID"), "ERROR_TARGET_USER_ID");
552 return false;
553 }
554
556 "FIRST_USER_ID" => $senderUserID,
557 "SECOND_USER_ID" => $targetUserID,
558 "RELATION" => SONET_RELATIONS_REQUEST,
559 "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
560 "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
561 "MESSAGE" => $message,
562 "INITIATED_BY" => "F",
563 );
564
565 //check if relation already exists to overwrite it
566 //if user is banned but im is installed and black-list isn't used anymore
568 array(),
569 array(
570 "FIRST_USER_ID" => $senderUserID,
571 "SECOND_USER_ID" => $targetUserID
572 )
573 );
574
575 $ID = false;
576 if ($arResult = $dbResult->GetNext())
577 {
578 if ($arResult["RELATION"] == SONET_RELATIONS_BAN && IsModuleInstalled("im"))
580 }
581 else
583
584 if (!$ID)
585 {
586 $errorMessage = "";
587 if ($e = $APPLICATION->GetException())
588 $errorMessage = $e->GetString();
589 if ($errorMessage == '')
590 $errorMessage = GetMessage("SONET_UR_ERROR_CREATE_RELATION");
591
592 $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_CREATE_RELATION");
593 return false;
594 }
595
596 if (CModule::IncludeModule("im"))
597 {
598 $dbSenderUser = CUser::GetByID($senderUserID);
599 $arSenderUser = $dbSenderUser->Fetch();
600 $senderUser = CUser::FormatName(CSite::GetNameFormat(), $arSenderUser, true);
601
602 $arMessageFields = array(
603 "MESSAGE_TYPE" => IM_MESSAGE_SYSTEM,
604 "TO_USER_ID" => (int)$targetUserID,
605 "FROM_USER_ID" => (int)$senderUserID,
606 "NOTIFY_TYPE" => IM_NOTIFY_CONFIRM,
607 "NOTIFY_MODULE" => "socialnetwork",
608 "NOTIFY_EVENT" => "invite_user_btn",
609 "NOTIFY_TAG" => "SOCNET|INVITE_USER|". (int)$targetUserID ."|". $ID,
610 "NOTIFY_TITLE" => Loc::getMessage('SONET_U_INVITE_CONFIRM_TITLE', ["#USER#" => $senderUser]),
611 "NOTIFY_MESSAGE" => fn (?string $languageId = null) => Loc::getMessage(
612 'SONET_U_INVITE_CONFIRM_TEXT',
613 ['#TEXT#' => $message],
614 $languageId
615 ),
616 "NOTIFY_BUTTONS" => Array(
617 Array('TITLE' => GetMessage('SONET_U_INVITE_CONFIRM'), 'VALUE' => 'Y', 'TYPE' => 'accept'),
618 Array('TITLE' => GetMessage('SONET_U_INVITE_REJECT'), 'VALUE' => 'N', 'TYPE' => 'cancel'),
619 )
620 );
621
622 $dbSite = CSite::GetByID(SITE_ID);
623 $arSite = $dbSite->Fetch();
624 $serverName = htmlspecialcharsEx($arSite["SERVER_NAME"]);
625 if ($serverName == '')
626 {
627 if (defined("SITE_SERVER_NAME") && SITE_SERVER_NAME <> '')
628 {
629 $serverName = SITE_SERVER_NAME;
630 }
631 else
632 {
633 $serverName = COption::GetOptionString("main", "server_name", "");
634 }
635 if ($serverName == '')
636 {
637 $serverName = $_SERVER["SERVER_NAME"];
638 }
639 }
640 $serverName = (CMain::IsHTTPS() ? "https" : "http")."://".$serverName;
641
642 $requestUrl = COption::GetOptionString("socialnetwork", "user_request_page",
643 (IsModuleInstalled("intranet")) ? "/company/personal/user/#USER_ID#/requests/" : "/club/user/#USER_ID#/requests/", SITE_ID);
644
645 $requestUrl = $serverName.str_replace(array("#USER_ID#", "#user_id#"), $targetUserID, $requestUrl);
646
647 $arMessageFields['NOTIFY_MESSAGE_OUT'] = fn (?string $languageId = null) =>
648 Loc::getMessage(
649 'SONET_U_INVITE_CONFIRM_TEXT',
650 ['#TEXT#' => $message],
651 $languageId
652 )
653 . "\n\n".Loc::getMessage('SONET_U_INVITE_CONFIRM', null, $languageId).": ".$requestUrl.'?INVITE_USER='.$ID.'&CONFIRM=Y'
654 . "\n\n".Loc::getMessage('SONET_U_INVITE_REJECT', null, $languageId).": ".$requestUrl.'?INVITE_USER='.$ID.'&CONFIRM=N'
655 ;
656
657 CIMNotify::Add($arMessageFields);
658 }
659
661
662 return true;
663 }
664
665 public static function ConfirmRequestToBeFriend($senderUserID, $relationID, $bAutoSubscribe = true)
666 {
667 global $APPLICATION;
668
669 $senderUserID = intval($senderUserID);
670 if ($senderUserID <= 0)
671 {
672 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_SENDER_USER_ID"), "ERROR_SENDER_USER_ID");
673 return false;
674 }
675
676 $relationID = intval($relationID);
677 if ($relationID <= 0)
678 {
679 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_TARGET_USER_ID"), "ERROR_RELATION_ID");
680 return false;
681 }
682
684 array(),
685 array(
686 "ID" => $relationID,
687 "SECOND_USER_ID" => $senderUserID,
688 "RELATION" => SONET_RELATIONS_REQUEST
689 ),
690 false,
691 false,
692 array("ID", "FIRST_USER_ID", "SECOND_USER_ID")
693 );
694
695 if ($arResult = $dbResult->Fetch())
696 {
697 $rsUser = CUser::GetByID(intval($arResult["FIRST_USER_ID"]));
698 $arUser = $rsUser->Fetch();
699 if (!is_array($arUser) || $arUser["ACTIVE"] !== "Y")
700 {
701 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_INVALID_TARGET_USER_ID"), "ERROR_INVALID_TARGET_USER_ID");
702 return false;
703 }
704
706 "RELATION" => SONET_RELATIONS_FRIEND,
707 "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
708 "INITIATED_BY" => "S",
709 );
710
712 {
713 if ($bAutoSubscribe)
714 {
715 CSocNetLogEvents::AutoSubscribe($senderUserID, SONET_ENTITY_USER, $arResult["FIRST_USER_ID"]);
716 CSocNetLogEvents::AutoSubscribe($arResult["FIRST_USER_ID"], SONET_ENTITY_USER, $senderUserID);
717 }
718
719 if (CModule::IncludeModule("im"))
720 {
721 CIMNotify::DeleteByTag("SOCNET|INVITE_USER|".intval($senderUserID)."|".intval($arResult["ID"]));
722 $arMessageFields = array(
723 "MESSAGE_TYPE" => IM_MESSAGE_SYSTEM,
724 "TO_USER_ID" => $arResult["FIRST_USER_ID"],
725 "FROM_USER_ID" => $senderUserID,
726 "NOTIFY_TYPE" => IM_NOTIFY_FROM,
727 "NOTIFY_MODULE" => "socialnetwork",
728 "NOTIFY_EVENT" => "inout_user",
729 "NOTIFY_TAG" => "SOCNET|INVITE_USER_CONFIRM",
730 "NOTIFY_MESSAGE" => fn (?string $languageId = null) => Loc::getMessage('SONET_UR_AGREE_FRIEND_MESSAGE', null, $languageId),
731 );
732 CIMNotify::Add($arMessageFields);
733 }
734 }
735 else
736 {
737 $errorMessage = "";
738 if ($e = $APPLICATION->GetException())
739 $errorMessage = $e->GetString();
740 if ($errorMessage == '')
741 $errorMessage = GetMessage("SONET_UR_ERROR_UPDATE_RELATION");
742
743 $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_CREATE_RELATION");
744 return false;
745 }
746 }
747 else
748 {
749 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_NO_FRIEND_REQUEST"), "ERROR_NO_FRIEND_REQUEST");
750 return false;
751 }
752
753 $arUserID = array(
754 $arResult["FIRST_USER_ID"],
755 $arResult["SECOND_USER_ID"]
756 );
757
759 while ($arFriends = $dbFriends->Fetch())
760 {
761 $pref = (($arResult["FIRST_USER_ID"] == $arFriends["FIRST_USER_ID"]) ? "SECOND" : "FIRST");
762 $arUserID[] = $arResult[$pref."_USER_ID"];
763 }
764
766 while ($arFriends = $dbFriends->Fetch())
767 {
768 $pref = (($arResult["FIRST_USER_ID"] == $arFriends["FIRST_USER_ID"]) ? "SECOND" : "FIRST");
769 $arUserID[] = $arResult[$pref."_USER_ID"];
770 }
771
772 $arUserID = array_unique($arUserID);
773
775
776 return true;
777 }
778
779 public static function RejectRequestToBeFriend($senderUserID, $relationID)
780 {
781 global $APPLICATION;
782
783 $senderUserID = intval($senderUserID);
784 if ($senderUserID <= 0)
785 {
786 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_SENDER_USER_ID"), "ERROR_SENDER_USER_ID");
787 return false;
788 }
789
790 $relationID = intval($relationID);
791 if ($relationID <= 0)
792 {
793 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_TARGET_USER_ID"), "ERROR_RELATION_ID");
794 return false;
795 }
796
798 array(),
799 array(
800 "ID" => $relationID,
801 "SECOND_USER_ID" => $senderUserID,
802 "RELATION" => SONET_RELATIONS_REQUEST
803 ),
804 false,
805 false,
806 array("ID", "FIRST_USER_ID")
807 );
808
809 if ($arResult = $dbResult->Fetch())
810 {
812 {
813 if (CModule::IncludeModule("im"))
814 {
815 CIMNotify::DeleteByTag("SOCNET|INVITE_USER|".intval($senderUserID)."|".intval($arResult["ID"]));
816 $arMessageFields = array(
817 "MESSAGE_TYPE" => IM_MESSAGE_SYSTEM,
818 "TO_USER_ID" => $arResult["FIRST_USER_ID"],
819 "FROM_USER_ID" => $senderUserID,
820 "NOTIFY_TYPE" => IM_NOTIFY_FROM,
821 "NOTIFY_MODULE" => "socialnetwork",
822 "NOTIFY_EVENT" => "inout_user",
823 "NOTIFY_TAG" => "SOCNET|INVITE_USER_REJECT",
824 "NOTIFY_MESSAGE" => fn (?string $languageId = null) => Loc::getMessage('SONET_UR_REJECT_FRIEND_MESSAGE', null, $languageId),
825 );
826 CIMNotify::Add($arMessageFields);
827 }
828 }
829 else
830 {
831 $errorMessage = "";
832 if ($e = $APPLICATION->GetException())
833 $errorMessage = $e->GetString();
834 if ($errorMessage == '')
835 $errorMessage = GetMessage("SONET_UR_RELATION_DELETE_ERROR");
836
837 $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_DELETE_RELATION");
838 return false;
839 }
840 }
841 else
842 {
843 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_NO_FRIEND_REQUEST"), "ERROR_NO_FRIEND_REQUEST");
844 return false;
845 }
846
848
849 return true;
850 }
851
852 public static function DeleteRelation($senderUserID, $targetUserID)
853 {
854 global $APPLICATION;
855
856 $senderUserID = intval($senderUserID);
857 if ($senderUserID <= 0)
858 {
859 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_SENDER_USER_ID"), "ERROR_SENDER_USER_ID");
860 return false;
861 }
862
863 $targetUserID = intval($targetUserID);
864 if ($targetUserID <= 0)
865 {
866 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_TARGET_USER_ID"), "ERROR_TARGET_USER_ID");
867 return false;
868 }
869
870 $arRelation = CSocNetUserRelations::GetByUserID($senderUserID, $targetUserID);
871 if (!$arRelation)
872 {
873 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_RELATION_NOT_FOUND"), "ERROR_RELATION_NOT_FOUND");
874 return false;
875 }
876
877 if (CSocNetUserRelations::Delete($arRelation["ID"]))
878 {
879 if (CModule::IncludeModule("im"))
880 {
881 $rsUser = CUser::GetByID($senderUserID);
882 $gender_suffix = '';
883 if ($arUser = $rsUser->Fetch())
884 {
885 $gender_suffix = match ($arUser["PERSONAL_GENDER"])
886 {
887 "M" => "_M",
888 "F" => "_F",
889 default => "",
890 };
891 }
892
893 $arMessageFields = array(
894 "MESSAGE_TYPE" => IM_MESSAGE_SYSTEM,
895 "FROM_USER_ID" => $senderUserID,
896 "TO_USER_ID" => $targetUserID,
897 "NOTIFY_TYPE" => IM_NOTIFY_FROM,
898 "NOTIFY_MODULE" => "socialnetwork",
899 "NOTIFY_EVENT" => "inout_user",
900 "NOTIFY_TAG" => "SOCNET|FRIENDS|". (int)$arRelation["ID"],
901 "NOTIFY_MESSAGE" => fn (?string $languageId = null) => Loc::getMessage("SONET_UR_IM_UNFRIEND" . $gender_suffix, null, $languageId),
902 );
903 CIMNotify::Add($arMessageFields);
904 }
905
906 if ($arRelation["RELATION"] == SONET_RELATIONS_FRIEND)
907 $GLOBALS["DB"]->Query("DELETE FROM b_sonet_event_user_view WHERE
908 ENTITY_TYPE = '".SONET_ENTITY_USER."'
909 AND (
910 (USER_ID = ".$arRelation["FIRST_USER_ID"]." AND ENTITY_ID = ".$arRelation["SECOND_USER_ID"].")
911 OR (USER_ID = ".$arRelation["SECOND_USER_ID"]." AND ENTITY_ID = ".$arRelation["FIRST_USER_ID"].")
912 OR (ENTITY_ID = ".$arRelation["FIRST_USER_ID"]." AND USER_IM_ID = ".$arRelation["SECOND_USER_ID"].")
913 OR (ENTITY_ID = ".$arRelation["SECOND_USER_ID"]." AND USER_IM_ID = ".$arRelation["FIRST_USER_ID"].")
914 OR (USER_ID = ".$arRelation["FIRST_USER_ID"]." AND USER_IM_ID = ".$arRelation["SECOND_USER_ID"].")
915 OR (USER_ID = ".$arRelation["SECOND_USER_ID"]." AND USER_IM_ID = ".$arRelation["FIRST_USER_ID"].")
916 )", true);
917 }
918 else
919 {
920 $errorMessage = "";
921 if ($e = $APPLICATION->GetException())
922 $errorMessage = $e->GetString();
923 if ($errorMessage == '')
924 $errorMessage = GetMessage("SONET_UR_RELATION_DELETE_ERROR");
925
926 $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_DELETE_RELATION");
927 return false;
928 }
929
931
932 return true;
933 }
934
935 public static function BanUser($senderUserID, $targetUserID)
936 {
937 global $APPLICATION, $DB;
938
939 $senderUserID = intval($senderUserID);
940 if ($senderUserID <= 0)
941 {
942 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_SENDER_USER_ID"), "ERROR_SENDER_USER_ID");
943 return false;
944 }
945
946 $targetUserID = intval($targetUserID);
947 if ($targetUserID <= 0)
948 {
949 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_TARGET_USER_ID"), "ERROR_TARGET_USER_ID");
950 return false;
951 }
952 elseif (CSocNetUser::IsUserModuleAdmin($targetUserID, false))
953 {
954 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_ERROR_CREATE_RELATION"), "ERROR_TARGET_USER_ID");
955 return false;
956 }
957
958 $strSql =
959 "SELECT UR.ID, UR.FIRST_USER_ID, UR.SECOND_USER_ID, UR.RELATION ".
960 "FROM b_sonet_user_relations UR ".
961 "WHERE UR.FIRST_USER_ID = ".$senderUserID." ".
962 " AND UR.SECOND_USER_ID = ".$targetUserID." ".
963 "UNION ".
964 "SELECT UR.ID, UR.FIRST_USER_ID, UR.SECOND_USER_ID, UR.RELATION ".
965 "FROM b_sonet_user_relations UR ".
966 "WHERE UR.FIRST_USER_ID = ".$targetUserID." ".
967 " AND UR.SECOND_USER_ID = ".$senderUserID." ";
968
969 $dbResult = $DB->Query($strSql);
970 if ($arResult = $dbResult->Fetch())
971 {
972 if ($arResult["RELATION"] != SONET_RELATIONS_BAN)
973 {
974 $arFields = array(
975 "RELATION" => SONET_RELATIONS_BAN,
976 "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
977 );
978 if ($arResult["FIRST_USER_ID"] == $senderUserID)
979 $arFields["INITIATED_BY"] = "F";
980 else
981 $arFields["INITIATED_BY"] = "S";
982
983 if (CSocNetUserRelations::Update($arResult["ID"], $arFields))
984 {
985 $arMessageFields = array(
986 "FROM_USER_ID" => $senderUserID,
987 "TO_USER_ID" => $targetUserID,
988 "MESSAGE" => fn (?string $languageId = null) => Loc::getMessage("SONET_UR_BANUSER_MESSAGE", null, $languageId),
989 "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
990 "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM
991 );
992
993 CSocNetMessages::Add($arMessageFields);
994
995 if ($arResult["RELATION"] == SONET_RELATIONS_FRIEND)
996 $GLOBALS["DB"]->Query("DELETE FROM b_sonet_event_user_view WHERE
997 ENTITY_TYPE = '".SONET_ENTITY_USER."'
998 AND (
999 (USER_ID = ".$arRelation["FIRST_USER_ID"]." AND ENTITY_ID = ".$arRelation["SECOND_USER_ID"].")
1000 OR (USER_ID = ".$arRelation["SECOND_USER_ID"]." AND ENTITY_ID = ".$arRelation["FIRST_USER_ID"].")
1001 OR (ENTITY_ID = ".$arRelation["FIRST_USER_ID"]." AND USER_IM_ID = ".$arRelation["SECOND_USER_ID"].")
1002 OR (ENTITY_ID = ".$arRelation["SECOND_USER_ID"]." AND USER_IM_ID = ".$arRelation["FIRST_USER_ID"].")
1003 OR (USER_ID = ".$arRelation["FIRST_USER_ID"]." AND USER_IM_ID = ".$arRelation["SECOND_USER_ID"].")
1004 OR (USER_ID = ".$arRelation["SECOND_USER_ID"]." AND USER_IM_ID = ".$arRelation["FIRST_USER_ID"].")
1005 )", true);
1006 }
1007 else
1008 {
1009 $errorMessage = "";
1010 if ($e = $APPLICATION->GetException())
1011 $errorMessage = $e->GetString();
1012 if ($errorMessage == '')
1013 $errorMessage = GetMessage("SONET_UR_ERROR_UPDATE_RELATION");
1014
1015 $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_UPDATE_RELATION");
1016 return false;
1017 }
1018 }
1019 else
1020 {
1021 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_ALREADY_BAN"), "ERROR_ALREADY_BAN");
1022 return false;
1023 }
1024 }
1025 else
1026 {
1027 $arFields = array(
1028 "FIRST_USER_ID" => $senderUserID,
1029 "SECOND_USER_ID" => $targetUserID,
1030 "RELATION" => SONET_RELATIONS_BAN,
1031 "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
1032 "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
1033 "INITIATED_BY" => "F",
1034 );
1036 {
1037 $arMessageFields = array(
1038 "FROM_USER_ID" => $senderUserID,
1039 "TO_USER_ID" => $targetUserID,
1040 "MESSAGE" => fn (?string $languageId = null) => Loc::getMessage("SONET_UR_BANUSER_MESSAGE", null, $languageId),
1041 "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
1042 "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM
1043 );
1044
1045 CSocNetMessages::Add($arMessageFields);
1046 }
1047 else
1048 {
1049 $errorMessage = "";
1050 if ($e = $APPLICATION->GetException())
1051 $errorMessage = $e->GetString();
1052 if ($errorMessage == '')
1053 $errorMessage = GetMessage("SONET_UR_ERROR_CREATE_RELATION");
1054
1055 $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_CREATE_RELATION");
1056 return false;
1057 }
1058 }
1059
1060 return true;
1061 }
1062
1063 public static function UnBanMember($senderUserID, $relationID)
1064 {
1065 global $APPLICATION, $DB;
1066
1067 $senderUserID = intval($senderUserID);
1068 if ($senderUserID <= 0)
1069 {
1070 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_SENDER_USER_ID"), "ERROR_SENDER_USER_ID");
1071 return false;
1072 }
1073
1074 $relationID = intval($relationID);
1075 if ($relationID <= 0)
1076 {
1077 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_RELATION"), "ERROR_RELATIONID");
1078 return false;
1079 }
1080
1081 $arRelation = CSocNetUserRelations::GetByID($relationID);
1082 if (!$arRelation)
1083 {
1084 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_ERROR_NO_RELATION"), "ERROR_NO_RELATION");
1085 return false;
1086 }
1087
1088 if ($arRelation["RELATION"] == SONET_RELATIONS_BAN
1089 &&
1090 ($arRelation["FIRST_USER_ID"] == $senderUserID && $arRelation["INITIATED_BY"] == "F"
1091 || $arRelation["SECOND_USER_ID"] == $senderUserID && $arRelation["INITIATED_BY"] == "S"))
1092 {
1093 if (CSocNetUserRelations::Delete($arRelation["ID"]))
1094 {
1095 $arMessageFields = array(
1096 "FROM_USER_ID" => $senderUserID,
1097 "TO_USER_ID" => ($arRelation["FIRST_USER_ID"] == $senderUserID ? $arRelation["SECOND_USER_ID"] : $arRelation["FIRST_USER_ID"]),
1098 "MESSAGE" => fn (?string $languageId = null) => Loc::getMessage("SONET_UR_UNBANUSER_MESSAGE", null, $languageId),
1099 "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
1100 "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM
1101 );
1102
1103 CSocNetMessages::Add($arMessageFields);
1104 }
1105 else
1106 {
1107 $errorMessage = "";
1108 if ($e = $APPLICATION->GetException())
1109 $errorMessage = $e->GetString();
1110 if ($errorMessage == '')
1111 $errorMessage = GetMessage("SONET_UR_RELATION_DELETE_ERROR");
1112
1113 $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_DELETE_RELATION");
1114 return false;
1115 }
1116 }
1117 else
1118 {
1119 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_UNBAN_ERROR"), "ERROR_UNBAN");
1120 return false;
1121 }
1122
1123 return true;
1124 }
1125
1126 public static function __SpeedFileCheckMessages($userID)
1127 {
1128 $userID = intval($userID);
1129 if ($userID <= 0)
1130 return;
1131
1132 $cnt = 0;
1133 $dbResult = $GLOBALS["DB"]->Query(
1134 "SELECT COUNT(ID) as CNT ".
1135 "FROM b_sonet_user_relations ".
1136 "WHERE SECOND_USER_ID = ".$userID." ".
1137 " AND RELATION = '".$GLOBALS["DB"]->ForSql(SONET_RELATIONS_REQUEST, 1)."' "
1138 );
1139 if ($arResult = $dbResult->Fetch())
1140 $cnt = intval($arResult["CNT"]);
1141
1142 if ($cnt > 0)
1144 else
1146 }
1147
1148 public static function __SpeedFileCreate($userID)
1149 {
1150 global $CACHE_MANAGER;
1151
1152 $userID = intval($userID);
1153 if ($userID <= 0)
1154 return;
1155
1156 if ($CACHE_MANAGER->Read(86400*30, "socnet_cf_".$userID))
1157 $CACHE_MANAGER->Clean("socnet_cf_".$userID);
1158/*
1159 $filePath = $_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/managed_flags/socnet/c/".IntVal($userID / 1000)."/";
1160 $fileName = $userID."_f";
1161
1162 if (!file_exists($filePath.$fileName))
1163 {
1164 CheckDirPath($filePath);
1165 @fclose(@fopen($filePath.$fileName, "w"));
1166 }
1167*/
1168 }
1169
1170 public static function __SpeedFileDelete($userID)
1171 {
1172 global $CACHE_MANAGER;
1173
1174 $userID = intval($userID);
1175 if ($userID <= 0)
1176 return;
1177
1178 if (!$CACHE_MANAGER->Read(86400*30, "socnet_cf_".$userID))
1179 $CACHE_MANAGER->Set("socnet_cf_".$userID, true);
1180/*
1181 $fileName = $_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/managed_flags/socnet/c/".IntVal($userID / 1000)."/".$userID."_f";
1182 if (file_exists($fileName))
1183 @unlink($fileName);
1184*/
1185 }
1186
1187 public static function SpeedFileExists($userID)
1188 {
1189 global $CACHE_MANAGER;
1190
1191 $userID = intval($userID);
1192 if ($userID <= 0)
1193 return;
1194
1195 return (!$CACHE_MANAGER->Read(86400*30, "socnet_cf_".$userID));
1196/*
1197 $fileName = $_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/managed_flags/socnet/c/".IntVal($userID / 1000)."/".$userID."_f";
1198 return file_exists($fileName);
1199*/
1200 }
1201
1202 /* Module IM callback */
1203 public static function OnBeforeConfirmNotify($module, $tag, $value, $arParams)
1204 {
1205 if ($module == "socialnetwork")
1206 {
1207 $arTag = explode("|", $tag);
1208 if (count($arTag) == 4 && $arTag[1] == 'INVITE_USER')
1209 {
1210 if ($value == 'Y')
1211 {
1212 self::ConfirmRequestToBeFriend($arTag[2], $arTag[3]);
1213 return true;
1214 }
1215 else
1216 {
1217 self::RejectRequestToBeFriend($arTag[2], $arTag[3]);
1218 return true;
1219 }
1220 }
1221 }
1222 }
1223}
$arParams
Определения access_dialog.php:21
global $APPLICATION
Определения include.php:80
$arResult
Определения generate_coupon.php:16
static AutoSubscribe($userID, $entityType, $entityID)
Определения log_events.php:231
static GetEventSite($userID, $event, $defSiteID)
Определения user_events.php:156
static OnBeforeConfirmNotify($module, $tag, $value, $arParams)
Определения user_relations.php:1203
static __SpeedFileDelete($userID)
Определения user_relations.php:1170
static Delete($ID)
Определения user_relations.php:86
static GetRelatedUsers($userID, $relation, $arNavStartParams=false, $bActiveOnly="N")
Определения user_relations.php:215
static SpeedFileExists($userID)
Определения user_relations.php:1187
static GetByID($ID)
Определения user_relations.php:173
static ConfirmRequestToBeFriend($senderUserID, $relationID, $bAutoSubscribe=true)
Определения user_relations.php:665
static __SpeedFileCheckMessages($userID)
Определения user_relations.php:1126
static CheckFields($ACTION, &$arFields, $ID=0)
Определения user_relations.php:12
static BanUser($senderUserID, $targetUserID)
Определения user_relations.php:935
static GetRelation($firstUserID, $secondUserID)
Определения user_relations.php:256
static UnBanMember($senderUserID, $relationID)
Определения user_relations.php:1063
static SendRequestToBeFriend($senderUserID, $targetUserID, $message)
Определения user_relations.php:537
static SendEvent($relationID, $mailType="INVITE_FRIEND")
Определения user_relations.php:470
static IsFriends2($firstUserID, $secondUserID)
Определения user_relations.php:401
static RejectRequestToBeFriend($senderUserID, $relationID)
Определения user_relations.php:779
static IsFriends($firstUserID, $secondUserID)
Определения user_relations.php:355
static GetByUserID($user1ID, $user2ID)
Определения user_relations.php:191
static DeleteNoDemand($userID)
Определения user_relations.php:136
static __SpeedFileCreate($userID)
Определения user_relations.php:1148
static DeleteRelation($senderUserID, $targetUserID)
Определения user_relations.php:852
Определения event.php:13
static Add($arFields)
Определения messages.php:10
static OnUserRelationsChange($user_id)
Определения search.php:47
static Add($arFields)
Определения user_relations.php:10
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения user_relations.php:156
static GetRelationsTop($userID, $number=100)
Определения user_relations.php:428
static Update($ID, $arFields)
Определения user_relations.php:74
global $CACHE_MANAGER
Определения clear_component_cache.php:7
$arFields
Определения dblapprove.php:5
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
if($ajaxMode) $ID
Определения get_user.php:27
while($arParentIBlockProperty=$dbParentIBlockProperty->Fetch()) $errorMessage
const IM_MESSAGE_SYSTEM
Определения include.php:21
const IM_NOTIFY_CONFIRM
Определения include.php:36
const IM_NOTIFY_FROM
Определения include.php:37
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
$siteID
Определения cron_frame.php:12
$ACTION
Определения csv_new_setup.php:27
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
IsModuleInstalled($module_id)
Определения tools.php:5301
htmlspecialcharsEx($str)
Определения tools.php:2685
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
is_set($a, $k=false)
Определения tools.php:2133
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$message
Определения payment.php:8
$event
Определения prolog_after.php:141
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
const SONET_ENTITY_USER
Определения include.php:118
global $arSocNetAllowedRelations
Определения include.php:108
const SONET_RELATIONS_FRIEND
Определения include.php:24
const SONET_RELATIONS_REQUEST
Определения include.php:25
const SONET_RELATIONS_TYPE_FRIENDS2
Определения include.php:40
const SONET_MESSAGE_SYSTEM
Определения include.php:47
const SONET_RELATIONS_BAN
Определения include.php:26
const SITE_ID
Определения sonet_set_content_view.php:12
$GLOBALS['_____370096793']
Определения update_client.php:1
$dbResult
Определения updtr957.php:3
$url
Определения iframe.php:7