diff options
author | Vincent Petry <pvince81@owncloud.com> | 2014-06-16 11:13:10 +0200 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2014-06-16 11:13:10 +0200 |
commit | a48bcceb237295386e9e598caf25161d6d305453 (patch) | |
tree | 9ecbf7f212a86e255149d37f90b9bc17291a6761 /lib/private/repair.php | |
parent | d21845557e9fdbc27817f6ed2d8249d17c14a978 (diff) | |
parent | 05e351416e1c45b88c7e51d39a4e9961e5b8546f (diff) | |
download | nextcloud-server-a48bcceb237295386e9e598caf25161d6d305453.tar.gz nextcloud-server-a48bcceb237295386e9e598caf25161d6d305453.zip |
Merge pull request #8917 from owncloud/repair-routine-base
Add support for repair step classes
Diffstat (limited to 'lib/private/repair.php')
-rw-r--r-- | lib/private/repair.php | 68 |
1 files changed, 65 insertions, 3 deletions
diff --git a/lib/private/repair.php b/lib/private/repair.php index e9de3baa7ce..23d1c2b831e 100644 --- a/lib/private/repair.php +++ b/lib/private/repair.php @@ -9,13 +9,75 @@ namespace OC; use OC\Hooks\BasicEmitter; +use OC\Hooks\Emitter; class Repair extends BasicEmitter { /** - * run a series of repair steps for common problems - * progress can be reported by emitting \OC\Repair::step events + * @var array + **/ + private $repairSteps; + + /** + * Creates a new repair step runner + * + * @param array $repairSteps array of RepairStep instances + */ + public function __construct($repairSteps = array()) { + $this->repairSteps = $repairSteps; + } + + /** + * Run a series of repair steps for common problems */ public function run() { - $this->emit('\OC\Repair', 'step', array('No repair steps configured at the moment')); + $self = $this; + if (count($this->repairSteps) === 0) { + $this->emit('\OC\Repair', 'info', array('No repair steps available')); + return; + } + // run each repair step + foreach ($this->repairSteps as $step) { + $this->emit('\OC\Repair', 'step', array($step->getName())); + + if ($step instanceof Emitter) { + $step->listen('\OC\Repair', 'warning', function ($description) use ($self) { + $self->emit('\OC\Repair', 'warning', array($description)); + }); + $step->listen('\OC\Repair', 'info', function ($description) use ($self) { + $self->emit('\OC\Repair', 'info', array($description)); + }); + } + + $step->run(); + } + } + + /** + * Add repair step + * + * @param RepairStep $repairStep repair step + */ + public function addStep($repairStep) { + $this->repairSteps[] = $repairStep; + } + + /** + * Returns the default repair steps to be run on the + * command line or after an upgrade. + * + * @return array of RepairStep instances + */ + public static function getRepairSteps() { + return array(); + } + + /** + * Returns the repair steps to be run before an + * upgrade. + * + * @return array of RepairStep instances + */ + public static function getBeforeUpgradeRepairSteps() { + return array(); } } |