diff --git a/apps/files_trashbin/lib/Command/CleanUp.php b/apps/files_trashbin/lib/Command/CleanUp.php index db0e528fdea3b..50e51e70ac924 100644 --- a/apps/files_trashbin/lib/Command/CleanUp.php +++ b/apps/files_trashbin/lib/Command/CleanUp.php @@ -65,40 +65,48 @@ protected function configure(): void { protected function execute(InputInterface $input, OutputInterface $output): int { $users = $input->getArgument('user_id'); $verbose = $input->getOption('verbose'); + + if ((empty($users)) and (!$input->getOption('all-users'))) { + throw new InvalidOptionException('Either specify a user_id or --all-users'); + } + if ((!empty($users)) and ($input->getOption('all-users'))) { throw new InvalidOptionException('Either specify a user_id or --all-users'); - } elseif (!empty($users)) { + } + + if (!empty($users)) { foreach ($users as $user) { - if ($this->userManager->userExists($user)) { - $output->writeln("Remove deleted files of $user"); - $this->removeDeletedFiles($user, $output, $verbose); - } else { + if (!$this->userManager->userExists($user)) { $output->writeln("Unknown user $user"); return self::FAILURE; } + + $output->writeln("Remove deleted files of $user"); + $this->removeDeletedFiles($user, $output, $verbose); } - } elseif ($input->getOption('all-users')) { - $output->writeln('Remove deleted files for all users'); - foreach ($this->userManager->getBackends() as $backend) { - $name = get_class($backend); - if ($backend instanceof IUserBackend) { - $name = $backend->getBackendName(); - } - $output->writeln("Remove deleted files for users on backend $name"); - $limit = 500; - $offset = 0; - do { - $users = $backend->getUsers('', $limit, $offset); - foreach ($users as $user) { - $output->writeln(" $user"); - $this->removeDeletedFiles($user, $output, $verbose); - } - $offset += $limit; - } while (count($users) >= $limit); + + return self::SUCCESS; + } + + $output->writeln('Remove deleted files for all users'); + foreach ($this->userManager->getBackends() as $backend) { + $name = get_class($backend); + if ($backend instanceof IUserBackend) { + $name = $backend->getBackendName(); } - } else { - throw new InvalidOptionException('Either specify a user_id or --all-users'); + $output->writeln("Remove deleted files for users on backend $name"); + $limit = 500; + $offset = 0; + do { + $users = $backend->getUsers('', $limit, $offset); + foreach ($users as $user) { + $output->writeln(" $user"); + $this->removeDeletedFiles($user, $output, $verbose); + } + $offset += $limit; + } while (count($users) >= $limit); } + return self::SUCCESS; } @@ -109,26 +117,29 @@ protected function removeDeletedFiles(string $uid, OutputInterface $output, bool \OC_Util::tearDownFS(); \OC_Util::setupFS($uid); $path = '/' . $uid . '/files_trashbin'; - if ($this->rootFolder->nodeExists($path)) { - $node = $this->rootFolder->get($path); - if ($verbose) { - $output->writeln("Deleting " . \OC_Helper::humanFileSize($node->getSize()) . " in trash for $uid."); - } - $node->delete(); - if ($this->rootFolder->nodeExists($path)) { - $output->writeln("Trash folder sill exists after attempting to delete it"); - return; - } - $query = $this->dbConnection->getQueryBuilder(); - $query->delete('files_trash') - ->where($query->expr()->eq('user', $query->createParameter('uid'))) - ->setParameter('uid', $uid); - $query->execute(); - } else { + if (!$this->rootFolder->nodeExists($path)) { if ($verbose) { $output->writeln("No trash found for $uid"); } + + return; + } + + $node = $this->rootFolder->get($path); + + if ($verbose) { + $output->writeln("Deleting " . \OC_Helper::humanFileSize($node->getSize()) . " in trash for $uid."); + } + $node->delete(); + if ($this->rootFolder->nodeExists($path)) { + $output->writeln("Trash folder sill exists after attempting to delete it"); + return; } + $query = $this->dbConnection->getQueryBuilder(); + $query->delete('files_trash') + ->where($query->expr()->eq('user', $query->createParameter('uid'))) + ->setParameter('uid', $uid); + $query->execute(); } } diff --git a/apps/files_trashbin/lib/Command/ExpireTrash.php b/apps/files_trashbin/lib/Command/ExpireTrash.php index 6794dc54627fe..a64e1e9b837fd 100644 --- a/apps/files_trashbin/lib/Command/ExpireTrash.php +++ b/apps/files_trashbin/lib/Command/ExpireTrash.php @@ -65,25 +65,28 @@ protected function execute(InputInterface $input, OutputInterface $output): int $users = $input->getArgument('user_id'); if (!empty($users)) { foreach ($users as $user) { - if ($this->userManager->userExists($user)) { - $output->writeln("Remove deleted files of $user"); - $userObject = $this->userManager->get($user); - $this->expireTrashForUser($userObject); - } else { + if (! $this->userManager->userExists($user)) { $output->writeln("Unknown user $user"); return self::FAILURE; } + + $output->writeln("Remove deleted files of $user"); + $userObject = $this->userManager->get($user); + $this->expireTrashForUser($userObject); } - } else { - $p = new ProgressBar($output); - $p->start(); - $this->userManager->callForSeenUsers(function (IUser $user) use ($p) { - $p->advance(); - $this->expireTrashForUser($user); - }); - $p->finish(); - $output->writeln(''); + + return self::SUCCESS; } + + $p = new ProgressBar($output); + $p->start(); + $this->userManager->callForSeenUsers(function (IUser $user) use ($p) { + $p->advance(); + $this->expireTrashForUser($user); + }); + $p->finish(); + $output->writeln(''); + return self::SUCCESS; } diff --git a/apps/files_trashbin/lib/Command/RestoreAllFiles.php b/apps/files_trashbin/lib/Command/RestoreAllFiles.php index 35b06f3d69143..2dd1555a36ca5 100644 --- a/apps/files_trashbin/lib/Command/RestoreAllFiles.php +++ b/apps/files_trashbin/lib/Command/RestoreAllFiles.php @@ -136,6 +136,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int } else { throw new InvalidOptionException('Either specify a user_id or --all-users'); } + return self::SUCCESS; } diff --git a/apps/files_trashbin/lib/Command/Size.php b/apps/files_trashbin/lib/Command/Size.php index 511caa98bbc98..af682fa2892aa 100644 --- a/apps/files_trashbin/lib/Command/Size.php +++ b/apps/files_trashbin/lib/Command/Size.php @@ -61,24 +61,27 @@ protected function execute(InputInterface $input, OutputInterface $output): int $user = $input->getOption('user'); $size = $input->getArgument('size'); - if ($size) { - $parsedSize = \OC_Helper::computerFileSize($size); - if ($parsedSize === false) { - $output->writeln("Failed to parse input size"); - return self::FAILURE; - } - if ($user) { - $this->config->setUserValue($user, 'files_trashbin', 'trashbin_size', (string)$parsedSize); - $this->commandBus->push(new Expire($user)); - } else { - $this->config->setAppValue('files_trashbin', 'trashbin_size', (string)$parsedSize); - $output->writeln("Warning: changing the default trashbin size will automatically trigger cleanup of existing trashbins,"); - $output->writeln("a users trashbin can exceed the configured size until they move a new file to the trashbin."); - } - } else { + if (!$size) { $this->printTrashbinSize($input, $output, $user); + return self::SUCCESS; + } + + $parsedSize = \OC_Helper::computerFileSize($size); + if ($parsedSize === false) { + $output->writeln("Failed to parse input size"); + return self::FAILURE; } + if ($user) { + $this->config->setUserValue($user, 'files_trashbin', 'trashbin_size', (string)$parsedSize); + $this->commandBus->push(new Expire($user)); + return self::SUCCESS; + } + + $this->config->setAppValue('files_trashbin', 'trashbin_size', (string)$parsedSize); + $output->writeln("Warning: changing the default trashbin size will automatically trigger cleanup of existing trashbins,"); + $output->writeln("a users trashbin can exceed the configured size until they move a new file to the trashbin."); + return self::SUCCESS; } @@ -101,40 +104,45 @@ private function printTrashbinSize(InputInterface $input, OutputInterface $outpu if ($input->getOption('output') == self::OUTPUT_FORMAT_PLAIN) { $output->writeln($userHumanSize); - } else { - $userValue = ($userSize < 0) ? 'default' : $userSize; - $globalValue = ($globalSize < 0) ? 'default' : $globalSize; - $this->writeArrayInOutputFormat($input, $output, [ - 'user_size' => $userValue, - 'global_size' => $globalValue, - 'effective_size' => ($userSize < 0) ? $globalValue : $userValue, - ]); + return; } - } else { - $users = []; - $this->userManager->callForSeenUsers(function (IUser $user) use (&$users) { - $users[] = $user->getUID(); - }); - $userValues = $this->config->getUserValueForUsers('files_trashbin', 'trashbin_size', $users); - if ($input->getOption('output') == self::OUTPUT_FORMAT_PLAIN) { - $output->writeln("Default size: $globalHumanSize"); - $output->writeln(""); - if (count($userValues)) { - $output->writeln("Per-user sizes:"); - $this->writeArrayInOutputFormat($input, $output, array_map(function ($size) { - return \OC_Helper::humanFileSize($size); - }, $userValues)); - } else { - $output->writeln("No per-user sizes configured"); - } - } else { - $globalValue = ($globalSize < 0) ? 'default' : $globalSize; - $this->writeArrayInOutputFormat($input, $output, [ - 'global_size' => $globalValue, - 'user_sizes' => $userValues, - ]); + $userValue = ($userSize < 0) ? 'default' : $userSize; + $globalValue = ($globalSize < 0) ? 'default' : $globalSize; + $this->writeArrayInOutputFormat($input, $output, [ + 'user_size' => $userValue, + 'global_size' => $globalValue, + 'effective_size' => ($userSize < 0) ? $globalValue : $userValue, + ]); + return; + } + + $users = []; + $this->userManager->callForSeenUsers(function (IUser $user) use (&$users) { + $users[] = $user->getUID(); + }); + $userValues = $this->config->getUserValueForUsers('files_trashbin', 'trashbin_size', $users); + + if ($input->getOption('output') == self::OUTPUT_FORMAT_PLAIN) { + $output->writeln("Default size: $globalHumanSize"); + $output->writeln(""); + + if (!count($userValues)) { + $output->writeln("No per-user sizes configured"); + return; } + + $output->writeln("Per-user sizes:"); + $this->writeArrayInOutputFormat($input, $output, array_map(function ($size) { + return \OC_Helper::humanFileSize($size); + }, $userValues)); + return; } + + $globalValue = ($globalSize < 0) ? 'default' : $globalSize; + $this->writeArrayInOutputFormat($input, $output, [ + 'global_size' => $globalValue, + 'user_sizes' => $userValues, + ]); } }