From dda949e915e9c70ea6797c4551cd101df7356f93 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Tue, 3 May 2016 15:16:39 +0200 Subject: [PATCH] Allow migration steps to use automatic DI --- lib/private/Repair.php | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/private/Repair.php b/lib/private/Repair.php index 5d10cd582f..38752ee170 100644 --- a/lib/private/Repair.php +++ b/lib/private/Repair.php @@ -28,7 +28,6 @@ namespace OC; -use OC\Hooks\Emitter; use OC\Repair\AssetCache; use OC\Repair\CleanTags; use OC\Repair\Collation; @@ -45,6 +44,7 @@ use OC\Repair\RepairMimeTypes; use OC\Repair\SearchLuceneTables; use OC\Repair\UpdateOutdatedOcsIds; use OC\Repair\RepairInvalidShares; +use OCP\AppFramework\QueryException; use OCP\Migration\IOutput; use OCP\Migration\IRepairStep; use Symfony\Component\EventDispatcher\EventDispatcher; @@ -93,15 +93,20 @@ class Repair implements IOutput{ */ public function addStep($repairStep) { if (is_string($repairStep)) { - if (class_exists($repairStep)) { - $s = new $repairStep(); - if ($s instanceof IRepairStep) { - $this->repairSteps[] = $s; + try { + $s = \OC::$server->query($repairStep); + } catch (QueryException $e) { + if (class_exists($repairStep)) { + $s = new $repairStep(); } else { - throw new \Exception("Repair step '$repairStep' is not of type \\OCP\\Migration\\IRepairStep"); + throw new \Exception("Repair step '$repairStep' is unknown"); } + } + + if ($s instanceof IRepairStep) { + $this->repairSteps[] = $s; } else { - throw new \Exception("Repair step '$repairStep' is unknown"); + throw new \Exception("Repair step '$repairStep' is not of type \\OCP\\Migration\\IRepairStep"); } } else { $this->repairSteps[] = $repairStep;