3require_once(
$_SERVER[
"DOCUMENT_ROOT"].
"/bitrix/modules/socialnetwork/classes/general/user_group.php");
15 public static function Add(
$arFields,
bool $skipCheckFields =
false,
bool $skipStatistics =
false,
bool $delayEvents =
false)
23 if (!$skipCheckFields && !self::CheckFields(
"ADD",
$arFields))
28 $db_events =
GetModuleEvents(
"socialnetwork",
"OnBeforeSocNetUserToGroupAdd");
29 while ($arEvent = $db_events->Fetch())
37 $arInsert =
$DB->PrepareInsert(
"b_sonet_user2group",
$arFields);
42 if ($arInsert[0] <>
'')
45 $tableFields =
$connection->getTableFields(
'b_sonet_user2group');
46 foreach (
$arFields as $columnName => $columnValue)
48 if (array_key_exists($columnName, $tableFields))
50 $queryFields[$columnName] = $columnValue;
54 $insert = $queryFields;
55 $insert[
'DATE_CREATE'] = (new \Bitrix\Main\Type\DateTime());
56 $insert[
'DATE_UPDATE'] = $insert[
'DATE_CREATE'];
57 $update = $queryFields;
58 $update[
'DATE_UPDATE'] = $insert[
'DATE_CREATE'];
59 $merge = $helper->prepareMerge(
'b_sonet_user2group', [
'USER_ID',
'GROUP_ID'], $insert, $update);
64 $strSql =
"SELECT ID FROM b_sonet_user2group WHERE USER_ID = "
66 $ar =
$DB->Query($strSql)->Fetch();
80 while ($arEvent = $events->Fetch())
96 'INITIATED_BY_TYPE' =>
$arFields[
'INITIATED_BY_TYPE'],
106 && (
$arFields[
'SEND_MAIL'] ??
null) !==
'N'
110 self::SendEvent(
$ID);
118 if (defined(
"BX_COMP_MANAGED_CACHE"))
126 'GROUP_ID' => (
int)
$arFields[
'GROUP_ID'],
129 'INITIATED_BY_TYPE' =>
$arFields[
'INITIATED_BY_TYPE'],
130 'RELATION_ID' =>
$ID,
141 if (!CSocNetGroup::__ValidateID(
$ID))
146 $arUser2GroupOld = self::GetByID(
$ID);
147 if (!$arUser2GroupOld)
160 $db_events =
GetModuleEvents(
"socialnetwork",
"OnBeforeSocNetUserToGroupUpdate");
161 while ($arEvent = $db_events->Fetch())
169 $strUpdate =
$DB->PrepareUpdate(
"b_sonet_user2group",
$arFields);
172 if ($strUpdate <>
'')
175 "UPDATE b_sonet_user2group SET ".
177 "WHERE ID = ".$ID.
" ";
180 CSocNetGroup::SetStat($arUser2GroupOld[
"GROUP_ID"]);
184 && $arUser2GroupOld[
"GROUP_ID"] !=
$arFields[
"GROUP_ID"]
187 CSocNetGroup::SetStat(
$arFields[
"GROUP_ID"]);
190 $events =
GetModuleEvents(
"socialnetwork",
"OnSocNetUserToGroupUpdate");
191 while ($arEvent = $events->Fetch())
197 'GROUP_ID' => $arUser2GroupOld[
'GROUP_ID'],
198 'USER_ID' => $arUser2GroupOld[
'USER_ID'],
199 'OLD_ROLE' => $arUser2GroupOld[
'ROLE'] ??
null,
200 'OLD_INITIATED_BY_TYPE' => $arUser2GroupOld[
'INITIATED_BY_TYPE'] ??
null,
207 'GROUP_ID' => $arUser2GroupOld[
'GROUP_ID'],
208 'USER_ID' => $arUser2GroupOld[
'USER_ID'],
212 if (array_key_exists($arUser2GroupOld[
"USER_ID"].
"_".$arUser2GroupOld[
"GROUP_ID"], self::$roleCache))
214 unset(self::$roleCache[$arUser2GroupOld[
"USER_ID"].
"_".$arUser2GroupOld[
"GROUP_ID"]]);
217 if(defined(
"BX_COMP_MANAGED_CACHE"))
219 $CACHE_MANAGER->ClearByTag(
"sonet_user2group_G".$arUser2GroupOld[
"GROUP_ID"]);
220 $CACHE_MANAGER->ClearByTag(
"sonet_user2group_U".$arUser2GroupOld[
"USER_ID"]);
225 'GROUP_ID' => (
int)(
$arFields[
'GROUP_ID'] ?? $arUser2GroupOld[
'GROUP_ID']),
226 'USER_ID' => (
int)(
$arFields[
'USER_ID'] ?? $arUser2GroupOld[
'USER_ID']),
227 'ROLE_OLD' => $arUser2GroupOld[
'ROLE'],
228 'ROLE_NEW' => (
$arFields[
'ROLE'] ??
null),
229 'INITIATED_BY_TYPE' => (
$arFields[
'INITIATED_BY_TYPE'] ?? $arUser2GroupOld[
'INITIATED_BY_TYPE']),
230 'RELATION_ID' => $arUser2GroupOld[
'USER_ID'],
244 public static function GetList($arOrder = Array(
"ID" =>
"DESC"),
$arFilter = Array(), $arGroupBy =
false, $arNavStartParams =
false, $arSelectFields =
array())
250 if (
count($arSelectFields) <= 0)
252 $arSelectFields =
array(
"ID",
"USER_ID",
"GROUP_ID",
"ROLE",
"AUTO_MEMBER",
"DATE_CREATE",
"DATE_UPDATE",
"INITIATED_BY_TYPE",
"INITIATED_BY_USER_ID",
"MESSAGE");
256 array_key_exists(
"ONLINE_INTERVAL",
$arFilter)
262 static $arFields1 =
array(
263 "ID" => Array(
"FIELD" =>
"UG.ID",
"TYPE" =>
"int"),
264 "USER_ID" => Array(
"FIELD" =>
"UG.USER_ID",
"TYPE" =>
"int"),
265 "GROUP_ID" => Array(
"FIELD" =>
"UG.GROUP_ID",
"TYPE" =>
"int"),
266 "ROLE" => Array(
"FIELD" =>
"UG.ROLE",
"TYPE" =>
"string"),
267 "AUTO_MEMBER" => Array(
"FIELD" =>
"UG.AUTO_MEMBER",
"TYPE" =>
"string"),
268 "DATE_CREATE" => Array(
"FIELD" =>
"UG.DATE_CREATE",
"TYPE" =>
"datetime"),
269 "DATE_UPDATE" => Array(
"FIELD" =>
"UG.DATE_UPDATE",
"TYPE" =>
"datetime"),
270 "INITIATED_BY_TYPE" => Array(
"FIELD" =>
"UG.INITIATED_BY_TYPE",
"TYPE" =>
"string"),
271 "INITIATED_BY_USER_ID" => Array(
"FIELD" =>
"UG.INITIATED_BY_USER_ID",
"TYPE" =>
"int"),
272 "MESSAGE" => Array(
"FIELD" =>
"UG.MESSAGE",
"TYPE" =>
"string"),
273 "GROUP_NAME" => Array(
"FIELD" =>
"G.NAME",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_sonet_group G ON (UG.GROUP_ID = G.ID)"),
274 "GROUP_DESCRIPTION" => Array(
"FIELD" =>
"G.DESCRIPTION",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_sonet_group G ON (UG.GROUP_ID = G.ID)"),
275 "GROUP_ACTIVE" => Array(
"FIELD" =>
"G.ACTIVE",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_sonet_group G ON (UG.GROUP_ID = G.ID)"),
276 "GROUP_PROJECT" => Array(
"FIELD" =>
"G.PROJECT",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_sonet_group G ON (UG.GROUP_ID = G.ID)"),
277 "GROUP_IMAGE_ID" => Array(
"FIELD" =>
"G.IMAGE_ID",
"TYPE" =>
"int",
"FROM" =>
"INNER JOIN b_sonet_group G ON (UG.GROUP_ID = G.ID)"),
278 "GROUP_VISIBLE" => Array(
"FIELD" =>
"G.VISIBLE",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_sonet_group G ON (UG.GROUP_ID = G.ID)"),
279 "GROUP_OWNER_ID" => Array(
"FIELD" =>
"G.OWNER_ID",
"TYPE" =>
"int",
"FROM" =>
"INNER JOIN b_sonet_group G ON (UG.GROUP_ID = G.ID)"),
280 "GROUP_INITIATE_PERMS" => Array(
"FIELD" =>
"G.INITIATE_PERMS",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_sonet_group G ON (UG.GROUP_ID = G.ID)"),
281 "GROUP_OPENED" => Array(
"FIELD" =>
"G.OPENED",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_sonet_group G ON (UG.GROUP_ID = G.ID)"),
282 "GROUP_NUMBER_OF_MEMBERS" => Array(
"FIELD" =>
"G.NUMBER_OF_MEMBERS",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_sonet_group G ON (UG.GROUP_ID = G.ID)"),
283 "GROUP_DATE_ACTIVITY" => Array(
"FIELD" =>
"G.DATE_ACTIVITY",
"TYPE" =>
"datetime",
"FROM" =>
"INNER JOIN b_sonet_group G ON (UG.GROUP_ID = G.ID)"),
284 "GROUP_CLOSED" => Array(
"FIELD" =>
"G.CLOSED",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_sonet_group G ON (UG.GROUP_ID = G.ID)"),
285 "GROUP_LANDING" => Array(
"FIELD" =>
"G.LANDING",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_sonet_group G ON (UG.GROUP_ID = G.ID)"),
286 "USER_ACTIVE" => Array(
"FIELD" =>
"U.ACTIVE",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UG.USER_ID = U.ID)"),
287 "USER_NAME" => Array(
"FIELD" =>
"U.NAME",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UG.USER_ID = U.ID)"),
288 "USER_LAST_NAME" => Array(
"FIELD" =>
"U.LAST_NAME",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UG.USER_ID = U.ID)"),
289 "USER_SECOND_NAME" => Array(
"FIELD" =>
"U.SECOND_NAME",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UG.USER_ID = U.ID)"),
290 "USER_WORK_POSITION" => Array(
"FIELD" =>
"U.WORK_POSITION",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UG.USER_ID = U.ID)"),
291 "USER_LOGIN" => Array(
"FIELD" =>
"U.LOGIN",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UG.USER_ID = U.ID)"),
292 "USER_EMAIL" => Array(
"FIELD" =>
"U.EMAIL",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UG.USER_ID = U.ID)"),
293 "USER_CONFIRM_CODE" => Array(
"FIELD" =>
"U.CONFIRM_CODE",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UG.USER_ID = U.ID)"),
294 "USER_PERSONAL_PHOTO" => Array(
"FIELD" =>
"U.PERSONAL_PHOTO",
"TYPE" =>
"int",
"FROM" =>
"INNER JOIN b_user U ON (UG.USER_ID = U.ID)"),
295 "USER_PERSONAL_GENDER" => Array(
"FIELD" =>
"U.PERSONAL_GENDER",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UG.USER_ID = U.ID)"),
296 "USER_LID" => Array(
"FIELD" =>
"U.LID",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_user U ON (UG.USER_ID = U.ID)"),
297 "INITIATED_BY_USER_NAME" => Array(
"FIELD" =>
"U1.NAME",
"TYPE" =>
"string",
"FROM" =>
"LEFT JOIN b_user U1 ON (UG.INITIATED_BY_USER_ID = U1.ID)"),
298 "INITIATED_BY_USER_LAST_NAME" => Array(
"FIELD" =>
"U1.LAST_NAME",
"TYPE" =>
"string",
"FROM" =>
"LEFT JOIN b_user U1 ON (UG.INITIATED_BY_USER_ID = U1.ID)"),
299 "INITIATED_BY_USER_SECOND_NAME" => Array(
"FIELD" =>
"U1.SECOND_NAME",
"TYPE" =>
"string",
"FROM" =>
"LEFT JOIN b_user U1 ON (UG.INITIATED_BY_USER_ID = U1.ID)"),
300 "INITIATED_BY_USER_LOGIN" => Array(
"FIELD" =>
"U1.LOGIN",
"TYPE" =>
"string",
"FROM" =>
"LEFT JOIN b_user U1 ON (UG.INITIATED_BY_USER_ID = U1.ID)"),
301 "INITIATED_BY_USER_EMAIL" => Array(
"FIELD" =>
"U1.EMAIL",
"TYPE" =>
"string",
"FROM" =>
"LEFT JOIN b_user U1 ON (UG.INITIATED_BY_USER_ID = U1.ID)"),
302 "INITIATED_BY_USER_PHOTO" => Array(
"FIELD" =>
"U1.PERSONAL_PHOTO",
"TYPE" =>
"int",
"FROM" =>
"LEFT JOIN b_user U1 ON (UG.INITIATED_BY_USER_ID = U1.ID)"),
303 "INITIATED_BY_USER_GENDER" => Array(
"FIELD" =>
"U1.PERSONAL_GENDER",
"TYPE" =>
"string",
"FROM" =>
"LEFT JOIN b_user U1 ON (UG.INITIATED_BY_USER_ID = U1.ID)"),
304 "SCRUM_OWNER_ID" => Array(
"FIELD" =>
"G.SCRUM_OWNER_ID",
"TYPE" =>
"int"),
305 "GROUP_SCRUM_MASTER_ID" => [
'FIELD' =>
'G.SCRUM_MASTER_ID',
'TYPE' =>
'int' ],
306 'GROUP_TYPE' => [
'FIELD' =>
'G.TYPE',
'TYPE' =>
'string'],
308 $arFields1[
'RAND'] = Array(
"FIELD" => $helper->getRandomFunction(),
"TYPE" =>
"string");
309 $arFields[
"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 (UG.USER_ID = U.ID)");
311 if (array_key_exists(
"GROUP_SITE_ID",
$arFilter))
313 $arFields[
"GROUP_SITE_ID"] = Array(
"FIELD" =>
"SGS.SITE_ID",
"TYPE" =>
"string",
"FROM" =>
"LEFT JOIN b_sonet_group_site SGS ON UG.GROUP_ID = SGS.GROUP_ID");
314 $strDistinct =
" DISTINCT ";
315 foreach ($arSelectFields as
$i => $strFieldTmp)
317 if ($strFieldTmp ===
"GROUP_SITE_ID")
319 unset($arSelectFields[
$i]);
323 foreach ($arOrder as $by =>
$order)
325 if (!in_array($by, $arSelectFields))
327 $arSelectFields[] = $by;
333 $arFields[
"GROUP_SITE_ID"] = Array(
"FIELD" =>
"G.SITE_ID",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_sonet_group G ON (UG.GROUP_ID = G.ID)");
338 $arSqls = CSocNetGroup::PrepareSql(
$arFields, $arOrder,
$arFilter, $arGroupBy, $arSelectFields);
339 $arSqls[
"SELECT"] = str_replace(
"%%_DISTINCT_%%", $strDistinct, $arSqls[
"SELECT"]);
341 if (is_array($arGroupBy) &&
count($arGroupBy)==0)
344 "SELECT ".$arSqls[
"SELECT"].
" ".
345 "FROM b_sonet_user2group UG ".
346 " ".$arSqls[
"FROM"].
" ";
347 if ($arSqls[
"WHERE"] <>
'')
349 $strSql .=
"WHERE " . $arSqls[
"WHERE"] .
" ";
351 if ($arSqls[
"GROUPBY"] <>
'')
353 $strSql .=
"GROUP BY " . $arSqls[
"GROUPBY"] .
" ";
363 "SELECT ".$arSqls[
"SELECT"].
" ".
364 "FROM b_sonet_user2group UG ".
365 " ".$arSqls[
"FROM"].
" ";
366 if ($arSqls[
"WHERE"] <>
'')
368 $strSql .=
"WHERE " . $arSqls[
"WHERE"] .
" ";
370 if ($arSqls[
"GROUPBY"] <>
'')
372 $strSql .=
"GROUP BY " . $arSqls[
"GROUPBY"] .
" ";
374 if ($arSqls[
"ORDERBY"] <>
'')
376 $strSql .=
"ORDER BY " . $arSqls[
"ORDERBY"] .
" ";
380 is_array($arNavStartParams)
381 && (
int)($arNavStartParams[
"nTopCount"] ?? 0) <= 0
385 "SELECT COUNT('x') as CNT ".
386 "FROM b_sonet_user2group UG ".
387 " ".$arSqls[
"FROM"].
" ";
388 if ($arSqls[
"WHERE"] <>
'')
389 $strSql_tmp .=
"WHERE ".$arSqls[
"WHERE"].
" ";
390 if ($arSqls[
"GROUPBY"] <>
'')
391 $strSql_tmp .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
397 if ($arSqls[
"GROUPBY"] ==
'')
407 $cnt =
$dbRes->SelectedRowsCount();
414 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
419 is_array($arNavStartParams)
420 && intval($arNavStartParams[
"nTopCount"]) > 0
423 $strSql .=
"LIMIT ".intval($arNavStartParams[
"nTopCount"]);
static getConnection($name="")
static isModuleInstalled($moduleName)
static addEvent(string $type, array $data)
const EVENT_WORKGROUP_USER_UPDATE
const EVENT_WORKGROUP_USER_ADD
const EVENT_SPACE_USER_ROLE_CHANGE
static addEvent(string $type, array $data)
static processEqualityFieldsToUpdate($fields1, &$update)
static getEqualityFields(&$fields)
static processEqualityFieldsToInsert($fields1, &$insert)
static OnUserRelationsChange($user_id)
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
static Update($ID, $arFields)
static Add($arFields, bool $skipCheckFields=false, bool $skipStatistics=false, bool $delayEvents=false)
</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=[])
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
GetMessage($name, $aReplace=null)
</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_INITIATED_BY_GROUP