You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
nextcloud-server/apps/sharing/lib/Command/CreateShare.php

42 lines
1.3 KiB

<?php
/**
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
declare(strict_types=1);
namespace OCA\Sharing\Command;
use NCU\Sharing\Exception\ShareInvalidException;
use NCU\Sharing\Share;
use NCU\Sharing\ShareAccessContext;
use OCP\IUserManager;
use OCP\L10N\IFactory;
use OCP\Server;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
final class CreateShare extends SharingBase {
#[\Override]
public function configure(): void {
$this
->setName('sharing:create-share')
->setDescription('Create a new share.')
->addArgument('owner', InputArgument::REQUIRED, 'User ID of the owner');
}
#[\Override]
public function execute(InputInterface $input, OutputInterface $output): int {
/** @var string $ownerUid */
$ownerUid = $input->getArgument('owner');
$owner = Server::get(IUserManager::class)->get($ownerUid);
if ($owner === null) {
throw new ShareInvalidException('The owner does not exist: ' . $ownerUid, Server::get(IFactory::class)->get('sharing')->t('The owner does not exist: %s', [$ownerUid]));
}
return $this->wrapExecution($output, fn (): Share => $this->manager->createShare(new ShareAccessContext($owner)));
}
}