From b469e9f6fb83758ad91b8e41d81319ab3a73f098 Mon Sep 17 00:00:00 2001 From: Thomas Müller Date: Mon, 1 Dec 2014 21:47:22 +0100 Subject: introduce dependency analyzer to take care of app dependencies some more unit tests on xml info parser --- lib/private/app/dependencyanalyzer.php | 58 ++++++++++++++++++++++++++++++++++ lib/private/app/infoparser.php | 6 ++-- lib/private/app/platform.php | 17 ++++++++++ 3 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 lib/private/app/dependencyanalyzer.php create mode 100644 lib/private/app/platform.php (limited to 'lib/private/app') diff --git a/lib/private/app/dependencyanalyzer.php b/lib/private/app/dependencyanalyzer.php new file mode 100644 index 00000000000..c76181926e2 --- /dev/null +++ b/lib/private/app/dependencyanalyzer.php @@ -0,0 +1,58 @@ +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); + } + } + } + +} diff --git a/lib/private/app/infoparser.php b/lib/private/app/infoparser.php index b0327fa4fd1..e220fb40df6 100644 --- a/lib/private/app/infoparser.php +++ b/lib/private/app/infoparser.php @@ -64,7 +64,7 @@ class InfoParser { $array['types'] = array(); } - if (array_key_exists('documentation', $array)) { + if (array_key_exists('documentation', $array) && is_array($array['documentation'])) { foreach ($array['documentation'] as $key => $url) { // If it is not an absolute URL we assume it is a key // i.e. admin-ldap will get converted to go.php?to=admin-ldap @@ -78,7 +78,9 @@ class InfoParser { if (array_key_exists('types', $array)) { foreach ($array['types'] as $type => $v) { unset($array['types'][$type]); - $array['types'][] = $type; + if (is_string($type)) { + $array['types'][] = $type; + } } } diff --git a/lib/private/app/platform.php b/lib/private/app/platform.php new file mode 100644 index 00000000000..292159337a0 --- /dev/null +++ b/lib/private/app/platform.php @@ -0,0 +1,17 @@ +