|
|
@ -10,31 +10,31 @@ |
|
|
|
|
|
|
|
|
|
|
|
namespace OC\App; |
|
|
|
namespace OC\App; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
use OCP\IL10N; |
|
|
|
|
|
|
|
|
|
|
|
class DependencyAnalyzer { |
|
|
|
class DependencyAnalyzer { |
|
|
|
|
|
|
|
|
|
|
|
/** @var Platform */ |
|
|
|
/** @var Platform */ |
|
|
|
private $system; |
|
|
|
private $platform; |
|
|
|
|
|
|
|
|
|
|
|
/** @var \OCP\IL10N */ |
|
|
|
/** @var \OCP\IL10N */ |
|
|
|
private $l; |
|
|
|
private $l; |
|
|
|
|
|
|
|
|
|
|
|
/** @var array */ |
|
|
|
/** @var array */ |
|
|
|
private $missing; |
|
|
|
private $missing = array(); |
|
|
|
|
|
|
|
|
|
|
|
/** @var array */ |
|
|
|
/** @var array */ |
|
|
|
private $dependencies; |
|
|
|
private $dependencies = array(); |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* @param array $app |
|
|
|
* @param array $app |
|
|
|
* @param Platform $platform |
|
|
|
* @param Platform $platform |
|
|
|
* @param \OCP\IL10N $l |
|
|
|
* @param \OCP\IL10N $l |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
function __construct(array $app, $platform, $l) { |
|
|
|
function __construct(array $app, Platform $platform, IL10N $l) { |
|
|
|
$this->system = $platform; |
|
|
|
$this->platform = $platform; |
|
|
|
$this->l = $l; |
|
|
|
$this->l = $l; |
|
|
|
$this->missing = array(); |
|
|
|
if (isset($app['dependencies'])) { |
|
|
|
$this->dependencies = array(); |
|
|
|
|
|
|
|
if (array_key_exists('dependencies', $app)) { |
|
|
|
|
|
|
|
$this->dependencies = $app['dependencies']; |
|
|
|
$this->dependencies = $app['dependencies']; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -46,20 +46,21 @@ class DependencyAnalyzer { |
|
|
|
public function analyze() { |
|
|
|
public function analyze() { |
|
|
|
$this->analysePhpVersion(); |
|
|
|
$this->analysePhpVersion(); |
|
|
|
$this->analyseSupportedDatabases(); |
|
|
|
$this->analyseSupportedDatabases(); |
|
|
|
|
|
|
|
$this->analyseCommands(); |
|
|
|
return $this->missing; |
|
|
|
return $this->missing; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private function analysePhpVersion() { |
|
|
|
private function analysePhpVersion() { |
|
|
|
if (isset($this->dependencies['php']['@attributes']['min-version'])) { |
|
|
|
if (isset($this->dependencies['php']['@attributes']['min-version'])) { |
|
|
|
$minVersion = $this->dependencies['php']['@attributes']['min-version']; |
|
|
|
$minVersion = $this->dependencies['php']['@attributes']['min-version']; |
|
|
|
if (version_compare($this->system->getPhpVersion(), $minVersion, '<')) { |
|
|
|
if (version_compare($this->platform->getPhpVersion(), $minVersion, '<')) { |
|
|
|
$this->missing[] = (string)$this->l->t('PHP %s or higher is required.', $minVersion); |
|
|
|
$this->addMissing((string)$this->l->t('PHP %s or higher is required.', $minVersion)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (isset($this->dependencies['php']['@attributes']['max-version'])) { |
|
|
|
if (isset($this->dependencies['php']['@attributes']['max-version'])) { |
|
|
|
$maxVersion = $this->dependencies['php']['@attributes']['max-version']; |
|
|
|
$maxVersion = $this->dependencies['php']['@attributes']['max-version']; |
|
|
|
if (version_compare($this->system->getPhpVersion(), $maxVersion, '>')) { |
|
|
|
if (version_compare($this->platform->getPhpVersion(), $maxVersion, '>')) { |
|
|
|
$this->missing[] = (string)$this->l->t('PHP with a version less then %s is required.', $maxVersion); |
|
|
|
$this->addMissing((string)$this->l->t('PHP with a version less then %s is required.', $maxVersion)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -74,14 +75,46 @@ class DependencyAnalyzer { |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
$supportedDatabases = array_map(function($db) { |
|
|
|
$supportedDatabases = array_map(function($db) { |
|
|
|
if (isset($db['@value'])) { |
|
|
|
return $this->getValue($db); |
|
|
|
return $db['@value']; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return $db; |
|
|
|
|
|
|
|
}, $supportedDatabases); |
|
|
|
}, $supportedDatabases); |
|
|
|
$currentDatabase = $this->system->getDatabase(); |
|
|
|
$currentDatabase = $this->platform->getDatabase(); |
|
|
|
if (!in_array($currentDatabase, $supportedDatabases)) { |
|
|
|
if (!in_array($currentDatabase, $supportedDatabases)) { |
|
|
|
$this->missing[] = (string)$this->l->t('Following databases are supported: %s', join(', ', $supportedDatabases)); |
|
|
|
$this->addMissing((string)$this->l->t('Following databases are supported: %s', join(', ', $supportedDatabases))); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private function analyseCommands() { |
|
|
|
|
|
|
|
if (!isset($this->dependencies['command'])) { |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$commands = $this->dependencies['command']; |
|
|
|
|
|
|
|
$os = $this->platform->getOS(); |
|
|
|
|
|
|
|
foreach($commands as $command) { |
|
|
|
|
|
|
|
if (isset($command['@attributes']['os']) && $command['@attributes']['os'] !== $os) { |
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
$commandName = $this->getValue($command); |
|
|
|
|
|
|
|
if (!$this->platform->isCommandKnown($commandName)) { |
|
|
|
|
|
|
|
$this->addMissing((string)$this->l->t('The command line tool %s could not be found', $commandName)); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* @param $element |
|
|
|
|
|
|
|
* @return mixed |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private function getValue($element) { |
|
|
|
|
|
|
|
if (isset($element['@value'])) |
|
|
|
|
|
|
|
return $element['@value']; |
|
|
|
|
|
|
|
return strval($element); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* @param $minVersion |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private function addMissing($message) { |
|
|
|
|
|
|
|
$this->missing[] = $message; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|