diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-10-21 16:45:36 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-10-21 16:45:36 +0200 |
commit | 42d69a95f3276a2d6089ca68f635c4e2f6aa7a23 (patch) | |
tree | 6a17fd7998f291e6dec1d996c1e7c724b92b8e58 /config/appconfig.php | |
parent | 0e6598b0734fb927109f745d9c0f3a8605a30ca5 (diff) |
convert tabs indention to indention with 4 spaces because of mixing of both variants in code and better readability on github and websites because you cant set the indention width there and 8 spaces will be used for a tab
Diffstat (limited to 'config/appconfig.php')
-rw-r--r-- | config/appconfig.php | 528 |
1 files changed, 264 insertions, 264 deletions
diff --git a/config/appconfig.php b/config/appconfig.php index e738b22cd..a9045eb9a 100644 --- a/config/appconfig.php +++ b/config/appconfig.php @@ -22,271 +22,271 @@ use \OCP\App; // Used to parse app.json file, should be in core at some point class AppConfig { - private $config; - private $navigationManager; - private $urlGenerator; - private $phpVersion; - private $ownCloudVersion; - private $installedExtensions; - private $databaseType; - - /** - * TODO: External deps that are needed: - * - add jobs - * - connect to hooks - */ - public function __construct(INavigationManager $navigationManager, - IURLGenerator $urlGenerator, - $phpVersion, - $ownCloudVersion, - $installedExtensions, - $databaseType) { - $this->navigationManager = $navigationManager; - $this->urlGenerator = $urlGenerator; - $this->ownCloudVersion = $ownCloudVersion; - $this->phpVersion = $phpVersion; - $this->installedExtensions = $installedExtensions; - $this->databaseType = $databaseType; - $this->config = []; - } - - - /** - * @param string|array $data path to the config file or an array with the config - */ - public function loadConfig($data) { - if(is_array($data)) { - $this->config = $data; - } else { - $json = file_get_contents($data); - $this->config = json_decode($json, true); - } - - // fill config with default values if no navigation is added - if(array_key_exists('navigation', $this->config)) { - $nav =& $this->config['navigation']; - - // add defaults - $defaults = [ - 'id' => $this->config['id'], - 'route' => $this->config['id'] . '.page.index', - 'order' => 10, - 'icon' => 'app.svg', - 'name' => $this->config['name'] - ]; - - foreach($defaults as $key => $value) { - if(!array_key_exists($key, $nav)) { - $nav[$key] = $value; - } - } - } - } - - /** - * @param string $key if given returns the value of the config at index $key - * @return array|mixed the config - */ - public function getConfig($key=null) { - // FIXME: is this function interface a good idea? - if($key !== null) { - return $this->config[$key]; - } else { - return $this->config; - } - } - - - /** - * Registers all config options - */ - public function registerAll() { - $this->registerNavigation(); - $this->registerBackgroundJobs(); - $this->registerHooks(); - $this->registerAdmin(); - } - - - /** - * Parses the navigation and creates a navigation entry if needed - */ - public function registerNavigation() { - // if key is missing, don't create a navigation - if(array_key_exists('navigation', $this->config)) { - $nav =& $this->config['navigation']; - - $navConfig = [ - 'id' => $nav['id'], - 'order' => $nav['order'], - 'name' => $nav['name'] - ]; - - $navConfig['href'] = $this->urlGenerator->linkToRoute($nav['route']); - $navConfig['icon'] = $this->urlGenerator->imagePath($nav['id'], - $nav['icon']); - - $this->navigationManager->add($navConfig); - } - - } - - /** - * Registers admin pages - */ - public function registerAdmin() { - if ($this->config['admin']) { - App::registerAdmin($this->config['id'], 'admin/admin'); - } - } - - - /** - * Registers all jobs in the config - */ - public function registerBackgroundJobs() { - // FIXME: this is temporarily static because core jobs are not public - // yet, therefore legacy code - foreach ($this->config['jobs'] as $job) { - Backgroundjob::addRegularTask($job, 'run'); - } - } - - - /** - * Registers all hooks in the config - */ - public function registerHooks() { - // FIXME: this is temporarily static because core emitters are not future - // proof, therefore legacy code in here - foreach ($this->config['hooks'] as $listen => $react) { - $listener = explode('::', $listen); - $reaction = explode('::', $react); - - // config is written like HookNamespace::method => Class::method - Util::connectHook($listener[0], $listener[1], $reaction[0], - $reaction[1]); - } - } - - - private function testDatabaseDependencies($deps) { - if(array_key_exists('databases', $deps)) { - $databases = $deps['databases']; - $databaseType = $this->databaseType; - - if(!in_array($databaseType, $databases)) { - return 'Database ' . $databaseType . ' not supported.' . - 'App is only compatible with ' . - implode(', ', $databases); - } - } - - return ''; - } - - - private function testPHPDependencies($deps) { - if (array_key_exists('php', $deps)) { - return $this->requireVersion($this->phpVersion, $deps['php'], - 'PHP'); - } - - return ''; - } - - - private function testLibraryDependencies($deps) { - if (array_key_exists('libs', $deps)) { - foreach ($deps['libs'] as $lib => $versions) { - if(array_key_exists($lib, $this->installedExtensions)) { - return $this->requireVersion($this->installedExtensions[$lib], - $versions, 'PHP extension ' . $lib); - } else { - return 'PHP extension ' . $lib . ' required but not installed'; - } - } - } - - return ''; - } - - - /** - * Validates all dependencies that the app has - * @throws DependencyException if one version is not satisfied - */ - public function testDependencies() { - if(array_key_exists('dependencies', $this->config)) { - $deps = $this->config['dependencies']; - - $msg = $this->testDatabaseDependencies($deps); - $msg .= $this->testPHPDependencies($deps); - $msg .= $this->testLibraryDependencies($deps); - - if($msg !== '') { - throw new DependencyException($msg); - } - } - } - - - /** - * Compares a version with a version requirement string - * @param string $actual the actual version that is there - * @param string $required a version requirement in the form of - * <=5.3,>4.5 versions are separated with a comma - * @param string $versionType a description of the string that is prepended - * to the error message - * @return string an error message if the version is not met, + private $config; + private $navigationManager; + private $urlGenerator; + private $phpVersion; + private $ownCloudVersion; + private $installedExtensions; + private $databaseType; + + /** + * TODO: External deps that are needed: + * - add jobs + * - connect to hooks + */ + public function __construct(INavigationManager $navigationManager, + IURLGenerator $urlGenerator, + $phpVersion, + $ownCloudVersion, + $installedExtensions, + $databaseType) { + $this->navigationManager = $navigationManager; + $this->urlGenerator = $urlGenerator; + $this->ownCloudVersion = $ownCloudVersion; + $this->phpVersion = $phpVersion; + $this->installedExtensions = $installedExtensions; + $this->databaseType = $databaseType; + $this->config = []; + } + + + /** + * @param string|array $data path to the config file or an array with the config + */ + public function loadConfig($data) { + if(is_array($data)) { + $this->config = $data; + } else { + $json = file_get_contents($data); + $this->config = json_decode($json, true); + } + + // fill config with default values if no navigation is added + if(array_key_exists('navigation', $this->config)) { + $nav =& $this->config['navigation']; + + // add defaults + $defaults = [ + 'id' => $this->config['id'], + 'route' => $this->config['id'] . '.page.index', + 'order' => 10, + 'icon' => 'app.svg', + 'name' => $this->config['name'] + ]; + + foreach($defaults as $key => $value) { + if(!array_key_exists($key, $nav)) { + $nav[$key] = $value; + } + } + } + } + + /** + * @param string $key if given returns the value of the config at index $key + * @return array|mixed the config + */ + public function getConfig($key=null) { + // FIXME: is this function interface a good idea? + if($key !== null) { + return $this->config[$key]; + } else { + return $this->config; + } + } + + + /** + * Registers all config options + */ + public function registerAll() { + $this->registerNavigation(); + $this->registerBackgroundJobs(); + $this->registerHooks(); + $this->registerAdmin(); + } + + + /** + * Parses the navigation and creates a navigation entry if needed + */ + public function registerNavigation() { + // if key is missing, don't create a navigation + if(array_key_exists('navigation', $this->config)) { + $nav =& $this->config['navigation']; + + $navConfig = [ + 'id' => $nav['id'], + 'order' => $nav['order'], + 'name' => $nav['name'] + ]; + + $navConfig['href'] = $this->urlGenerator->linkToRoute($nav['route']); + $navConfig['icon'] = $this->urlGenerator->imagePath($nav['id'], + $nav['icon']); + + $this->navigationManager->add($navConfig); + } + + } + + /** + * Registers admin pages + */ + public function registerAdmin() { + if ($this->config['admin']) { + App::registerAdmin($this->config['id'], 'admin/admin'); + } + } + + + /** + * Registers all jobs in the config + */ + public function registerBackgroundJobs() { + // FIXME: this is temporarily static because core jobs are not public + // yet, therefore legacy code + foreach ($this->config['jobs'] as $job) { + Backgroundjob::addRegularTask($job, 'run'); + } + } + + + /** + * Registers all hooks in the config + */ + public function registerHooks() { + // FIXME: this is temporarily static because core emitters are not future + // proof, therefore legacy code in here + foreach ($this->config['hooks'] as $listen => $react) { + $listener = explode('::', $listen); + $reaction = explode('::', $react); + + // config is written like HookNamespace::method => Class::method + Util::connectHook($listener[0], $listener[1], $reaction[0], + $reaction[1]); + } + } + + + private function testDatabaseDependencies($deps) { + if(array_key_exists('databases', $deps)) { + $databases = $deps['databases']; + $databaseType = $this->databaseType; + + if(!in_array($databaseType, $databases)) { + return 'Database ' . $databaseType . ' not supported.' . + 'App is only compatible with ' . + implode(', ', $databases); + } + } + + return ''; + } + + + private function testPHPDependencies($deps) { + if (array_key_exists('php', $deps)) { + return $this->requireVersion($this->phpVersion, $deps['php'], + 'PHP'); + } + + return ''; + } + + + private function testLibraryDependencies($deps) { + if (array_key_exists('libs', $deps)) { + foreach ($deps['libs'] as $lib => $versions) { + if(array_key_exists($lib, $this->installedExtensions)) { + return $this->requireVersion($this->installedExtensions[$lib], + $versions, 'PHP extension ' . $lib); + } else { + return 'PHP extension ' . $lib . ' required but not installed'; + } + } + } + + return ''; + } + + + /** + * Validates all dependencies that the app has + * @throws DependencyException if one version is not satisfied + */ + public function testDependencies() { + if(array_key_exists('dependencies', $this->config)) { + $deps = $this->config['dependencies']; + + $msg = $this->testDatabaseDependencies($deps); + $msg .= $this->testPHPDependencies($deps); + $msg .= $this->testLibraryDependencies($deps); + + if($msg !== '') { + throw new DependencyException($msg); + } + } + } + + + /** + * Compares a version with a version requirement string + * @param string $actual the actual version that is there + * @param string $required a version requirement in the form of + * <=5.3,>4.5 versions are separated with a comma + * @param string $versionType a description of the string that is prepended + * to the error message + * @return string an error message if the version is not met, * empty string if ok - */ - private function requireVersion($actual, $required, $versionType) { - $requiredVersions = $this->splitVersions($required); - - foreach($requiredVersions as $version) { - // accept * as wildcard for any version - if($version['version'] === '*') { - continue; - } - if(!version_compare($actual, $version['version'], $version['operator'])) { - return $versionType . ' Version not satisfied: ' . $version['operator'] . - $version['version'] . ' required but found ' . $actual . '\n'; - } - } - - return ''; - } - - - /** - * Versions can be separated by a comma so split them - * @param string $versions a version requirement in the form of - * <=5.3,>4.5 versions are separated with a comma - * @return array of arrays with key=version value=operator - */ - private function splitVersions($versions) { - $result = []; - $versions = explode(',', $versions); - - foreach($versions as $version) { - preg_match('/^(?<operator><|<=|>=|>|<>)?(?<version>.*)$/', $version, $matches); - if($matches['operator'] !== '') { - $required = [ - 'version' => $matches['version'], - 'operator' => $matches['operator'], - ]; - } else { - $required = [ - 'version' => $matches['version'], - 'operator' => '==', - ]; - } - $result[] = $required; - } - - return $result; - } + */ + private function requireVersion($actual, $required, $versionType) { + $requiredVersions = $this->splitVersions($required); + + foreach($requiredVersions as $version) { + // accept * as wildcard for any version + if($version['version'] === '*') { + continue; + } + if(!version_compare($actual, $version['version'], $version['operator'])) { + return $versionType . ' Version not satisfied: ' . $version['operator'] . + $version['version'] . ' required but found ' . $actual . '\n'; + } + } + + return ''; + } + + + /** + * Versions can be separated by a comma so split them + * @param string $versions a version requirement in the form of + * <=5.3,>4.5 versions are separated with a comma + * @return array of arrays with key=version value=operator + */ + private function splitVersions($versions) { + $result = []; + $versions = explode(',', $versions); + + foreach($versions as $version) { + preg_match('/^(?<operator><|<=|>=|>|<>)?(?<version>.*)$/', $version, $matches); + if($matches['operator'] !== '') { + $required = [ + 'version' => $matches['version'], + 'operator' => $matches['operator'], + ]; + } else { + $required = [ + 'version' => $matches['version'], + 'operator' => '==', + ]; + } + $result[] = $required; + } + + return $result; + } }
\ No newline at end of file |