3require_once(
$_SERVER[
"DOCUMENT_ROOT"].
"/bitrix/modules/socialnetwork/classes/general/user_relations.php");
21 $db_events =
GetModuleEvents(
"socialnetwork",
"OnBeforeSocNetUserRelationsAdd");
22 while ($arEvent = $db_events->Fetch())
30 $arInsert =
$DB->PrepareInsert(
"b_sonet_user_relations",
$arFields);
31 $strUpdate =
$DB->PrepareUpdate(
"b_sonet_user_relations",
$arFields);
37 if ($arInsert[0] <>
'')
40 "INSERT INTO b_sonet_user_relations(".$arInsert[0].
") ".
41 "VALUES(".$arInsert[1].
")
42 ON DUPLICATE KEY UPDATE ".$strUpdate;
49 while ($arEvent = $events->Fetch())
60 $mailType =
"INVITE_FRIEND";
62 $mailType =
"BAN_FRIEND";
80 if (!CSocNetGroup::__ValidateID(
$ID))
92 $db_events =
GetModuleEvents(
"socialnetwork",
"OnBeforeSocNetUserRelationsUpdate");
93 while ($arEvent = $db_events->Fetch())
103 $strUpdate =
$DB->PrepareUpdate(
"b_sonet_user_relations",
$arFields);
106 if ($strUpdate <>
'')
109 "UPDATE b_sonet_user_relations SET ".
111 "WHERE ID = ".$ID.
" ";
114 $events =
GetModuleEvents(
"socialnetwork",
"OnSocNetUserRelationsUpdate");
115 while ($arEvent = $events->Fetch())
119 (!array_key_exists(
"SEND_MAIL",
$arFields)
127 $mailType =
"AGREE_FRIEND";
131 $mailType =
"BAN_FRIEND";
135 $mailType =
"INVITE_FRIEND";
156 public static function GetList($arOrder = Array(
"ID" =>
"DESC"),
$arFilter = Array(), $arGroupBy =
false, $arNavStartParams =
false, $arSelectFields =
array())
162 if (
count($arSelectFields) <= 0)
164 $arSelectFields =
array(
"ID",
"FIRST_USER_ID",
"SECOND_USER_ID",
"RELATION",
"DATE_CREATE",
"DATE_UPDATE",
"MESSAGE",
"INITIATED_BY");
167 $online_interval = (array_key_exists(
"ONLINE_INTERVAL",
$arFilter) && intval(
$arFilter[
"ONLINE_INTERVAL"]) > 0 ?
$arFilter[
"ONLINE_INTERVAL"] : 120);
170 "ID" => Array(
"FIELD" =>
"UR.ID",
"TYPE" =>
"int"),
171 "FIRST_USER_ID" => Array(
"FIELD" =>
"UR.FIRST_USER_ID",
"TYPE" =>
"int"),
172 "SECOND_USER_ID" => Array(
"FIELD" =>
"UR.SECOND_USER_ID",
"TYPE" =>
"int"),
173 "RELATION" => Array(
"FIELD" =>
"UR.RELATION",
"TYPE" =>
"string"),
174 "DATE_CREATE" => Array(
"FIELD" =>
"UR.DATE_CREATE",
"TYPE" =>
"datetime"),
175 "DATE_UPDATE" => Array(
"FIELD" =>
"UR.DATE_UPDATE",
"TYPE" =>
"datetime"),
176 "MESSAGE" => Array(
"FIELD" =>
"UR.MESSAGE",
"TYPE" =>
"string"),
177 "INITIATED_BY" => Array(
"FIELD" =>
"UR.INITIATED_BY",
"TYPE" =>
"string"),
178 "FIRST_USER_NAME" => Array(
"FIELD" =>
"U.NAME",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UR.FIRST_USER_ID = U.ID)"),
179 "FIRST_USER_LAST_NAME" => Array(
"FIELD" =>
"U.LAST_NAME",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UR.FIRST_USER_ID = U.ID)"),
180 "FIRST_USER_SECOND_NAME" => Array(
"FIELD" =>
"U.SECOND_NAME",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UR.FIRST_USER_ID = U.ID)"),
181 "FIRST_USER_LOGIN" => Array(
"FIELD" =>
"U.LOGIN",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UR.FIRST_USER_ID = U.ID)"),
182 "FIRST_USER_EMAIL" => Array(
"FIELD" =>
"U.EMAIL",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UR.FIRST_USER_ID = U.ID)"),
183 "FIRST_USER_PERSONAL_PHOTO" => Array(
"FIELD" =>
"U.PERSONAL_PHOTO",
"TYPE" =>
"int",
"FROM" =>
"INNER JOIN b_user U ON (UR.FIRST_USER_ID = U.ID)"),
184 "FIRST_USER_PERSONAL_GENDER" => Array(
"FIELD" =>
"U.PERSONAL_GENDER",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UR.FIRST_USER_ID = U.ID)"),
185 "FIRST_USER_LID" => Array(
"FIELD" =>
"U.LID",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UR.FIRST_USER_ID = U.ID)"),
186 "SECOND_USER_NAME" => Array(
"FIELD" =>
"U1.NAME",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U1 ON (UR.SECOND_USER_ID = U1.ID)"),
187 "SECOND_USER_LAST_NAME" => Array(
"FIELD" =>
"U1.LAST_NAME",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U1 ON (UR.SECOND_USER_ID = U1.ID)"),
188 "SECOND_USER_SECOND_NAME" => Array(
"FIELD" =>
"U1.SECOND_NAME",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U1 ON (UR.SECOND_USER_ID = U1.ID)"),
189 "SECOND_USER_LOGIN" => Array(
"FIELD" =>
"U1.LOGIN",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U1 ON (UR.SECOND_USER_ID = U1.ID)"),
190 "SECOND_USER_EMAIL" => Array(
"FIELD" =>
"U1.EMAIL",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U1 ON (UR.SECOND_USER_ID = U1.ID)"),
191 "SECOND_USER_PERSONAL_PHOTO" => Array(
"FIELD" =>
"U1.PERSONAL_PHOTO",
"TYPE" =>
"int",
"FROM" =>
"INNER JOIN b_user U1 ON (UR.SECOND_USER_ID = U1.ID)"),
192 "SECOND_USER_PERSONAL_GENDER" => Array(
"FIELD" =>
"U1.PERSONAL_GENDER",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U1 ON (UR.SECOND_USER_ID = U1.ID)"),
193 "SECOND_USER_LID" => Array(
"FIELD" =>
"U1.LID",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U1 ON (UR.SECOND_USER_ID = U1.ID)"),
195 $arFields[
"FIRST_USER_IS_ONLINE"] = Array(
"FIELD" =>
"CASE WHEN U.LAST_ACTIVITY_DATE > " . $helper->addSecondsToDateTime(-$online_interval) .
" THEN 'Y' ELSE 'N' END",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UR.FIRST_USER_ID = U.ID)");
196 $arFields[
"SECOND_USER_IS_ONLINE"] = Array(
"FIELD" =>
"CASE WHEN U1.LAST_ACTIVITY_DATE > " . $helper->addSecondsToDateTime(-$online_interval) .
" THEN 'Y' ELSE 'N' END",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U1 ON (UR.SECOND_USER_ID = U1.ID)");
197 $arFields[
"RAND"] = Array(
"FIELD" => $helper->getRandomFunction(),
"TYPE" =>
"string");
201 $arFields[
"FIRST_USER_IS_ACTIVE"] = Array(
"FIELD" =>
"U.ACTIVE",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UR.FIRST_USER_ID = U.ID)");
202 $arFields[
"SECOND_USER_IS_ACTIVE"] = Array(
"FIELD" =>
"U1.ACTIVE",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U1 ON (UR.SECOND_USER_ID = U1.ID)");
204 $arFilter[
"SECOND_USER_IS_ACTIVE"] =
"Y";
220 $key = (array_key_exists(
"USER_ID",
$arFilter) ?
"USER_ID" :
"!USER_ID");
227 if (
$key ===
"USER_ID")
229 $arFilter2[
"SECOND_USER_ID"] = $filterVal;
233 $arFilter2[
"!SECOND_USER_ID"] = $filterVal;
236 $arSqls2 = CSocNetGroup::PrepareSql(
$arFields, $arOrder, $arFilter2, $arGroupBy, $arSelectFields);
238 if (
$key ===
"USER_ID")
244 $arFilter[
"!FIRST_USER_ID"] = $filterVal;
248 $arSqls = CSocNetGroup::PrepareSql(
$arFields, $arOrder,
$arFilter, $arGroupBy, $arSelectFields);
250 $arSqls[
"SELECT"] = str_replace(
"%%_DISTINCT_%%",
"", $arSqls[
"SELECT"]);
254 &&
count($arGroupBy) == 0
259 && $arSqls2[
"WHERE"] <>
''
262 $strSql =
"SELECT COUNT(*) AS CNT FROM (";
266 "FROM b_sonet_user_relations UR ".
267 " ".$arSqls[
"FROM"].
" ".
268 "WHERE ".$arSqls[
"WHERE"].
" ".
271 "FROM b_sonet_user_relations UR ".
272 " ".$arSqls[
"FROM"].
" ".
273 "WHERE ".$arSqls2[
"WHERE"].
" ";
275 if ($arSqls[
"GROUPBY"] <>
'')
277 $strSql .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
280 $strSql .=
") AS RELS";
285 "SELECT ".$arSqls[
"SELECT"].
" ".
286 "FROM b_sonet_user_relations UR ".
287 " ".$arSqls[
"FROM"].
" ";
289 if ($arSqls[
"WHERE"] <>
'')
291 $strSql .=
"WHERE ".$arSqls[
"WHERE"].
" ";
294 if ($arSqls[
"GROUPBY"] <>
'')
296 $strSql .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
310 "SELECT ".$arSqls[
"SELECT"].
" ".
311 "FROM b_sonet_user_relations UR ".
312 " ".$arSqls[
"FROM"].
" ";
313 if ($arSqls[
"WHERE"] <>
'')
315 $strSql .=
"WHERE ".$arSqls[
"WHERE"].
" ";
317 if ($arSqls[
"ORDERBY"] <>
'')
319 $strSql .=
"ORDER BY ".$arSqls[
"ORDERBY"].
" ";
324 && $arSqls2[
"WHERE"] <>
''
327 $strSql =
"(".$strSql.
") ";
330 "SELECT ".$arSqls[
"SELECT"].
" ".
331 "FROM b_sonet_user_relations UR ".
332 " ".$arSqls[
"FROM"].
" ".
333 "WHERE ".$arSqls2[
"WHERE"].
" ";
335 if ($arSqls2[
"ORDERBY"] <>
'')
337 $strSql .=
"ORDER BY ".$arSqls2[
"ORDERBY"].
" ";
342 if ($arSqls[
"GROUPBY"] <>
'')
344 $strSql .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
347 if (is_array($arNavStartParams) && intval($arNavStartParams[
"nTopCount"]) <= 0)
350 "SELECT COUNT('x') as CNT ".
351 "FROM b_sonet_user_relations UR ".
352 " ".$arSqls[
"FROM"].
" ";
353 if ($arSqls[
"WHERE"] <>
'')
354 $strSql_tmp .=
"WHERE ".$arSqls[
"WHERE"].
" ";
355 if ($arSqls[
"GROUPBY"] <>
'')
356 $strSql_tmp .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
362 if ($arSqls[
"GROUPBY"] ==
'')
371 $cnt =
$dbRes->SelectedRowsCount();
378 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
382 if (is_array($arNavStartParams) && (
int)$arNavStartParams[
"nTopCount"] > 0)
384 $strSql .=
"LIMIT " . (int)$arNavStartParams[
"nTopCount"];
401 $userID = (int)$userID;
402 $number = (int)$number;
407 "SELECT U.ID, U.NAME, U.LAST_NAME, U.SECOND_NAME, U.LOGIN, U.EMAIL, U.PERSONAL_PHOTO, U.PERSONAL_GENDER, U.PERSONAL_BIRTHDAY as PB, ".
408 " CASE WHEN U.LAST_ACTIVITY_DATE > " . $helper->addSecondsToDateTime(-$online_interval) .
" THEN 'Y' ELSE 'N' END IS_ONLINE ".
409 "FROM b_sonet_user_relations UR ".
410 " INNER JOIN b_user U ON (UR.FIRST_USER_ID = U.ID) ".
411 "WHERE UR.SECOND_USER_ID = ".$userID.
" ".
414 "SELECT U.ID, U.NAME, U.LAST_NAME, U.SECOND_NAME, U.LOGIN, U.EMAIL, U.PERSONAL_PHOTO, U.PERSONAL_GENDER, U.PERSONAL_BIRTHDAY as PB, ".
415 " CASE WHEN U.LAST_ACTIVITY_DATE > " . $helper->addSecondsToDateTime(-$online_interval) .
" THEN 'Y' ELSE 'N' END IS_ONLINE ".
416 "FROM b_sonet_user_relations UR ".
417 " INNER JOIN b_user U ON (UR.SECOND_USER_ID = U.ID) ".
418 "WHERE UR.FIRST_USER_ID = ".$userID.
" ".
420 "ORDER BY CASE WHEN " . $helper->formatDate(
$curYear .
'-MM-DD',
'PB') .
" < " . $helper->formatDate(
'YYYY-MM-DD',
'CURDATE()') .
" ".
421 " THEN " . $helper->formatDate((
$curYear + 1) .
'-MM-DD',
'PB') .
" ".
422 " ELSE " . $helper->formatDate(
$curYear .
'-MM-DD',
'PB') .
" END".
423 ($number > 0 ?
"LIMIT ".$number.
"" :
"");
425 return $DB->Query($strSql);
432 $userID = (int)$userID;
433 $number = (int)$number;
436 "SELECT UR.RELATION, UR.FIRST_USER_ID, UR.SECOND_USER_ID ".
437 "FROM b_sonet_user_relations UR ".
438 "WHERE UR.FIRST_USER_ID = ".$userID.
" ".
440 "SELECT UR.RELATION, UR.FIRST_USER_ID, UR.SECOND_USER_ID ".
441 "FROM b_sonet_user_relations UR ".
442 "WHERE UR.SECOND_USER_ID = ".$userID.
" ".
443 ($number > 0 ?
"LIMIT ".$number :
"");
445 return $DB->Query($strSql);
static getConnection($name="")
static processEqualityFieldsToUpdate($fields1, &$update)
static getEqualityFields(&$fields)
static processEqualityFieldsToInsert($fields1, &$insert)
static CheckFields($ACTION, &$arFields, $ID=0)
static SendEvent($relationID, $mailType="INVITE_FRIEND")
static OnUserRelationsChange($user_id)
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
static GetRelationsTop($userID, $number=100)
static GetListBirthday($userID, $number=5, $online_interval=120)
static Update($ID, $arFields)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
$_SERVER["DOCUMENT_ROOT"]
ExecuteModuleEventEx($arEvent, $arParams=[])
IsModuleInstalled($module_id)
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
for($i=1; $i<=12; $i++) $curYear
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</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."%"
const SONET_RELATIONS_FRIEND
const SONET_RELATIONS_REQUEST
const SONET_RELATIONS_BAN