Blame view

sources/lib/private/repair.php 2.19 KB
31b7f2792   Kload   Upgrade to ownclo...
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   Cédric Dupont   Update sources OC...
12
  use OC\Hooks\Emitter;
31b7f2792   Kload   Upgrade to ownclo...
13
14
15
  
  class Repair extends BasicEmitter {
  	/**
6d9380f96   Cédric Dupont   Update sources OC...
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   Kload   Upgrade to ownclo...
31
32
  	 */
  	public function run() {
6d9380f96   Cédric Dupont   Update sources OC...
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   Kload   Upgrade to ownclo...
96
97
  	}
  }