Base.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. /**
  38. * @var \OCP\IConfig
  39. */
  40. protected $config;
  41. /**
  42. * @param \OCP\IConfig $config
  43. */
  44. public function __construct(IConfig $config) {
  45. parent::__construct();
  46. $this->config = $config;
  47. }
  48. protected function configure() {
  49. $mode = $this->getMode();
  50. $this
  51. ->setName("background:$mode")
  52. ->setDescription("Use $mode to run background jobs");
  53. }
  54. /**
  55. * Executing this command will set the background job mode for owncloud.
  56. * The mode to set is specified by the concrete sub class by implementing the
  57. * getMode() function.
  58. *
  59. * @param InputInterface $input
  60. * @param OutputInterface $output
  61. */
  62. protected function execute(InputInterface $input, OutputInterface $output): int {
  63. $mode = $this->getMode();
  64. $this->config->setAppValue('core', 'backgroundjobs_mode', $mode);
  65. $output->writeln("Set mode for background jobs to '$mode'");
  66. return 0;
  67. }
  68. }