diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Command/Updater/UpdateUser.php | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/lib/Command/Updater/UpdateUser.php b/lib/Command/Updater/UpdateUser.php new file mode 100644 index 000000000..050641972 --- /dev/null +++ b/lib/Command/Updater/UpdateUser.php @@ -0,0 +1,70 @@ +<?php +/** + * Nextcloud - News + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + */ + +namespace OCA\News\Command\Updater; + +use Exception; +use OCA\News\Service\FeedServiceV2; +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class UpdateUser extends Command +{ + /** + * @var FeedServiceV2 Feed service + */ + private $feedService; + + public function __construct(FeedServiceV2 $feedService) + { + parent::__construct(); + $this->feedService = $feedService; + } + + /** + * @return void + */ + protected function configure() + { + $this->setName('news:updater:update-user') + ->addArgument( + 'user-id', + InputArgument::REQUIRED, + 'user id of a user, string' + ) + ->setDescription('Console API for updating a single user\'s feed'); + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + $userId = $input->getArgument('user-id'); + $feeds = $this->feedService->findAllForUser($userId); + $updateErrors = false; + foreach ($feeds as $feed) { + try { + $updated_feed = $this->feedService->fetch($feed); + if ($updated_feed->getUpdateErrorCount() !== 0) { + $output->writeln($updated_feed->getLastUpdateError()); + $updateErrors = true; + } + } catch (Exception $e) { + $output->writeln( + '<error>Could not update feed with id ' . $feed->getId() . + '. ' . $e->getMessage() . '</error> ' + ); + return 1; + } + } + if ($updateErrors) { + return 255; + } + return 0; + } +} |