public function testGetApps() { $query = \OC_DB::prepare('SELECT DISTINCT `appid` FROM `*PREFIX*appconfig` ORDER BY `appid`'); $result = $query->execute(); $expected = array(); while ($row = $result->fetchRow()) { $expected[] = $row['appid']; } sort($expected); $apps = \OC_Appconfig::getApps(); $this->assertEquals($expected, $apps); }
/** * @brief loads all apps * @returns true/false * * This function walks through the owncloud directory and loads all apps * it can find. A directory contains an app if the file /appinfo/app.php * exists. */ public static function loadApps() { // Did we allready load everything? if (self::$init) { return true; } // Our very own core apps are hardcoded foreach (array('files', 'settings') as $app) { require $app . '/appinfo/app.php'; } // The rest comes here $apps = OC_Appconfig::getApps(); foreach ($apps as $app) { if (self::isEnabled($app)) { if (is_file(OC::$SERVERROOT . '/apps/' . $app . '/appinfo/app.php')) { require 'apps/' . $app . '/appinfo/app.php'; } } } self::$init = true; // return return true; }
// This change is due the fact that an admin may not be expected // to execute arbitrary code in every environment. if ($app === 'core' && isset($_POST['key']) && (substr($_POST['key'], 0, 7) === 'remote_' || substr($_POST['key'], 0, 7) === 'public_')) { OC_JSON::error(array('data' => array('message' => 'Unexpected error!'))); return; } $result = false; switch ($action) { case 'getValue': $result = OC_Appconfig::getValue($app, $_GET['key'], $_GET['defaultValue']); break; case 'setValue': $result = OC_Appconfig::setValue($app, $_POST['key'], $_POST['value']); break; case 'getApps': $result = OC_Appconfig::getApps(); break; case 'getKeys': $result = OC_Appconfig::getKeys($app); break; case 'hasKey': $result = OC_Appconfig::hasKey($app, $_GET['key']); break; case 'deleteKey': $result = OC_Appconfig::deleteKey($app, $_POST['key']); break; case 'deleteApp': $result = OC_Appconfig::deleteApp($app); break; } OC_JSON::success(array('data' => $result));
} if (substr($userName, 0, 5) == 'acct:') { $userName = substr($userName, 5); } if ($userName == "") { $id = ""; } else { $id = $userName . '@' . $hostName; } if (isset($_SERVER['HTTPS'])) { $baseAddress = 'https://'; } else { $baseAddress = 'http://'; } $baseAddress .= $_SERVER['SERVER_NAME'] . OC::$WEBROOT; if (empty($id)) { header("HTTP/1.0 400 Bad Request"); } define('WF_USER', $userName); define('WF_ID', $id); define('WF_BASEURL', $baseAddress); echo "{\"links\":["; $apps = OC_Appconfig::getApps(); foreach ($apps as $app) { if (OCP\App::isEnabled($app)) { if (is_file(OC_App::getAppPath($app) . '/appinfo/webfinger.php')) { require $app . '/appinfo/webfinger.php'; } } } echo "]}";
public function __construct(array $urlParams = array()) { parent::__construct('news', $urlParams); $container = $this->getContainer(); /** * Controllers */ $container->registerService('PageController', function ($c) { return new PageController($c->query('AppName'), $c->query('Request'), $c->query('CoreConfig'), $c->query('L10N'), $c->query('UserId')); }); $container->registerService('FolderController', function ($c) { return new FolderController($c->query('AppName'), $c->query('Request'), $c->query('FolderBusinessLayer'), $c->query('FeedBusinessLayer'), $c->query('ItemBusinessLayer'), $c->query('UserId')); }); $container->registerService('FeedController', function ($c) { return new FeedController($c->query('AppName'), $c->query('Request'), $c->query('FolderBusinessLayer'), $c->query('FeedBusinessLayer'), $c->query('ItemBusinessLayer'), $c->query('CoreConfig'), $c->query('UserId')); }); $container->registerService('ItemController', function ($c) { return new ItemController($c->query('AppName'), $c->query('Request'), $c->query('FeedBusinessLayer'), $c->query('ItemBusinessLayer'), $c->query('CoreConfig'), $c->query('UserId')); }); $container->registerService('ExportController', function ($c) { return new ExportController($c->query('AppName'), $c->query('Request'), $c->query('FeedBusinessLayer'), $c->query('FolderBusinessLayer'), $c->query('ItemBusinessLayer'), $c->query('OPMLExporter'), $c->query('UserId')); }); $container->registerService('ApiController', function ($c) { return new ApiController($c->query('AppName'), $c->query('Request'), $c->query('Updater'), $c->query('CoreConfig')); }); $container->registerService('FolderApiController', function ($c) { return new FolderApiController($c->query('AppName'), $c->query('Request'), $c->query('FolderBusinessLayer'), $c->query('ItemBusinessLayer'), $c->query('UserId')); }); $container->registerService('FeedApiController', function ($c) { return new FeedApiController($c->query('AppName'), $c->query('Request'), $c->query('FolderBusinessLayer'), $c->query('FeedBusinessLayer'), $c->query('ItemBusinessLayer'), $c->query('Logger'), $c->query('UserId')); }); $container->registerService('ItemApiController', function ($c) { return new ItemApiController($c->query('AppName'), $c->query('Request'), $c->query('ItemBusinessLayer'), $c->query('UserId')); }); /** * Business Layer */ $container->registerService('FolderBusinessLayer', function ($c) { return new FolderBusinessLayer($c->query('FolderMapper'), $c->query('L10N'), $c->query('TimeFactory'), $c->query('Config')); }); $container->registerService('FeedBusinessLayer', function ($c) { return new FeedBusinessLayer($c->query('FeedMapper'), $c->query('Fetcher'), $c->query('ItemMapper'), $c->query('Logger'), $c->query('L10N'), $c->query('TimeFactory'), $c->query('Config'), $c->query('Enhancer'), $c->query('HTMLPurifier')); }); $container->registerService('ItemBusinessLayer', function ($c) { return new ItemBusinessLayer($c->query('ItemMapper'), $c->query('StatusFlag'), $c->query('TimeFactory'), $c->query('Config')); }); /** * Mappers */ $container->registerService('MapperFactory', function ($c) { return new MapperFactory($c->query('DatabaseType'), $c->query('Db')); }); $container->registerService('FolderMapper', function ($c) { return new FolderMapper($c->query('Db')); }); $container->registerService('FeedMapper', function ($c) { return new FeedMapper($c->query('Db')); }); $container->registerService('ItemMapper', function ($c) { return $c->query('MapperFactory')->getItemMapper($c->query('Db')); }); /** * App config parser */ $container->registerService('AppConfig', function ($c) { // not performant but well :/ // $config = $c->query('ServerContainer')->getAppConfig(); oc7 only $installedApps = \OC_Appconfig::getApps(); $apps = array(); foreach ($installedApps as $app) { $apps[] = array($app => \OC_Appconfig::getValue($app, 'installed_version', '0')); } // order extensions in name => version $loadedExtensions = get_loaded_extensions(); $extensions = array(); foreach ($loadedExtensions as $extension) { $extensions[$extension] = phpversion($extension); } return new AppConfig($c->query('ServerContainer')->getNavigationManager(), $c->query('L10N'), $c->query('ServerContainer')->getURLGenerator(), phpversion(), implode('.', \OCP\Util::getVersion()), $apps, $extensions, $c->query('DatabaseType')); }); /** * Core */ $container->registerService('L10N', function ($c) { return $c->query('ServerContainer')->getL10N($c->query('AppName')); }); $container->registerService('UserId', function () { return \OCP\User::getUser(); }); $container->registerService('Logger', function ($c) { return new Logger($c->query('AppName')); }); $container->registerService('Db', function () { return new Db(); }); $container->registerService('CoreConfig', function ($c) { return $c->query('ServerContainer')->getConfig(); }); $container->registerService('DatabaseType', function ($c) { return $c->query('ServerContainer')->getConfig()->getSystemValue('dbtype'); }); /** * Utility */ $container->registerService('ConfigView', function () { $view = new View('/news/config'); if (!$view->file_exists('')) { $view->mkdir(''); } return $view; }); $container->registerService('Config', function ($c) { $config = new Config($c->query('ConfigView'), $c->query('Logger')); $config->read('config.ini', true); return $config; }); $container->registerService('simplePieCacheDirectory', function ($c) { $directory = $c->query('CoreConfig')->getSystemValue('datadirectory') . '/news/cache/simplepie'; if (!is_dir($directory)) { mkdir($directory, 0770, true); } return $directory; }); $container->registerService('HTMLPurifier', function ($c) { $directory = $c->query('CoreConfig')->getSystemValue('datadirectory') . '/news/cache/purifier'; if (!is_dir($directory)) { mkdir($directory, 0770, true); } $config = \HTMLPurifier_Config::createDefault(); $config->set('HTML.ForbiddenAttributes', 'class'); $config->set('Cache.SerializerPath', $directory); $config->set('HTML.SafeIframe', true); $config->set('URI.SafeIframeRegexp', '%^(?:https?:)?//(' . 'www.youtube(?:-nocookie)?.com/embed/|' . 'player.vimeo.com/video/)%'); //allow YouTube and Vimeo return new \HTMLPurifier($config); }); $container->registerService('Enhancer', function ($c) { $enhancer = new Enhancer(); // register simple enhancers from config json file $xpathEnhancerConfig = file_get_contents(__DIR__ . '/../articleenhancer/xpathenhancers.json'); foreach (json_decode($xpathEnhancerConfig, true) as $feed => $config) { $articleEnhancer = new XPathArticleEnhancer($c->query('SimplePieAPIFactory'), $config, $c->query('Config')); $enhancer->registerEnhancer($feed, $articleEnhancer); } $regexEnhancerConfig = file_get_contents(__DIR__ . '/../articleenhancer/regexenhancers.json'); foreach (json_decode($regexEnhancerConfig, true) as $feed => $config) { foreach ($config as $matchArticleUrl => $regex) { $articleEnhancer = new RegexArticleEnhancer($matchArticleUrl, $regex); $enhancer->registerEnhancer($feed, $articleEnhancer); } } return $enhancer; }); /** * Fetchers */ $container->registerService('Fetcher', function ($c) { $fetcher = new Fetcher(); // register fetchers in order // the most generic fetcher should be the last one $fetcher->registerFetcher($c->query('FeedFetcher')); return $fetcher; }); $container->registerService('FeedFetcher', function ($c) { return new FeedFetcher($c->query('SimplePieAPIFactory'), $c->query('FaviconFetcher'), $c->query('TimeFactory'), $c->query('simplePieCacheDirectory'), $c->query('Config')); }); $container->registerService('StatusFlag', function () { return new StatusFlag(); }); $container->registerService('OPMLExporter', function () { return new OPMLExporter(); }); $container->registerService('Updater', function ($c) { return new Updater($c->query('FolderBusinessLayer'), $c->query('FeedBusinessLayer'), $c->query('ItemBusinessLayer')); }); $container->registerService('SimplePieAPIFactory', function () { return new SimplePieAPIFactory(); }); $container->registerService('FaviconFetcher', function ($c) { return new FaviconFetcher($c->query('SimplePieAPIFactory'), $c->query('Config')); }); /** * Middleware */ $container->registerService('CORSMiddleware', function ($c) { return new CORSMiddleware($c->query('Request')); }); $container->registerMiddleWare('CORSMiddleware'); }