Blame view
sources/lib/private/repair.php
2.19 KB
|
31b7f2792
|
1 2 3 4 5 6 7 8 9 10 11 |
<?php /** * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> * This file is licensed under the Affero General Public License version 3 or * later. * See the COPYING-README file. */ namespace OC; use OC\Hooks\BasicEmitter; |
|
6d9380f96
|
12 |
use OC\Hooks\Emitter; |
|
31b7f2792
|
13 14 15 |
class Repair extends BasicEmitter {
/**
|
|
6d9380f96
|
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
* @var RepairStep[]
**/
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
|
|
31b7f2792
|
31 32 |
*/
public function run() {
|
|
6d9380f96
|
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
$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(
new \OC\Repair\RepairMimeTypes()
);
}
/**
* Returns the repair steps to be run before an
* upgrade.
*
* @return array of RepairStep instances
*/
public static function getBeforeUpgradeRepairSteps() {
return array(
new \OC\Repair\InnoDB(),
new \OC\Repair\Collation(\OC::$server->getConfig(), \OC_DB::getConnection())
);
}
/**
* {@inheritDoc}
*
* Redeclared as public to allow invocation from within the closure above in php 5.3
*/
public function emit($scope, $method, $arguments = array()) {
parent::emit($scope, $method, $arguments);
|
|
31b7f2792
|
96 97 |
} } |