summaryrefslogtreecommitdiffstats
path: root/lib/private/app/dependencyanalyzer.php
blob: c76181926e2141268cde003ce5cca1085999a7a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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
<?php
 /**
 * @author Thomas Müller
 * @copyright 2014 Thomas Müller deepdiver@owncloud.com
 *
 * This file is licensed under the Affero General Public License version 3 or
 * later.
 * See the COPYING-README file.
 */

namespace OC\App;

class DependencyAnalyzer {

	/**
	 * @param array $app
	 * @param Platform $system
	 * @param \OCP\IL10N $l
	 */
	function __construct(array $app, $system, $l) {
		$this->system = $system;
		$this->l = $l;
		$this->missing = array();
		$this->dependencies = array();
		if (array_key_exists('dependencies', $app)) {
			$this->dependencies = $app['dependencies'];
		}
	}

	/**
	 * @param array $app
	 * @returns array of missing dependencies
	 */
	public function analyze() {
		$this->analysePhpVersion();
		return $this->missing;
	}

	private function analysePhpVersion() {
		if (!array_key_exists('php', $this->dependencies)) {
			return;
		}

		if (array_key_exists('min-version', $this->dependencies['php'])) {
			$minVersion = $this->dependencies['php']['min-version'];
			if (version_compare($this->system->getPhpVersion(), $minVersion, '<')) {
				$this->missing[] = (string)$this->l->t('PHP %s or higher is required.', $minVersion);
			}
		}
		if (array_key_exists('max-version', $this->dependencies['php'])) {
			$maxVersion = $this->dependencies['php']['max-version'];
			if (version_compare($this->system->getPhpVersion(), $maxVersion, '>')) {
				$this->missing[] = (string)$this->l->t('PHP with a version less then %s is required.', $maxVersion);
			}
		}
	}

}