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;