• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/controller/file.php
  • Класс: BitrixDiskControllerFile
  • Вызов: File::showSharingEntitiesAction
public function showSharingEntitiesAction(DiskFile $file)
{
	$currentUserId = $this->getCurrentUser()->getId();
	$securityContext = $file->getStorage()->getSecurityContext($currentUserId);
	$rightsManager = Driver::getInstance()->getRightsManager();

	$entityList = [];
	//user has only read right. And he can't see on another sharing
	if(!$file->canShare($securityContext) && !$file->canChangeRights($securityContext))
	{
		/** @var DiskUser $user */
		$user = DiskUser::getById($currentUserId);

		$pseudoMaxTaskByObjectForUser = $rightsManager->getPseudoMaxTaskByObjectForUser($file, $currentUserId);
		$entityList = [
			[
				'entity' => [
					'id' => DiskSharing::CODE_USER . $currentUserId,
					'name' => $user->getFormattedName(),
					'avatar' => $user->getAvatarSrc(),
					'type' => 'users',
				],
				'sharing' => [
					'right' => $pseudoMaxTaskByObjectForUser,
					'name' => $rightsManager->getTaskTitleByName($pseudoMaxTaskByObjectForUser),
				],
			]
		];
	}
	else
	{
		foreach ($file->getMembersOfSharing() as $entity)
		{
			$entityList[] = [
				'entity' => [
					'id' => $entity['entityId'],
					'name' => $entity['name'],
					'avatar' => $entity['avatar'],
					'type' => $entity['type'],
				],
				'sharing' => [
					'id' => $entity['sharingId'],
					'taskName' => $entity['right'],
					'name' => $rightsManager->getTaskTitleByName($entity['right']),
					'canDelete' => true,
					'canChange' => true,
				],
			];
		}
	}

	return $entityList;
}