diff options
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>"); |