• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_disk.php
  • Класс: CIMDisk
  • Вызов: CIMDisk::updateFolderRights
static function updateFolderRights(int $chatId, bool $fullRights = false): bool
{
	if (!self::Enabled() || $chatId <= 0)
	{
		return false;
	}

	$result = IMModelChatTable::getById($chatId);
	if (!$chat = $result->fetch())
	{
		return false;
	}

	if ($chat['TYPE'] !== IMV2Chat::IM_TYPE_CHAT)
	{
		return false;
	}

	$folderId = (int)$chat['DISK_FOLDER_ID'];
	if ($folderId <= 0)
	{
		return false;
	}

	$folderModel = BitrixDiskFolder::getById($folderId);
	if (
		!$folderModel
		|| !($folderModel instanceof BitrixDiskFolder)
		|| ($folderModel->getStorageId() != self::GetStorageId())
	)
	{
		return false;
	}

	$driver = BitrixDiskDriver::getInstance();
	$accessProvider = new BitrixImAccessChatAuthProvider;
	$rightsManager = $driver->getRightsManager();

	if ($fullRights)
	{
		$accessCode = self::GetTopDepartmentCode();
	}
	else
	{
		$accessCode = $accessProvider->generateAccessCode($chatId);
	}

	$rightsManager->delete($folderModel);
	return $rightsManager->append(
		$folderModel,
		[[
			'ACCESS_CODE' => $accessCode,
			'TASK_ID' => $rightsManager->getTaskIdByName($rightsManager::TASK_READ)
		]]
	);
}