• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/rest/service/folder.php
  • Класс: BitrixDiskRestServiceFolder
  • Вызов: Folder::shareToUser
protected function shareToUser($id, $userId, $taskName)
{
	$userId = (int)$userId;
	$folder = $this->getFolderById($id);
	if (!$this->isDiskStorage($folder))
	{
		throw new AccessException;
	}

	$securityContext = $folder->getStorage()->getCurrentUserSecurityContext();
	$rightsManager = DiskDriver::getInstance()->getRightsManager();
	if (!$folder->canShare($securityContext) || !$rightsManager->isValidTaskName($taskName))
	{
		throw new AccessException;
	}

	$maxTaskName = $rightsManager->getPseudoMaxTaskByObjectForUser($folder, $this->userId);
	if ($rightsManager->pseudoCompareTaskName($taskName, $maxTaskName) > 0)
	{
		throw new AccessException;
	}

	$sharing = DiskSharing::add(
		[
			'FROM_ENTITY' => DiskSharing::CODE_USER . $this->userId,
			'REAL_OBJECT' => $folder,
			'CREATED_BY' => $this->userId,
			'CAN_FORWARD' => false,
			'TO_ENTITY' => DiskSharing::CODE_USER . $userId,
			'TASK_NAME' => $taskName,
		],
		$this->errorCollection
	);

	if(!$sharing)
	{
		return null;
	}

	return true;
}