diff options
author | John Molakvoæ <skjnldsv@users.noreply.github.com> | 2021-09-15 10:26:56 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-15 10:26:56 +0200 |
commit | 995aa6518357b9f371ced5ba8941dfd2a02b0d97 (patch) | |
tree | 21b762102590459d36432f1622e984f68d3c2f1b /apps/files/lib/Command | |
parent | 208a7b688d50b357e031697cf7ae1c5188c15ba8 (diff) | |
parent | 5b664e02d8179608541cce97a2343eea36aec4f7 (diff) | |
download | nextcloud-server-995aa6518357b9f371ced5ba8941dfd2a02b0d97.tar.gz nextcloud-server-995aa6518357b9f371ced5ba8941dfd2a02b0d97.zip |
Merge pull request #28118 from nextcloud/transfer-incoming-shares
Diffstat (limited to 'apps/files/lib/Command')
-rw-r--r-- | apps/files/lib/Command/TransferOwnership.php | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/apps/files/lib/Command/TransferOwnership.php b/apps/files/lib/Command/TransferOwnership.php index 71853d632e7..50aa0b21a5f 100644 --- a/apps/files/lib/Command/TransferOwnership.php +++ b/apps/files/lib/Command/TransferOwnership.php @@ -31,12 +31,14 @@ declare(strict_types=1); * along with this program. If not, see <http://www.gnu.org/licenses/> * */ + namespace OCA\Files\Command; use OCA\Files\Exception\TransferOwnershipException; use OCA\Files\Service\OwnershipTransferService; use OCP\IUser; use OCP\IUserManager; +use OCP\IConfig; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; @@ -51,17 +53,22 @@ class TransferOwnership extends Command { /** @var OwnershipTransferService */ private $transferService; + /** @var IConfig */ + private $config; + public function __construct(IUserManager $userManager, - OwnershipTransferService $transferService) { + OwnershipTransferService $transferService, + IConfig $config) { parent::__construct(); $this->userManager = $userManager; $this->transferService = $transferService; + $this->config = $config; } protected function configure() { $this ->setName('files:transfer-ownership') - ->setDescription('All files and folders are moved to another user - shares are moved as well.') + ->setDescription('All files and folders are moved to another user - outgoing shares and incoming user file shares (optionally) are moved as well.') ->addArgument( 'source-user', InputArgument::REQUIRED, @@ -83,6 +90,12 @@ class TransferOwnership extends Command { null, InputOption::VALUE_NONE, 'move data from source user to root directory of destination user, which must be empty' + )->addOption( + 'transfer-incoming-shares', + null, + InputOption::VALUE_OPTIONAL, + 'transfer incoming user file shares to destination user. Usage: --transfer-incoming-shares=1 (value required)', + '2' ); } @@ -111,12 +124,36 @@ class TransferOwnership extends Command { } try { + $includeIncomingArgument = $input->getOption('transfer-incoming-shares'); + + switch ($includeIncomingArgument) { + case '0': + $includeIncoming = false; + break; + case '1': + $includeIncoming = true; + break; + case '2': + $includeIncoming = $this->config->getSystemValue('transferIncomingShares', false); + if (gettype($includeIncoming) !== 'boolean') { + $output->writeln("<error> config.php: 'transfer-incoming-shares': wrong usage. Transfer aborted.</error>"); + return 1; + } + break; + default: + $output->writeln("<error>Option --transfer-incoming-shares: wrong usage. Transfer aborted.</error>"); + return 1; + break; + } + $this->transferService->transfer( $sourceUserObject, $destinationUserObject, ltrim($input->getOption('path'), '/'), $output, - $input->getOption('move') === true + $input->getOption('move') === true, + false, + $includeIncoming ); } catch (TransferOwnershipException $e) { $output->writeln("<error>" . $e->getMessage() . "</error>"); |