Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBart Visscher <bartv@thisnet.nl>2012-07-23 20:58:52 +0400
committerBart Visscher <bartv@thisnet.nl>2012-07-23 20:58:52 +0400
commit768b44b9b685a07af6030e484ab6322ba44b5b7e (patch)
tree23df0049a675a65447643ca7ef3a18a21841aa7f /lib/router.php
parentd0cae6a99a332af79b2506205aa25aad4313d912 (diff)
Convert routing to ownCloud fluid interface
Diffstat (limited to 'lib/router.php')
-rw-r--r--lib/router.php50
1 files changed, 50 insertions, 0 deletions
diff --git a/lib/router.php b/lib/router.php
new file mode 100644
index 00000000000..f037ecdfef4
--- /dev/null
+++ b/lib/router.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+use Symfony\Component\Routing\Matcher\UrlMatcher;
+use Symfony\Component\Routing\RequestContext;
+use Symfony\Component\Routing\RouteCollection;
+//use Symfony\Component\Routing\Route;
+use Symfony\Component\Routing\Exception\ResourceNotFoundException;
+
+class OC_Router {
+ protected $collections = array();
+ protected $collection = null;
+
+ public function useCollection($name) {
+ if (!isset($this->collections[$name])) {
+ $this->collections[$name] = new RouteCollection();
+ }
+ $this->collection = $this->collections[$name];
+ }
+
+ public function create($name, $pattern, array $defaults = array(), array $requirements = array()) {
+ $route = new OC_Route($pattern, $defaults, $requirements);
+ $this->collection->add($name, $route);
+ return $route;
+ }
+
+ public function match($url) {
+ $context = new RequestContext($_SERVER['REQUEST_URI'], $_SERVER['REQUEST_METHOD']);
+ $matcher = new UrlMatcher($this->collection, $context);
+ $parameters = $matcher->match($url);
+ if (isset($parameters['action'])) {
+ $action = $parameters['action'];
+ if (!is_callable($action)) {
+ var_dump($action);
+ throw new Exception('not a callable action');
+ }
+ unset($parameters['action']);
+ call_user_func($action, $parameters);
+ } elseif (isset($parameters['file'])) {
+ include ($parameters['file']);
+ } else {
+ throw new Exception('no action available');
+ }
+ }
+}