Base.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. /**
  3. * The MIT License (MIT)
  4. *
  5. * Copyright (c) 2015 Christian Kampka <christian@kampka.net>
  6. *
  7. * Permission is hereby granted, free of charge, to any person obtaining a copy
  8. * of this software and associated documentation files (the "Software"), to deal
  9. * in the Software without restriction, including without limitation the rights
  10. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  11. * copies of the Software, and to permit persons to whom the Software is
  12. * furnished to do so, subject to the following conditions:
  13. *
  14. * The above copyright notice and this permission notice shall be included in
  15. * all copies or substantial portions of the Software.
  16. *
  17. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  18. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  19. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  20. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  21. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  22. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  23. * THE SOFTWARE.
  24. */
  25. namespace OC\Core\Command\Background;
  26. use OCP\IConfig;
  27. use Symfony\Component\Console\Command\Command;
  28. use Symfony\Component\Console\Input\InputInterface;
  29. use Symfony\Component\Console\Output\OutputInterface;
  30. /**
  31. * An abstract base class for configuring the background job mode
  32. * from the command line interface.
  33. * Subclasses will override the getMode() function to specify the mode to configure.
  34. */
  35. abstract class Base extends Command {
  36. abstract protected function getMode();
  37. public function __construct(
  38. protected IConfig $config,
  39. ) {
  40. parent::__construct();
  41. }
  42. protected function configure(): void {
  43. $mode = $this->getMode();
  44. $this
  45. ->setName("background:$mode")
  46. ->setDescription("Use $mode to run background jobs");
  47. }
  48. /**
  49. * Executing this command will set the background job mode for owncloud.
  50. * The mode to set is specified by the concrete sub class by implementing the
  51. * getMode() function.
  52. *
  53. * @param InputInterface $input
  54. * @param OutputInterface $output
  55. * @return int
  56. */
  57. protected function execute(InputInterface $input, OutputInterface $output): int {
  58. $mode = $this->getMode();
  59. $this->config->setAppValue('core', 'backgroundjobs_mode', $mode);
  60. $output->writeln("Set mode for background jobs to '$mode'");
  61. return 0;
  62. }
  63. }