1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
Group.php
См. документацию.
1<?php
2
3namespace Bitrix\Im\V2\Integration\Socialnetwork;
4
5use Bitrix\Disk\Driver;
6use Bitrix\Im\Integration\Socialnetwork\Extranet;
7use Bitrix\Main\Config\Option;
8use Bitrix\Main\Loader;
9use Bitrix\Main\ModuleManager;
10use Bitrix\Main\ORM\Fields\ExpressionField;
11use Bitrix\Main\ORM\Fields\Relations\Reference;
12use Bitrix\Main\ORM\Query\Join;
13use Bitrix\Main\ORM\Query\Query;
14use Bitrix\Socialnetwork\Internals\Registry\GroupRegistry;
15use Bitrix\Socialnetwork\Item\Workgroup;
16
17class Group
18{
19 public static function getStorageId(int $groupId): ?int
20 {
21 if (!Loader::includeModule('disk'))
22 {
23 return null;
24 }
25
26 return Driver::getInstance()->getStorageByGroupId($groupId)?->getId();
27 }
28
29
30 public static function getExtranetAccessibleUsersQuery(int $userId): ?Query
31 {
32 if (!Loader::includeModule('socialnetwork'))
33 {
34 return null;
35 }
36
37 $extranetSiteId = Option::get('extranet', 'extranet_site');
38 $extranetSiteId = ($extranetSiteId && ModuleManager::isModuleInstalled('extranet') ? $extranetSiteId : false);
39
40 if (
41 !$extranetSiteId
42 || \CSocNetUser::isCurrentUserModuleAdmin()
43 )
44 {
45 return null;
46 }
47
49 $extranetRoles = [
53 ];
54
55 $query = \Bitrix\Socialnetwork\UserToGroupTable::query();
56 $query->addSelect(new ExpressionField('DISTINCT_USER_ID', 'DISTINCT %s', 'USER.ID'));
57 $query->whereIn('ROLE', $extranetRoles);
58 $query->registerRuntimeField(
59 new Reference(
60 'GS',
61 \Bitrix\Socialnetwork\WorkgroupSiteTable::class,
62 Join::on('ref.GROUP_ID', 'this.GROUP_ID')->where('ref.SITE_ID', $extranetSiteId),
63 ['join_type' => 'INNER']
64 )
65 );
66
67 $query->registerRuntimeField(
68 new Reference(
69 'UG_MY',
70 \Bitrix\Socialnetwork\UserToGroupTable::class,
71 Join::on('ref.GROUP_ID', 'this.GROUP_ID')
72 ->where('ref.USER_ID', $userId)
73 ->whereIn('ref.ROLE', $extranetRoles),
74 ['join_type' => 'INNER']
75 )
76 );
77
78 return $query;
79 }
80
81 public static function getUsersInSameGroups(int $userId): array
82 {
84 $users = [];
85
86 foreach ($groups as $group)
87 {
88 foreach ($group['USERS'] as $user)
89 {
90 $user = (int)$user;
91 $users[$user] = $user;
92 }
93 }
94
95 return array_values($users);
96 }
97
98 public static function filterAddedUsersToChatBySonetRestriction(array $userIds, int $currentUserId): array
99 {
100 if (
101 $currentUserId === 0
102 || Loader::includeModule('intranet')
103 || !Loader::includeModule('socialnetwork')
104 || \CSocNetUser::IsFriendsAllowed()
105 )
106 {
107 return $userIds;
108 }
109
110 $arFriendUsers = Array();
112 [],
113 ["USER_ID" => $currentUserId, "RELATION" => SONET_RELATIONS_FRIEND],
114 false,
115 false,
116 ["ID", "FIRST_USER_ID", "SECOND_USER_ID", "DATE_CREATE", "DATE_UPDATE", "INITIATED_BY"]
117 );
118
119 while ($arFriends = $dbFriends->Fetch())
120 {
121 $friendId = $currentUserId == $arFriends["FIRST_USER_ID"] ? $arFriends["SECOND_USER_ID"] : $arFriends["FIRST_USER_ID"];
122 $arFriendUsers[$friendId] = $friendId;
123 }
124
125 foreach ($userIds as $id => $uid)
126 {
127 if ($uid == $currentUserId)
128 {
129 continue;
130 }
131
132 if (
133 !isset($arFriendUsers[$uid])
135 )
136 {
137 unset($userIds[$id]);
138 }
139 }
140
141 return $userIds;
142 }
143}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
static getGroup($params, $userId=null, bool $filterActiveUser=true)
Определения extranet.php:15
static getStorageId(int $groupId)
Определения Group.php:19
static filterAddedUsersToChatBySonetRestriction(array $userIds, int $currentUserId)
Определения Group.php:98
static getUsersInSameGroups(int $userId)
Определения Group.php:81
static getExtranetAccessibleUsersQuery(int $userId)
Определения Group.php:30
static isModuleInstalled($moduleName)
Определения modulemanager.php:125
const PRIVACY_RESULT_CONTACT
Определения im_settings.php:29
static GetPrivacy($type, $userId=false)
Определения im_settings.php:519
const PRIVACY_CHAT
Определения im_settings.php:24
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения user_relations.php:156
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$query
Определения get_search.php:11
$uid
Определения hot_keys_act.php:8
$groups
Определения options.php:30
Определения chain.php:3
$user
Определения mysql_to_pgsql.php:33
const SONET_RELATIONS_FRIEND
Определения include.php:24