diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2017-05-13 21:31:25 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2017-05-13 21:35:17 +0200 |
commit | 53822bb4bc21cadc135d70d3d099c5fd117424b0 (patch) | |
tree | 0fe2e35c648cf5441fb3be7f7412aa11d8cfedc1 /lib/Config | |
parent | 86c39a75f04a42be50b7f685f84dae46e54fc137 (diff) |
add new apis
Diffstat (limited to 'lib/Config')
-rw-r--r-- | lib/Config/AppConfig.php | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/lib/Config/AppConfig.php b/lib/Config/AppConfig.php deleted file mode 100644 index 9c30b4f80..000000000 --- a/lib/Config/AppConfig.php +++ /dev/null @@ -1,139 +0,0 @@ -<?php -/** - * Nextcloud - News - * - * This file is licensed under the Affero General Public License version 3 or - * later. See the COPYING file. - * - * @author Alessandro Cosentino <cosenal@gmail.com> - * @author Bernhard Posselt <dev@bernhard-posselt.com> - * @copyright Alessandro Cosentino 2012 - * @copyright Bernhard Posselt 2012, 2014 - */ - -namespace OCA\News\Config; - -use OCP\BackgroundJob\IJobList; -use SimpleXMLElement; - -use OCP\INavigationManager; -use OCP\IURLGenerator; -use OCP\Util; -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 $jobList; - - /** - * TODO: External deps that are needed: - * - add jobs - * - connect to hooks - */ - public function __construct(INavigationManager $navigationManager, - IURLGenerator $urlGenerator, - IJobList $jobList) { - $this->navigationManager = $navigationManager; - $this->urlGenerator = $urlGenerator; - $this->config = []; - $this->jobList = $jobList; - } - - - /** - * Parse an xml config - */ - private function parseConfig($string) { - // no need to worry about XXE since local file - $xml = simplexml_load_string($string, 'SimpleXMLElement'); - return json_decode(json_encode((array)$xml), true); - } - - - /** - * @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 { - $this->config = $this->parseConfig($data); - } - } - - - /** - * @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->registerHooks(); - $this->jobList->add('OC\BackgroundJob\Legacy\RegularJob', [$this->config['cron']['job'], 'run']); - App::registerAdmin($this->config['id'], $this->config['admin']); - } - - - /** - * Parses the navigation and creates a navigation entry if needed - */ - public function registerNavigation() { - if (array_key_exists('navigation', $this->config)) { - $this->navigationManager->add(function () { - $nav =& $this->config['navigation']; - - $navConfig = [ - 'id' => $this->config['id'], - 'order' => $nav['order'], - 'name' => $nav['name'] - ]; - - $navConfig['href'] = $this->urlGenerator->linkToRoute( - $nav['route'] - ); - $navConfig['icon'] = $this->urlGenerator->imagePath( - $this->config['id'], $nav['icon'] - ); - - return $navConfig; - }); - } - } - - - /** - * 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 $hook) { - $listener = explode('::', $hook['channel']); - $reaction = explode('::', $hook['subscriber']); - - // config is written like HookNamespace::method => Class::method - Util::connectHook($listener[0], $listener[1], $reaction[0], - $reaction[1]); - } - } - - -} |