3namespace Bitrix\Socialnetwork\Space\List\Query;
5use Bitrix\Main\Application;
6use Bitrix\Main\DB\SqlHelper;
7use Bitrix\Main\ORM\Fields\ExpressionField;
8use Bitrix\Main\ORM\Fields\Relations\Reference;
9use Bitrix\Main\ORM\Query\Join;
10use Bitrix\Main\ORM\Query\Query;
11use Bitrix\Socialnetwork\Internals\Space\RecentActivity\SpaceUserLatestActivityTable;
12use Bitrix\Socialnetwork\Internals\Space\RecentActivity\SpaceUserRecentActivityTable;
13use Bitrix\Socialnetwork\Space\List\Dictionary;
14use Bitrix\Socialnetwork\Space\List\Query\Filter\FilterInterface;
15use Bitrix\Socialnetwork\Space\List\Query\Filter;
16use Bitrix\Socialnetwork\UserToGroupTable;
17use Bitrix\Socialnetwork\WorkgroupPinTable;
18use Bitrix\Socialnetwork\WorkgroupTable;
19use Bitrix\Socialnetwork\WorkgroupTagTable;
23 private const SELECT = [
28 'RECENT_ACTIVITY_DATE',
33 'ROLE' =>
'MEMBER.ROLE',
34 'ROLE_INIT_BY_TYPE' =>
'MEMBER.INITIATED_BY_TYPE',
35 'RECENT_ACTIVITY_ID' =>
'RECENT_ACTIVITY.ID',
36 'RECENT_ACTIVITY_ENTITY_ID' =>
'RECENT_ACTIVITY.ENTITY_ID',
37 'RECENT_ACTIVITY_TYPE_ID' =>
'RECENT_ACTIVITY.TYPE_ID',
38 'RECENT_ACTIVITY_DATETIME' =>
'RECENT_ACTIVITY.DATETIME',
39 'RECENT_ACTIVITY_SECONDARY_ENTITY_ID' =>
'RECENT_ACTIVITY.SECONDARY_ENTITY_ID',
45 private bool $searchMode =
false;
51 $this->sqlHelper = Application::getConnection()->getSqlHelper();
89 $this->searchMode =
true;
97 Join::on(
'this.ID',
'ref.GROUP_ID')
98 ->where(
'ref.USER_ID', $this->userId)
101 Join::on(
'this.ID',
'ref.SPACE_ID')
102 ->where(
'ref.USER_ID', $this->userId)
105 $query = WorkgroupTable::query();
107 ->setSelect(self::SELECT)
108 ->addOrder(
'RECENT_ACTIVITY_DATE',
'DESC')
109 ->registerRuntimeField(
112 WorkgroupPinTable::class,
115 ->configureJoinType(Join::TYPE_LEFT)
117 ->registerRuntimeField(
120 SpaceUserLatestActivityTable::class,
123 ->configureJoinType(Join::TYPE_LEFT)
125 ->registerRuntimeField(
128 SpaceUserRecentActivityTable::class,
129 Join::on(
'this.LATEST_ACTIVITY.ACTIVITY_ID',
'ref.ID'),
131 ->configureJoinType(Join::TYPE_LEFT)
133 ->registerRuntimeField(
134 'RECENT_ACTIVITY_DATE',
136 'RECENT_ACTIVITY_DATE',
137 $this->sqlHelper->getIsNullFunction(
'%s',
'%s'),
138 [
'RECENT_ACTIVITY.DATETIME',
'DATE_ACTIVITY'],
141 ->registerRuntimeField(
144 UserToGroupTable::class,
147 ->configureJoinType(Join::TYPE_LEFT)
151 if ($this->searchMode)
153 $query->registerRuntimeField(
156 WorkgroupTagTable::class,
157 Join::on(
'this.ID',
'ref.GROUP_ID'),
159 ->configureJoinType(Join::TYPE_LEFT)
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
addFilter(FilterInterface $filter)
addSpaceIdFilter(int $spaceId)
addModeFilter(string $mode)
addSearchFilter(string $searchString)
addPaginationFilter(int $offset, int $limit)
addSpaceIdListFilter(array $spaceIds)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)