14use Bitrix\Socialnetwork\Item\Workgroup\AvatarType;
15use Bitrix\Socialnetwork\Item\Workgroup\Type;
17use Bitrix\Tasks\Util\Restriction\Bitrix24Restriction\Limit\ProjectLimit;
18use Bitrix\Tasks\Util\Restriction\Bitrix24Restriction\Limit\ScrumLimit;
19use Bitrix\Tasks\Control\Tag;
35 $APPLICATION->ThrowException(
"System error 870164",
"ERROR");
62 $r = CSite::GetByID($v);
65 $APPLICATION->ThrowException(str_replace(
"#ID#", $v,
GetMessage(
"SONET_GG_ERROR_NO_SITE")),
"ERROR_NO_SITE");
134 && (
$arFields[
"VISIBLE"] ??
null) !==
"Y"
135 && (
$arFields[
"VISIBLE"] ??
null) !==
"N"
167 $APPLICATION->ThrowException(str_replace(
"#ID#",
$arFields[
"INITIATE_PERMS"],
GetMessage(
"SONET_UG_ERROR_NO_INITIATE_PERMS")),
"ERROR_NO_INITIATE_PERMS");
186 && (
$arFields[
"IMAGE_ID"][
"name"] ??
'') ==
''
187 && ((
$arFields[
"IMAGE_ID"][
"del"] ??
null) ==
'' ||
$arFields[
"IMAGE_ID"][
"del"] !==
"Y")
203 $avatarType =
$arFields[
'AVATAR_TYPE'] ??
null;
206 && !array_key_exists(
$arFields[
'AVATAR_TYPE'], Workgroup::getAvatarTypes())
212 $canSetEmptyAvatarType =
213 (
$arFields[
'TYPE'] ??
null) === Type::Collab->value
214 && $avatarType === AvatarType::None->value
217 if ($canSetEmptyAvatarType)
234 $isCollab =
$arFields[
'TYPE'] === Bitrix\Socialnetwork\Item\Workgroup\Type::Collab->value;
235 $isCheckNameNeeded = $isCollab || (Option::get(
'socialnetwork',
'check_group_name_enable',
'Y') ===
'Y');
237 if ($isCheckNameNeeded)
239 $groupProvider = Bitrix\Socialnetwork\Provider\GroupProvider::getInstance();
241 if ($groupProvider->isExistingGroup(
$arFields[
'NAME'],
$ID))
243 $APPLICATION->ThrowException(
GetMessage(
"SONET_ERROR_SAME_GROUP_NAME_EXISTS"),
'ERROR_GROUP_NAME_EXISTS');
258 $APPLICATION->ThrowException(
'Wrong type',
'WRONG_GROUP_TYPE');
265 if (!is_string(
$arFields[
'KEYWORDS'] ??
''))
284 $db_events =
GetModuleEvents(
"socialnetwork",
"OnBeforeSocNetGroupDelete");
285 while ($arEvent = $db_events->Fetch())
293 $queryObject = \Bitrix\Socialnetwork\WorkgroupTable::getList([
294 'filter' => [
'ID' =>
$ID],
295 'select' => [
'IMAGE_ID',
'NAME',
'PROJECT',
'TYPE'],
297 $arGroup = $queryObject->fetch();
304 $isCollab = $arGroup[
'TYPE'] === Type::Collab->value;
306 $DB->StartTransaction();
309 while ($arEvent = $events->Fetch())
318 $res = UserToGroupTable::getList([
322 'select' => [
'USER_ID' ]
324 while($relationFields =
$res->fetch())
326 CSocNetSearch::onUserRelationsChange($relationFields[
'USER_ID']);
328 $bSuccess =
$DB->Query(
"DELETE FROM b_sonet_user2group WHERE GROUP_ID = ".
$ID,
true);
336 'group_name' => $arGroup[
'NAME'],
337 'group_project' => $arGroup[
'PROJECT'],
348 $bSuccessTmp =
$DB->Query(
"DELETE FROM b_sonet_features2perms WHERE FEATURE_ID = ".
$arResult[
"ID"].
"",
true);
361 $bSuccess =
$DB->Query(
"DELETE FROM b_sonet_features WHERE ENTITY_ID = ".
$ID.
" AND ENTITY_TYPE = '".
$DB->ForSql(
SONET_ENTITY_GROUP, 1).
"'",
true);
374 $bSuccessTmp =
$DB->Query(
"DELETE FROM b_sonet_log_site WHERE LOG_ID = ".
$arResult[
"ID"].
"",
true);
380 $bSuccessTmp =
$DB->Query(
"DELETE FROM b_sonet_log_right WHERE LOG_ID = ".
$arResult[
"ID"].
"",
true);
393 $bSuccess =
$DB->Query(
"DELETE FROM b_sonet_log WHERE ENTITY_TYPE = '".
SONET_ENTITY_GROUP.
"' AND ENTITY_ID = ".
$ID.
"",
true);
401 $bSuccess =
$DB->Query(
"DELETE FROM b_sonet_log_events WHERE ENTITY_TYPE = 'G' AND ENTITY_ID = ".
$ID.
"",
true);
405 $bSuccess =
$DB->Query(
"DELETE FROM b_sonet_group_site WHERE GROUP_ID = ".
$ID.
"",
true);
409 $bSuccess =
$DB->Query(
"DELETE FROM b_sonet_log_right WHERE GROUP_CODE LIKE 'OSG".
$ID.
"\_%'",
true);
413 $bSuccess =
$DB->Query(
"DELETE FROM b_sonet_log_right WHERE GROUP_CODE LIKE 'SG".
$ID.
"\_%'",
true);
417 $bSuccess =
$DB->Query(
"DELETE FROM b_sonet_log_right WHERE GROUP_CODE = 'SG".
$ID.
"'",
true);
421 $bSuccess = CSocNetSubscription::DeleteEx(
false,
"SG".
$ID);
430 CFile::Delete($arGroup[
"IMAGE_ID"]);
431 $bSuccess =
$DB->Query(
"DELETE FROM b_sonet_group WHERE ID = ".
$ID.
"",
true);
440 unset($sonetGroupCache[
$ID]);
442 GroupRegistry::getInstance()->invalidate(
$ID);
443 FeatureTable::cleanCache();
457 unset($sonetGroupCache[
$ID]);
460 if(defined(
"BX_COMP_MANAGED_CACHE"))
471 && CModule::IncludeModule(
"search")
479 $DB->Query(
"DELETE FROM b_sonet_event_user_view WHERE ENTITY_TYPE = '".
SONET_ENTITY_GROUP.
"' AND ENTITY_ID = ".
$ID,
true);
488 if ($bSuccess && $groupId > 0)
490 GroupRegistry::getInstance()->invalidate($groupId);
495 $tagService =
new Tag(0);
496 $tagService->deleteGroupTags(
$ID);
511 $userID = intval($userID);
526 $err =
GetMessage(
"SONET_GG_ERROR_CANNOT_DELETE_USER_1").$err;
527 $err .=
GetMessage(
"SONET_GG_ERROR_CANNOT_DELETE_USER_2");
533 public static function SetStat(
$ID,
int $currentUserId = 0): void
540 $num = CSocNetUserToGroup::GetList(
544 "USER_ACTIVE" =>
"Y",
550 $num_mods = CSocNetUserToGroup::GetList(
554 "USER_ACTIVE" =>
"Y",
560 CSocNetGroup::Update(
563 "NUMBER_OF_MEMBERS" => $num,
564 "NUMBER_OF_MODERATORS" => $num_mods,
565 'INITIATED_BY_USER_ID' => $currentUserId,
584 CSocNetGroup::Update(
$ID, (
586 ?
array(
"DATE_ACTIVITY" => $date)
587 :
array(
"=DATE_ACTIVITY" =>
$DB->CurrentTimeFunction())
594 if (defined(
"BX_COMP_MANAGED_CACHE"))
614 $staticCacheKey = implode(
'_', array_merge([
615 ($checkPermissions ?
'Y' :
'N'),
621 is_array($sonetGroupCache)
622 && is_array(($sonetGroupCache[$id] ??
null))
623 && is_array(($sonetGroupCache[$id][$staticCacheKey] ??
null))
626 return $sonetGroupCache[$id][$staticCacheKey];
632 if (!$checkPermissions)
635 $cacheTime = 31536000;
636 $cacheId = implode(
'_', array_merge([
640 CTimeZone::getOffset(),
641 Context::getCurrent()->getCulture()->getDateTimeFormat()
643 $cachePath =
'/sonet/group/' . $id .
'/';
648 && $cache->initCache($cacheTime, $cacheId, $cachePath)
651 $cacheVars = $cache->getVars();
652 $result = $cacheVars[
'FIELDS'];
658 $cache->startDataCache($cacheTime, $cacheId, $cachePath);
668 && (
$USER->GetID() > 0)
675 "ID",
"SITE_ID",
"NAME",
"DESCRIPTION",
"DATE_CREATE",
"DATE_UPDATE",
"ACTIVE",
"VISIBLE",
"OPENED",
"CLOSED",
"SUBJECT_ID",
"OWNER_ID",
"KEYWORDS",
676 'IMAGE_ID',
'AVATAR_TYPE',
677 "NUMBER_OF_MEMBERS",
"NUMBER_OF_MODERATORS",
678 "INITIATE_PERMS",
"SPAM_PERMS",
679 "DATE_ACTIVITY",
"SUBJECT_NAME",
'TYPE',
"UF_*",
683 $select = array_merge(
$select, [
"PROJECT",
"PROJECT_DATE_START",
"PROJECT_DATE_FINISH" ]);
691 $select = array_merge(
$select, [
"SCRUM_OWNER_ID",
"SCRUM_MASTER_ID",
"SCRUM_SPRINT_DURATION",
"SCRUM_TASK_RESPONSIBLE" ]);
693 $res = CSocNetGroup::getList(
703 defined(
'BX_COMP_MANAGED_CACHE')
716 if (!empty(
$result[
'DESCRIPTION']))
723 if ((
$options[
'getSites'] ??
false))
726 $res = CSocNetGroup::getSite($id);
727 while ($groupSiteFields =
$res->fetch())
729 $result[
'SITE_LIST'][] = $groupSiteFields[
'LID'];
733 $result[
'SCRUM'] = (isset(
$result[
'SCRUM_MASTER_ID']) && (int)
$result[
'SCRUM_MASTER_ID'] > 0 ?
'Y' :
'N');
746 $cache->EndDataCache($cacheData);
747 if (defined(
'BX_COMP_MANAGED_CACHE'))
754 if (!is_array($sonetGroupCache))
756 $sonetGroupCache = [];
759 !array_key_exists($id, $sonetGroupCache)
760 || !is_array($sonetGroupCache[$id])
763 $sonetGroupCache[$id] = [];
765 $sonetGroupCache[$id][$staticCacheKey] =
$result;
774 return self::$staticCache;
779 self::$staticCache = $cache;
787 $userID = intval($userID);
788 $groupID = intval($groupID);
792 $userRoleInGroup = CSocNetUserToGroup::GetUserRole($userID, $groupID);
793 if ($userRoleInGroup ==
false)
796 $arGroup = CSocNetGroup::GetById($groupID);
797 if ($arGroup ==
false)
827 $userID = intval($userID);
828 $groupID = intval($groupID);
832 $arGroup = CSocNetGroup::GetById($groupID);
833 if ($arGroup ==
false)
836 if ($arGroup[
"VISIBLE"] ==
"Y")
839 $userRoleInGroup = CSocNetUserToGroup::GetUserRole($userID, $groupID);
840 if ($userRoleInGroup ==
false)
848 $userID = intval($userID);
849 $groupID = intval($groupID);
853 $arGroup = CSocNetGroup::GetById($groupID);
854 if ($arGroup ==
false)
857 if ($arGroup[
"OPENED"] ==
"Y")
860 $userRoleInGroup = CSocNetUserToGroup::GetUserRole($userID, $groupID);
861 if ($userRoleInGroup ==
false)
874 $ownerID = (int)$ownerID;
887 if (!empty(
$arFields[
'SCRUM_MASTER_ID']) && CModule::includeModule(
"tasks"))
889 $isScrumLimitExceeded = ScrumLimit::isLimitExceeded() || !ScrumLimit::isFeatureEnabled();
890 if (ScrumLimit::canTurnOnTrial())
892 $isScrumLimitExceeded =
false;
894 if ($isScrumLimitExceeded)
905 $APPLICATION->ThrowException(
'Collab feature not available');
910 elseif (empty(
$arFields[
'SCRUM_MASTER_ID']) && CModule::includeModule(
"tasks"))
912 $isProjectLimitExceeded = !ProjectLimit::isFeatureEnabled();
913 if (ProjectLimit::canTurnOnTrial())
915 $isProjectLimitExceeded =
false;
917 if ($isProjectLimitExceeded)
925 $DB->StartTransaction();
929 $arFields[
"=DATE_CREATE"] = CDatabase::currentTimeFunction();
934 $arFields[
"=DATE_UPDATE"] = CDatabase::currentTimeFunction();
939 $arFields[
"=DATE_ACTIVITY"] = CDatabase::currentTimeFunction();
966 $errorID = $e->GetID();
970 && isset($e->messages)
971 && is_array($e->messages)
972 && is_array($e->messages[0])
973 && array_key_exists(
"id", $e->messages[0])
976 $errorID = $e->messages[0][
"id"];
987 $errorID =
"ERROR_CREATE_GROUP";
997 "USER_ID" => $ownerID,
998 "GROUP_ID" => $groupID,
1000 "=DATE_CREATE" =>
$DB->CurrentTimeFunction(),
1001 "=DATE_UPDATE" =>
$DB->CurrentTimeFunction(),
1003 "INITIATED_BY_USER_ID" => $ownerID,
1007 if (!CSocNetUserToGroup::Add($arFields1))
1025 if ($bAutoSubscribe)
1030 CSocNetSubscription::Set($ownerID,
"SG".$groupID,
"Y");
1044 if (intval(
$ID).
"|" ==
$ID.
"|")
1054 if (mb_substr(
$key, 0, 1) ==
"!")
1061 if (mb_substr(
$key, 0, 1) ==
"+")
1067 if (mb_substr(
$key, 0, 2) ==
">=")
1070 $strOperation =
">=";
1075 $strOperation =
">";
1080 $strOperation =
"<=";
1085 $strOperation =
"<";
1090 $strOperation =
"IN";
1095 $strOperation =
"LIKE";
1100 $strOperation =
"QUERY";
1104 $strOperation =
"=";
1107 return array(
"FIELD" =>
$key,
"NEGATIVE" => $strNegative,
"OPERATION" => $strOperation,
"OR_NULL" => $strOrNull);
1114 $obUserFieldsSql =
false;
1116 if (is_array($arUF) && array_key_exists(
"ENTITY_ID", $arUF))
1120 $obUserFieldsSql->SetSelect($arSelectFields);
1122 $obUserFieldsSql->SetOrder($arOrder);
1128 $strSqlGroupBy =
"";
1130 $arGroupByFunct =
array(
"COUNT",
"AVG",
"MIN",
"MAX",
"SUM");
1132 $arAlreadyJoined =
array();
1135 if (is_array($arGroupBy) &&
count($arGroupBy)>0)
1137 $arSelectFields = $arGroupBy;
1138 foreach ($arGroupBy as
$key =>
$val)
1144 if ($strSqlGroupBy <>
'')
1145 $strSqlGroupBy .=
", ";
1152 if ($strSqlFrom <>
'')
1163 $arAlreadyJoinedOld = $arAlreadyJoined;
1183 $arAlreadyJoinedDiff = array_diff($arAlreadyJoined, $arAlreadyJoinedOld);
1185 foreach($arAlreadyJoinedDiff as $from_tmp)
1187 if ($strSqlFrom <>
'')
1189 $strSqlFrom .= $from_tmp;
1192 if ($obUserFieldsSql)
1194 $r = $obUserFieldsSql->GetFilter();
1196 $strSqlWhere .= ($strSqlWhere <>
'' ?
" AND" :
"").
" (".$r.
") ";
1201 $arSqlOrder = Array();
1202 foreach ($arOrder as $by =>
$order)
1204 $by = mb_strtoupper($by);
1216 $arSqlOrder[] =
" ".$by.
"_X1 ".
$order.
" ";
1217 if (!is_array($arSelectFields) || !in_array($by, $arSelectFields))
1218 $arSelectFields[] = $by;
1221 $arSqlOrder[] =
" ".$arFields[$by][
"FIELD"].
" ".
$order.
" ";
1225 && !in_array(
$arFields[$by][
"FROM"], $arAlreadyJoined))
1227 if ($strSqlFrom <>
'')
1230 $arAlreadyJoined[] =
$arFields[$by][
"FROM"];
1233 elseif($obUserFieldsSql && $s = $obUserFieldsSql->GetOrder($by))
1234 $arSqlOrder[$by] =
" ".$s.
" ".
$order.
" ";
1237 $strSqlOrderBy =
"";
1239 $tmp_count =
count($arSqlOrder);
1240 for (
$i=0;
$i < $tmp_count;
$i++)
1242 if ($strSqlOrderBy <>
'')
1243 $strSqlOrderBy .=
", ";
1245 if(
$DB->type ==
"ORACLE")
1247 if(mb_substr($arSqlOrder[
$i], -3) ==
"ASC")
1248 $strSqlOrderBy .= $arSqlOrder[
$i].
" NULLS FIRST";
1250 $strSqlOrderBy .= $arSqlOrder[
$i].
" NULLS LAST";
1253 $strSqlOrderBy .= $arSqlOrder[
$i];
1260 if (is_array($arGroupBy) &&
count($arGroupBy)==0)
1261 $strSqlSelect =
"COUNT(%%_DISTINCT_%% ".$arFields[$arFieldsKeys[0]][
"FIELD"].
") as CNT ";
1264 if (isset($arSelectFields) && !is_array($arSelectFields) && is_string($arSelectFields) && $arSelectFields <>
'' && array_key_exists($arSelectFields,
$arFields))
1265 $arSelectFields =
array($arSelectFields);
1267 if (!isset($arSelectFields)
1268 || !is_array($arSelectFields)
1269 ||
count($arSelectFields) <= 0
1270 || in_array(
"*", $arSelectFields))
1272 $tmp_count =
count($arFieldsKeys);
1273 for (
$i = 0;
$i < $tmp_count;
$i++)
1275 if (isset(
$arFields[$arFieldsKeys[
$i]][
"WHERE_ONLY"])
1276 &&
$arFields[$arFieldsKeys[
$i]][
"WHERE_ONLY"] ==
"Y")
1279 if ($strSqlSelect <>
'')
1280 $strSqlSelect .=
", ";
1282 if (
$arFields[$arFieldsKeys[
$i]][
"TYPE"] ==
"datetime")
1284 if (array_key_exists($arFieldsKeys[
$i], $arOrder))
1285 $strSqlSelect .=
$arFields[$arFieldsKeys[
$i]][
"FIELD"].
" as ".$arFieldsKeys[
$i].
"_X1, ";
1287 $strSqlSelect .=
$DB->DateToCharFunction(
$arFields[$arFieldsKeys[
$i]][
"FIELD"]).
" as ".$arFieldsKeys[
$i];
1291 if (array_key_exists($arFieldsKeys[
$i], $arOrder))
1292 $strSqlSelect .=
$arFields[$arFieldsKeys[
$i]][
"FIELD"].
" as ".$arFieldsKeys[
$i].
"_X1, ";
1294 $strSqlSelect .=
$DB->DateToCharFunction(
$arFields[$arFieldsKeys[
$i]][
"FIELD"],
"SHORT").
" as ".$arFieldsKeys[
$i];
1297 $strSqlSelect .=
$arFields[$arFieldsKeys[
$i]][
"FIELD"].
" as ".$arFieldsKeys[
$i];
1301 && !in_array(
$arFields[$arFieldsKeys[
$i]][
"FROM"], $arAlreadyJoined))
1303 if ($strSqlFrom <>
'')
1305 $strSqlFrom .=
$arFields[$arFieldsKeys[
$i]][
"FROM"];
1306 $arAlreadyJoined[] =
$arFields[$arFieldsKeys[
$i]][
"FROM"];
1312 foreach ($arSelectFields as
$key =>
$val)
1318 if ($strSqlSelect <>
'')
1319 $strSqlSelect .=
", ";
1321 if (in_array(
$key, $arGroupByFunct))
1327 if (array_key_exists(
$val, $arOrder))
1334 if (array_key_exists(
$val, $arOrder))
1347 if ($strSqlFrom <>
'')
1356 if ($obUserFieldsSql)
1357 $strSqlSelect .= ($strSqlSelect ==
'' ?
$arFields[
"ID"][
"FIELD"] :
"").$obUserFieldsSql->GetSelect();
1359 if ($strSqlGroupBy <>
'')
1361 if ($strSqlSelect <>
'')
1363 $strSqlSelect .=
", ";
1365 $strSqlSelect .=
"COUNT(%%_DISTINCT_%% ".$arFields[$arFieldsKeys[0]][
"FIELD"].
") as CNT";
1369 $strSqlSelect =
"%%_DISTINCT_%% ".$strSqlSelect;
1374 if ($obUserFieldsSql)
1376 $strSqlFrom .=
" ".$obUserFieldsSql->GetJoin(
$arFields[
"ID"][
"FIELD"]);
1380 "SELECT" => $strSqlSelect,
1381 "FROM" => $strSqlFrom,
1382 "WHERE" => $strSqlWhere,
1383 "GROUPBY" => $strSqlGroupBy,
1384 "ORDERBY" => $strSqlOrderBy
1396 if (is_array($group_id))
1398 if (empty($group_id))
1405 foreach ($group_id as
$val)
1413 $strSql =
"SELECT L.*, SGS.* FROM b_sonet_group_site SGS, b_lang L WHERE L.LID=SGS.SITE_ID AND SGS.GROUP_ID IN (".$strVal.
")";
1417 $strSql =
"SELECT L.*, SGS.* FROM b_sonet_group_site SGS, b_lang L WHERE L.LID=SGS.SITE_ID AND SGS.GROUP_ID=".intval($group_id);
1420 return $DB->Query($strSql);
1427 if (CModule::IncludeModule(
"extranet"))
1429 $extranetSiteId = CExtranet::GetExtranetSiteID();
1432 while ($arGroupSite = $rsGroupSite->Fetch())
1436 || $arGroupSite[
"LID"] != $extranetSiteId
1439 $groupSiteId = $arGroupSite[
"LID"];
1445 return $groupSiteId;
1453 FROM b_sonet_group_site
1454 WHERE SITE_ID='".
$DB->ForSQL(
$lang, 2).
"'
1457 $arSocNetGroups =
array();
1458 while(
$a = $r->Fetch())
1459 $arSocNetGroups[] =
$a[
"GROUP_ID"];
1460 if(
count($arSocNetGroups) > 0)
1471 if (intval($groupId) <= 0)
1476 if (CModule::IncludeModule(
"search"))
1478 $arGroupNew = CSocNetGroup::GetByID($groupId);
1482 $arGroupNew[
"ACTIVE"] ==
"N"
1483 && isset($arGroupOld)
1484 && is_array($arGroupOld)
1485 && isset($arGroupOld[
"ACTIVE"])
1486 && $arGroupOld[
"ACTIVE"] ==
"Y"
1491 elseif ($arGroupNew[
"ACTIVE"] ==
"Y")
1494 $BODY .=
$GLOBALS[
"USER_FIELD_MANAGER"]->OnSearchIndex(
"SONET_GROUP", $groupId);
1496 $arSearchIndexSiteID =
array();
1499 && !empty($arSiteID)
1502 foreach ($arSiteID as $site_id_tmp)
1504 $arSearchIndexSiteID[$site_id_tmp] = str_replace(
"#group_id#", $groupId,
Path::get(
'group_path_template', $site_id_tmp));
1510 while ($arGroupSite = $rsGroupSite->Fetch())
1512 $arSearchIndexSiteID[$arGroupSite[
"LID"]] = str_replace(
"#group_id#", $groupId,
Path::get(
'group_path_template', $arGroupSite[
'LID']));
1516 $arSearchIndex =
array(
1517 "SITE_ID" => $arSearchIndexSiteID,
1518 "LAST_MODIFIED" => $arGroupNew[
"DATE_ACTIVITY"],
1519 "PARAM1" => $arGroupNew[
"SUBJECT_ID"],
1520 "PARAM2" => $groupId,
1521 "PARAM3" =>
"GROUP",
1523 $arGroupNew[
"VISIBLE"] ==
"Y"?
1532 "socnet_group" => $groupId,
1533 "entity" =>
"socnet_group",
1535 "TITLE" => $arGroupNew[
"~NAME"],
1537 "TAGS" => $arGroupNew[
"~KEYWORDS"],
1540 CSearch::Index(
"socialnetwork",
"G".$groupId, $arSearchIndex, True);
1548 $dbRequests = CSocNetUserToGroup::GetList(
1551 "GROUP_ID" => $groupId,
1562 while ($arRequests = $dbRequests->GetNext())
1564 $arIDs[] = $arRequests[
"ID"];
1567 if (!$currentUserId)
1572 CSocNetUserToGroup::ConfirmRequestToBeMember(
1583 if (isset(
$fields[
'SCRUM_MASTER_ID']))
1588 if ((
$fields[
'PROJECT'] ??
'N') ===
'Y')
1590 return Type::Project;
1593 return Type::getDefault();
static includeModule($moduleName)
static isModuleInstalled($moduleName)
static get(string $key='', $siteId=SITE_ID)
static getCurrentUserId()
static unlinkChat($params)
const EVENT_WORKGROUP_DELETE
static addEvent(string $type, array $data)
static deleteByGroupId($params=array())
static DeleteIndex($MODULE_ID, $ITEM_ID=false, $PARAM1=false, $PARAM2=false, $SITE_ID=false)
static Index($MODULE_ID, $ITEM_ID, $arFields, $bOverWrite=false, $SEARCH_SESS_ID='')
static getById($id, $checkPermissions=false, array $options=[])
static PrepareSql(&$arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields, $arUF=array())
static GetFilterOperation($key)
static SetStat($ID, int $currentUserId=0)
static CanUserInitiate($userID, $groupID)
static setStaticCache($cache=array())
static CanUserReadGroup($userID, $groupID)
static ConfirmAllRequests($groupId, $bAutoSubscribe=true, $currentUserId=0)
static CheckFields($ACTION, &$arFields, $ID=0)
static GetSite($group_id)
static createGroup($ownerID, $arFields, $bAutoSubscribe=true)
static GetDefaultSiteId($groupId, $siteId=false)
static SetLastActivity($ID, $date=false)
static OnBeforeLangDelete($lang)
static SearchIndex($groupId, $arSiteID=array(), $arGroupOld=array())
static DeleteNoDemand($userID)
static CanUserViewGroup($userID, $groupID)
static AutoSubscribe($userID, $entityType, $entityID)
static DeleteSystemEventsByGroupID($group_id=false)
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array(), $arParams=array())
static killAllTags($text)
static PrepareWhere(&$arFields, &$arFilter, &$arJoins)
SetEntity($entity_id, $ID)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
global $USER_FIELD_MANAGER
while($arParentIBlockProperty=$dbParentIBlockProperty->Fetch()) $errorMessage
if(!defined('SITE_ID')) $lang
ExecuteModuleEventEx($arEvent, $arParams=[])
DelDuplicateSort(&$arSort)
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
$GLOBALS['____1690880296']
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."%"
global $arSocNetAllowedSpamPerms
const SONET_ROLES_REQUEST
const SONET_ROLES_MODERATOR
global $arSocNetAllowedInitiatePerms
const SONET_INITIATED_BY_USER