• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/component/workgrouplist/user.php
  • Класс: BitrixSocialnetworkComponentWorkgroupListUser
  • Вызов: User::fillUsers
static function fillUsers(array $params = []): array
{
	$result = [];

	if (
		!isset($params['groupIdList'])
		|| !is_array($params['groupIdList'])
	)
	{
		return $result;
	}

	$groupIdList = Util::filterNumericIdList($params['groupIdList']);
	if (empty($groupIdList))
	{
		return $result;
	}

	$scrumMasterIdList = ($params['scrumMasterIdList'] ?? []);

	$query = new Query(UserToGroupTable::getEntity());
	$records = $query
		->setSelect([
			'GROUP_ID',
			'USER_ID',
			'ROLE',
			'INITIATED_BY_TYPE',
			'AUTO_MEMBER',
			'NAME' => 'USER.NAME',
			'LAST_NAME' => 'USER.LAST_NAME',
			'SECOND_NAME' => 'USER.SECOND_NAME',
			'LOGIN' => 'USER.LOGIN',
			'PERSONAL_PHOTO' => 'USER.PERSONAL_PHOTO',
		])
		->whereIn('GROUP_ID', $groupIdList)
		->whereIn('ROLE', UserToGroupTable::getRolesMember())
		->exec()->fetchCollection();

	$imageIdList = [];
	foreach ($records as $record)
	{
		$user = $record->get('USER');
		$imageIdList[$record->get('USER_ID')] = $user->get('PERSONAL_PHOTO');
		$members[] = $record;
	}

	$imageIdList = array_filter(
		$imageIdList,
		static function ($id) {
			return (int)$id > 0;
		}
	);

	$avatars = HelperUIGridWorkgroupMembers::getUserAvatars($imageIdList);
	$membersData = [];

	foreach ($members as $member)
	{
		$memberId = (int)$member['USER_ID'];
		$groupId = (int)$member['GROUP_ID'];

		$isScrumProject = isset($scrumMasterIdList[$groupId]);

		$isOwner = ($member['ROLE'] === UserToGroupTable::ROLE_OWNER);
		$isModerator = ($member['ROLE'] === UserToGroupTable::ROLE_MODERATOR);
		$isScrumMaster = ($isScrumProject && $scrumMasterIdList[$groupId] === $memberId);
		$isHead = ($isOwner || $isModerator);

		if (!isset($membersData[$groupId]))
		{
			$membersData[$groupId] = [];
		}

		$membersData[$groupId][($isHead ? 'HEADS' : 'MEMBERS')][$memberId] = [
			'ID' => $memberId,
			'IS_OWNER' => ($isOwner ? 'Y' : 'N'),
			'IS_MODERATOR' => ($isModerator ? 'Y' : 'N'),
			'IS_SCRUM_MASTER' => ($isScrumMaster ? 'Y' : 'N'),
			'IS_AUTO_MEMBER' => $member['AUTO_MEMBER'],
			'PHOTO' => ($avatars[($imageIdList[$memberId] ?? '')] ?? ''),
		];
	}

	foreach ($groupIdList as $groupId)
	{
		$result[$groupId] = [
			'HEADS' => ($membersData[$groupId]['HEADS'] ?? []),
			'MEMBERS' => ($membersData[$groupId]['MEMBERS'] ?? []),
		];
	}

	return $result;
}