diff --git a/core/register_command.php b/core/register_command.php index 5af1704d653..71bd5b4b122 100644 --- a/core/register_command.php +++ b/core/register_command.php @@ -55,7 +55,6 @@ use OC\Core\Command; use OCP\IConfig; use OCP\IURLGenerator; use OCP\Server; -use Psr\Log\LoggerInterface; use Stecman\Component\Symfony\Console\BashCompletion\CompletionCommand; $application->add(new CompletionCommand()); @@ -149,12 +148,7 @@ if ($config->getSystemValueBool('installed', false)) { $application->add(Server::get(Command\Maintenance\UpdateTheme::class)); $application->add(Server::get(Command\Upgrade::class)); - $application->add(new Command\Maintenance\Repair( - new \OC\Repair([], Server::get(\OCP\EventDispatcher\IEventDispatcher::class), Server::get(LoggerInterface::class)), - \OC::$server->getConfig(), - Server::get(\OCP\EventDispatcher\IEventDispatcher::class), - \OC::$server->getAppManager() - )); + $application->add(Server::get(Command\Maintenance\Repair::class)); $application->add(Server::get(Command\Maintenance\RepairShareOwnership::class)); $application->add(Server::get(Command\Preview\Generate::class)); diff --git a/lib/private/Migration/BackgroundRepair.php b/lib/private/Migration/BackgroundRepair.php index dd1b15c7492..e485b3e9051 100644 --- a/lib/private/Migration/BackgroundRepair.php +++ b/lib/private/Migration/BackgroundRepair.php @@ -73,7 +73,7 @@ class BackgroundRepair extends TimedJob { } $step = $argument['step']; - $repair = new Repair([], $this->dispatcher, \OC::$server->get(LoggerInterface::class)); + $repair = \OCP\Server::get(Repair::class); try { $repair->addStep($step); } catch (\Exception $ex) { diff --git a/lib/private/Repair.php b/lib/private/Repair.php index 21caed3e39f..1af9b0d1b22 100644 --- a/lib/private/Repair.php +++ b/lib/private/Repair.php @@ -91,23 +91,19 @@ use Throwable; class Repair implements IOutput { /** @var IRepairStep[] */ - private array $repairSteps; - - private IEventDispatcher $dispatcher; + private array $repairSteps = []; private string $currentStep; - private LoggerInterface $logger; + public function __construct( + private IEventDispatcher $dispatcher, + private LoggerInterface $logger + ) { + } - /** - * Creates a new repair step runner - * - * @param IRepairStep[] $repairSteps array of RepairStep instances - */ - public function __construct(array $repairSteps, IEventDispatcher $dispatcher, LoggerInterface $logger) { + /** @param IRepairStep[] $repairSteps */ + public function setRepairSteps(array $repairSteps): void { $this->repairSteps = $repairSteps; - $this->dispatcher = $dispatcher; - $this->logger = $logger; } /** diff --git a/lib/private/Updater.php b/lib/private/Updater.php index 018e4797232..62d5fd1c058 100644 --- a/lib/private/Updater.php +++ b/lib/private/Updater.php @@ -255,7 +255,8 @@ class Updater extends BasicEmitter { file_put_contents($this->config->getSystemValueString('datadirectory', \OC::$SERVERROOT . '/data') . '/.ocdata', ''); // pre-upgrade repairs - $repair = new Repair(Repair::getBeforeUpgradeRepairSteps(), \OC::$server->get(\OCP\EventDispatcher\IEventDispatcher::class), \OC::$server->get(LoggerInterface::class)); + $repair = \OCP\Server::get(Repair::class); + $repair->setRepairSteps(Repair::getBeforeUpgradeRepairSteps()); $repair->run(); $this->doCoreUpgrade(); @@ -296,7 +297,8 @@ class Updater extends BasicEmitter { } // post-upgrade repairs - $repair = new Repair(Repair::getRepairSteps(), \OC::$server->get(\OCP\EventDispatcher\IEventDispatcher::class), \OC::$server->get(LoggerInterface::class)); + $repair = \OCP\Server::get(Repair::class); + $repair->setRepairSteps(Repair::getRepairSteps()); $repair->run(); //Invalidate update feed diff --git a/lib/private/legacy/OC_App.php b/lib/private/legacy/OC_App.php index edd844bf89f..841ad541674 100644 --- a/lib/private/legacy/OC_App.php +++ b/lib/private/legacy/OC_App.php @@ -823,7 +823,7 @@ class OC_App { $dispatcher = \OC::$server->get(IEventDispatcher::class); // load the steps - $r = new Repair([], $dispatcher, \OC::$server->get(LoggerInterface::class)); + $r = \OCP\Server::get(Repair::class); foreach ($steps as $step) { try { $r->addStep($step); diff --git a/tests/lib/RepairTest.php b/tests/lib/RepairTest.php index 53bf9520a7c..0708f6dc046 100644 --- a/tests/lib/RepairTest.php +++ b/tests/lib/RepairTest.php @@ -46,7 +46,7 @@ class RepairTest extends TestCase { protected function setUp(): void { parent::setUp(); $dispatcher = \OC::$server->get(IEventDispatcher::class); - $this->repair = new \OC\Repair([], $dispatcher, $this->createMock(LoggerInterface::class)); + $this->repair = new Repair($dispatcher, $this->createMock(LoggerInterface::class)); $dispatcher->addListener(RepairWarningEvent::class, function (RepairWarningEvent $event) { $this->outputArray[] = 'warning: ' . $event->getMessage();