aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/repair.php
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2014-06-16 11:13:10 +0200
committerVincent Petry <pvince81@owncloud.com>2014-06-16 11:13:10 +0200
commita48bcceb237295386e9e598caf25161d6d305453 (patch)
tree9ecbf7f212a86e255149d37f90b9bc17291a6761 /lib/private/repair.php
parentd21845557e9fdbc27817f6ed2d8249d17c14a978 (diff)
parent05e351416e1c45b88c7e51d39a4e9961e5b8546f (diff)
downloadnextcloud-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.php68
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();
}
}