]> source.dussan.org Git - nextcloud-server.git/commitdiff
occ background-job:delete 42670/head
authorMaxence Lange <maxence@artificial-owl.com>
Thu, 11 Jan 2024 15:58:10 +0000 (14:58 -0100)
committerMaxence Lange <maxence@artificial-owl.com>
Fri, 12 Jan 2024 00:17:57 +0000 (23:17 -0100)
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
core/Command/Background/Delete.php [new file with mode: 0644]
core/register_command.php
lib/composer/composer/autoload_classmap.php
lib/composer/composer/autoload_static.php

diff --git a/core/Command/Background/Delete.php b/core/Command/Background/Delete.php
new file mode 100644 (file)
index 0000000..8d57d18
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2024, Maxence Lange <maxence@artificial-owl.com>
+ *
+ * @author Maxence Lange <maxence@artificial-owl.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OC\Core\Command\Background;
+
+use OC\Core\Command\Base;
+use OCP\BackgroundJob\IJobList;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Question\ConfirmationQuestion;
+
+class Delete extends Base {
+       public function __construct(
+               protected IJobList $jobList,
+       ) {
+               parent::__construct();
+       }
+
+       protected function configure(): void {
+               $this
+                       ->setName('background-job:delete')
+                       ->setDescription('Remove a background job from database')
+                       ->addArgument(
+                               'job-id',
+                               InputArgument::REQUIRED,
+                               'The ID of the job in the database'
+                       );
+       }
+
+       protected function execute(InputInterface $input, OutputInterface $output): int {
+               $jobId = (int) $input->getArgument('job-id');
+
+               $job = $this->jobList->getById($jobId);
+               if ($job === null) {
+                       $output->writeln('<error>Job with ID ' . $jobId . ' could not be found in the database</error>');
+                       return 1;
+               }
+
+               $output->writeln('Job class: ' . get_class($job));
+               $output->writeln('Arguments: ' . json_encode($job->getArgument()));
+               $output->writeln('');
+
+               $question = new ConfirmationQuestion(
+                       '<comment>Do you really want to delete this background job ? It could create some misbehaviours in Nextcloud.</comment> (y/N) ', false,
+                       '/^(y|Y)/i'
+               );
+
+               $helper = $this->getHelper('question');
+               if (!$helper->ask($input, $output, $question)) {
+                       $output->writeln('aborted.');
+                       return 0;
+               }
+
+               $this->jobList->remove($job, $job->getArgument());
+               return 0;
+       }
+}
index 27863cfdc8d78d3abc0c776629802dc20fa02a82..5a6e00c8a2263a66b522487ce69ce26c0b50c190 100644 (file)
@@ -92,6 +92,7 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) {
        $application->add(new OC\Core\Command\Background\Ajax(\OC::$server->getConfig()));
        $application->add(new OC\Core\Command\Background\Job(\OC::$server->getJobList(), \OC::$server->getLogger()));
        $application->add(new OC\Core\Command\Background\ListCommand(\OC::$server->getJobList()));
+       $application->add(\OCP\Server::get(\OC\Core\Command\Background\Delete::class));
 
        $application->add(\OC::$server->query(\OC\Core\Command\Broadcast\Test::class));
 
index 63ba07e2e4fc53c400267acf206adef2df7c72d9..fa49f7bc7308d09fa9c942cae4ec72d715a01675 100644 (file)
@@ -1023,6 +1023,7 @@ return array(
     'OC\\Core\\Command\\Background\\Ajax' => $baseDir . '/core/Command/Background/Ajax.php',
     'OC\\Core\\Command\\Background\\Base' => $baseDir . '/core/Command/Background/Base.php',
     'OC\\Core\\Command\\Background\\Cron' => $baseDir . '/core/Command/Background/Cron.php',
+    'OC\\Core\\Command\\Background\\Delete' => $baseDir . '/core/Command/Background/Delete.php',
     'OC\\Core\\Command\\Background\\Job' => $baseDir . '/core/Command/Background/Job.php',
     'OC\\Core\\Command\\Background\\ListCommand' => $baseDir . '/core/Command/Background/ListCommand.php',
     'OC\\Core\\Command\\Background\\WebCron' => $baseDir . '/core/Command/Background/WebCron.php',
index bf1a13d49dec0264b9838b43d7fcc393952fbe03..f45e67fc0e40a652ff34c2a445a8dfd63ce8c84a 100644 (file)
@@ -1056,6 +1056,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
         'OC\\Core\\Command\\Background\\Ajax' => __DIR__ . '/../../..' . '/core/Command/Background/Ajax.php',
         'OC\\Core\\Command\\Background\\Base' => __DIR__ . '/../../..' . '/core/Command/Background/Base.php',
         'OC\\Core\\Command\\Background\\Cron' => __DIR__ . '/../../..' . '/core/Command/Background/Cron.php',
+        'OC\\Core\\Command\\Background\\Delete' => __DIR__ . '/../../..' . '/core/Command/Background/Delete.php',
         'OC\\Core\\Command\\Background\\Job' => __DIR__ . '/../../..' . '/core/Command/Background/Job.php',
         'OC\\Core\\Command\\Background\\ListCommand' => __DIR__ . '/../../..' . '/core/Command/Background/ListCommand.php',
         'OC\\Core\\Command\\Background\\WebCron' => __DIR__ . '/../../..' . '/core/Command/Background/WebCron.php',