summaryrefslogtreecommitdiffstats
path: root/system/core/Router.php
diff options
context:
space:
mode:
authorPascal Kriete <pascal@pascalkriete.com>2011-11-14 21:15:15 +0100
committerPascal Kriete <pascal@pascalkriete.com>2011-11-14 21:15:15 +0100
commitf525f10c850399700a4cce183aef55656ff44d31 (patch)
treed0250655551d773c9347573e594997e07d7280a5 /system/core/Router.php
parent44cdece942c310f5520497dbde4febc26e96c27e (diff)
parent917c3455cc70d5117daa7359f345a820154ada3e (diff)
Merge branch 'release/2.1.0'
Conflicts: user_guide/helpers/url_helper.html
Diffstat (limited to 'system/core/Router.php')
-rwxr-xr-x[-rw-r--r--]system/core/Router.php59
1 files changed, 57 insertions, 2 deletions
diff --git a/system/core/Router.php b/system/core/Router.php
index 5e92a04b1..6da667472 100644..100755
--- a/system/core/Router.php
+++ b/system/core/Router.php
@@ -28,12 +28,54 @@
*/
class CI_Router {
+ /**
+ * Config class
+ *
+ * @var object
+ * @access public
+ */
var $config;
+ /**
+ * List of routes
+ *
+ * @var array
+ * @access public
+ */
var $routes = array();
+ /**
+ * List of error routes
+ *
+ * @var array
+ * @access public
+ */
var $error_routes = array();
+ /**
+ * Current class name
+ *
+ * @var string
+ * @access public
+ */
var $class = '';
+ /**
+ * Current method name
+ *
+ * @var string
+ * @access public
+ */
var $method = 'index';
+ /**
+ * Sub-directory that contains the requested controller class
+ *
+ * @var string
+ * @access public
+ */
var $directory = '';
+ /**
+ * Default controller (and method if specific)
+ *
+ * @var string
+ * @access public
+ */
var $default_controller;
/**
@@ -95,7 +137,7 @@ class CI_Router {
{
include(APPPATH.'config/routes.php');
}
-
+
$this->routes = ( ! isset($route) OR ! is_array($route)) ? array() : $route;
unset($route);
@@ -244,7 +286,20 @@ class CI_Router {
// Does the requested controller exist in the sub-folder?
if ( ! file_exists(APPPATH.'controllers/'.$this->fetch_directory().$segments[0].'.php'))
{
- show_404($this->fetch_directory().$segments[0]);
+ if ( ! empty($this->routes['404_override']))
+ {
+ $x = explode('/', $this->routes['404_override']);
+
+ $this->set_directory('');
+ $this->set_class($x[0]);
+ $this->set_method(isset($x[1]) ? $x[1] : 'index');
+
+ return $x;
+ }
+ else
+ {
+ show_404($this->fetch_directory().$segments[0]);
+ }
}
}
else