aboutsummaryrefslogtreecommitdiff
path: root/ratatoeskr/sys/urlprocess.php
diff options
context:
space:
mode:
authorKevin Chabowski <kevin@kch42.de>2011-08-14 21:47:03 +0200
committerKevin Chabowski <kevin@kch42.de>2011-08-14 21:47:03 +0200
commitbd745354de0247ff4d1903cb9d96fd50dfb4bfce (patch)
treed68b880b02c2eb14ad6783bac109d5352278a59a /ratatoeskr/sys/urlprocess.php
parent252d0d9d422b0ab6dd583022141f4874c98abc5f (diff)
downloadratatoeskr-cms-bd745354de0247ff4d1903cb9d96fd50dfb4bfce.tar.gz
ratatoeskr-cms-bd745354de0247ff4d1903cb9d96fd50dfb4bfce.tar.bz2
ratatoeskr-cms-bd745354de0247ff4d1903cb9d96fd50dfb4bfce.zip
Continued work on the plugin API and added some documentation.
Diffstat (limited to 'ratatoeskr/sys/urlprocess.php')
-rw-r--r--ratatoeskr/sys/urlprocess.php46
1 files changed, 45 insertions, 1 deletions
diff --git a/ratatoeskr/sys/urlprocess.php b/ratatoeskr/sys/urlprocess.php
index e81a0d4..2274197 100644
--- a/ratatoeskr/sys/urlprocess.php
+++ b/ratatoeskr/sys/urlprocess.php
@@ -9,6 +9,11 @@
* See "ratatoeskr/licenses/ratatoeskr" for more information.
*/
+/*
+ * Class: Redirect
+ * Exception that can be thrown inside an <url_action_simple>.
+ * throw new Redirect(array("..", "foo")); will redirect to "../foo" and won't touch $data.
+ */
class Redirect extends Exception
{
public $nextpath;
@@ -18,9 +23,22 @@ class Redirect extends Exception
parent::__construct();
}
}
-
+/*
+ * Class: NotFoundError
+ * An Exception
+ */
class NotFoundError extends Exception { }
+/*
+ * Function: url_action_simple
+ * Generate an action in a more simple way.
+ *
+ * Parameters:
+ * $function - A callback that gets the $data var as an input and returns the new $data var. Can throw an <Redirect> Exception.
+ *
+ * Returns:
+ * A callback that can be used as an url action.
+ */
function url_action_simple($function)
{
return function(&$data, $url_now, &$url_next) use ($function)
@@ -37,6 +55,16 @@ function url_action_simple($function)
};
}
+/*
+ * Function: url_action_subactions
+ * Generate an action that contains subactions. Subactions can redirect to ".." to go to the level above.
+ *
+ * Parameters:
+ * $actions - Associative array of actions.
+ *
+ * Returns:
+ * A callback that can be used as an url action.
+ */
function url_action_subactions($actions)
{
return function (&$data, $url_now, &$url_next) use ($actions)
@@ -47,6 +75,22 @@ function url_action_subactions($actions)
};
}
+/*
+ * Function: url_process
+ * Choose an appropiate action for the given URL.
+ *
+ * Parameters:
+ * $url - Either an array containing the URL components or the URL (both relative).
+ * $actions - Associative array of actions.
+ * Key is the name (anything alphanumeric, should usually not start with '_', reserved for special URL names, see beneath).
+ * Value is a callback of the form: function(&$data, $url_now, &$url_next). $data can be used for shared data between subactions. $url_next can be modified in order to redirect to another action / stop the routing.
+ *
+ * Special actions:
+ * _default - If nothing was found, this is the default.
+ * _notfound - If not even _default exists or NotFoundError was thrown.
+ * _prelude - If existant, will be executed before everything else.
+ * _epilog - If existant, will be executed after evrything else.
+ */
function url_process($url, $actions, &$data)
{
$epilog_running = 0;