diff options
author | Bart Visscher <bartv@thisnet.nl> | 2012-08-02 21:51:31 +0200 |
---|---|---|
committer | Bart Visscher <bartv@thisnet.nl> | 2012-08-10 23:31:21 +0200 |
commit | f63b9b44d8ac62a136d4cd6844e72af7a8044703 (patch) | |
tree | bd0a767a23f935d981cd1435e34690db65dfd73f /lib/router.php | |
parent | 72b2324b68c51baf140c6fab7957b59c31de4832 (diff) | |
download | nextcloud-server-f63b9b44d8ac62a136d4cd6844e72af7a8044703.tar.gz nextcloud-server-f63b9b44d8ac62a136d4cd6844e72af7a8044703.zip |
Routing: combine all routes into one set
Diffstat (limited to 'lib/router.php')
-rw-r--r-- | lib/router.php | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/lib/router.php b/lib/router.php index a721255f297..3ba2125465a 100644 --- a/lib/router.php +++ b/lib/router.php @@ -15,30 +15,34 @@ use Symfony\Component\Routing\Exception\ResourceNotFoundException; class OC_Router { protected $collections = array(); protected $collection = null; - - public function __construct() { - // TODO cache - $this->loadRoutes(); - } + protected $root = null; /** * loads the api routes */ public function loadRoutes() { // TODO cache + $this->root = $this->getCollection('root'); foreach(OC_APP::getEnabledApps() as $app){ $file = OC_App::getAppPath($app).'/appinfo/routes.php'; if(file_exists($file)){ + $this->useCollection($app); require_once($file); + $collection = $this->getCollection($app); + $this->root->addCollection($collection, '/apps/'.$app); } } } - public function useCollection($name) { + protected function getCollection($name) { if (!isset($this->collections[$name])) { $this->collections[$name] = new RouteCollection(); } - $this->collection = $this->collections[$name]; + return $this->collections[$name]; + } + + public function useCollection($name) { + $this->collection = $this->getCollection($name); } public function create($name, $pattern, array $defaults = array(), array $requirements = array()) { @@ -49,7 +53,7 @@ class OC_Router { public function match($url) { $context = new RequestContext($_SERVER['REQUEST_URI'], $_SERVER['REQUEST_METHOD']); - $matcher = new UrlMatcher($this->collection, $context); + $matcher = new UrlMatcher($this->root, $context); $parameters = $matcher->match($url); if (isset($parameters['action'])) { $action = $parameters['action']; |