summaryrefslogtreecommitdiffstats
path: root/lib/Command/Updater/Job.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Command/Updater/Job.php')
-rw-r--r--lib/Command/Updater/Job.php76
1 files changed, 76 insertions, 0 deletions
diff --git a/lib/Command/Updater/Job.php b/lib/Command/Updater/Job.php
new file mode 100644
index 000000000..4404a456e
--- /dev/null
+++ b/lib/Command/Updater/Job.php
@@ -0,0 +1,76 @@
+<?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 DateTime;
+use OCP\Util;
+use OCA\News\Service\StatusService;
+use OCA\News\Service\UpdaterService;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class Job extends Command
+{
+ /**
+ * @var StatusService Status service
+ */
+ private $statusService;
+
+ /**
+ * @var UpdaterService Update service
+ */
+ private $updaterService;
+
+ public function __construct(StatusService $statusService, UpdaterService $updaterService)
+ {
+ parent::__construct();
+ $this->statusService = $statusService;
+ $this->updaterService = $updaterService;
+ }
+
+ /**
+ * @return void
+ */
+ protected function configure()
+ {
+ $this->setName('news:updater:job')
+ ->addOption(
+ 'reset',
+ null,
+ InputOption::VALUE_NONE,
+ 'If the job should be reset, warning this might lead to issues.'
+ )
+ ->setDescription('Console API for checking the update job status and to reset it.');
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output): int
+ {
+ $reset = (bool) $input->getOption('reset');
+
+ [$major, $minor, $micro] = Util::getVersion();
+
+ if ($major < 26) {
+ $output->writeln("Error: This only works with Nextcloud 26 or newer.");
+ return 1;
+ }
+ $output->writeln("Checking update Status");
+ $date = new DateTime();
+ $date->setTimestamp($this->statusService->getUpdateTime());
+ $output->writeln("Last Execution was ".$date->format('Y-m-d H:i:s e'));
+
+ if ($reset) {
+ $output->writeln("Attempting to reset the job.");
+ $this->updaterService->reset();
+ $output->writeln("Done, job should execute on next schedule.");
+ }
+ return 0;
+ }
+}