...Человеческий поиск в разработке...
- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/internals/registry/userregistry.php
- Класс: BitrixTasksInternalsRegistryUserRegistry
- Вызов: UserRegistry::loadGroupInfo
private function loadGroupInfo(): void { if (!Loader::includeModule('socialnetwork')) { return; } $cache = Cache::createInstance(); if ($cache->initCache(self::CACHE_TTL, $this->getCacheId(), $this->getCacheDir())) { $res = $cache->getVars(); } else { $res = UserToGroupTable::query() ->addSelect('GROUP_ID') ->addSelect('ROLE') ->addSelect('WORKGROUP.PROJECT', 'PROJECT') ->addSelect('WORKGROUP.SCRUM_MASTER_ID', 'SCRUM_MASTER') ->registerRuntimeField( new Reference( 'WORKGROUP', WorkgroupTable::class, Join::on('this.GROUP_ID', 'ref.ID'), ['join_type' => 'LEFT'] ) ) ->setFilter([ '=USER_ID' => $this->userId, '@ROLE' => [UserToGroupTable::ROLE_OWNER, UserToGroupTable::ROLE_MODERATOR, UserToGroupTable::ROLE_USER] ]) ->fetchAll(); $taggedCache = Application::getInstance()->getTaggedCache(); $taggedCache->StartTagCache($this->getCacheDir()); $taggedCache->RegisterTag($this->getCacheTag()); $cache->startDataCache(); $cache->endDataCache($res); $taggedCache->EndTagCache(); } foreach ($res as $row) { $this->userGroups[$row['GROUP_ID']] = $row['ROLE']; if ((int)$row['SCRUM_MASTER'] > 0) { $this->userScrum[$row['GROUP_ID']] = $row['ROLE']; } elseif ($row['PROJECT'] === 'Y') { $this->userProjects[$row['GROUP_ID']] = $row['ROLE']; } else { $this->userWorkgroups[$row['GROUP_ID']] = $row['ROLE']; } } }