/** * Set the route mapping * * This function determines what should be served based on the URI request, * as well as any "routes" that have been set in the routing config file. * * @access private * @return void */ function _set_routing() { // Are query strings enabled in the config file? Normally CI doesn't utilize query strings // since URI segments are more search-engine friendly, but they can optionally be used. // If this feature is enabled, we will gather the directory/class/method a little differently $segments = array(); if ($this->config['enable_query_strings'] === TRUE and isset($_GET[$this->config['controller_trigger']])) { if (isset($_GET[$this->config['ns_trigger']]) and isset($this->routes[trim($this->uri->_filter_uri($_GET[$this->config['ns_trigger']]))]['ns'])) { $this->set_ns($this->routes[trim($this->uri->_filter_uri($_GET[$this->config['ns_trigger']]))]['ns']); } if (isset($_GET[$this->config['controller_trigger']])) { $this->set_class($seg = trim($this->uri->_filter_uri($_GET[$this->config['controller_trigger']]))); $segments[] = $seg; } if (isset($_GET[$this->config['function_trigger']])) { $this->set_method(trim($this->uri->_filter_uri($_GET[$this->config['function_trigger']]))); $segments[] = $this->fetch_method(); } } // Set the default controller so we can display it in the event // the URI doesn't correlated to a valid controller. $this->default_controller = (!isset($this->routes['default_controller']) or $this->routes['default_controller'] == '') ? FALSE : strtolower($this->routes['default_controller']); // Were there any query string segments? If so, we'll validate them and bail out since we're done. if (count($segments) > 0) { return $this->_validate_request($segments); } // Fetch the complete URI string $this->uri->_fetch_uri_string(); // Is there a URI string? If not, the default controller specified in the "routes" file will be shown. if ($this->uri->uri_string == '') { return $this->_set_default_controller(); } // Do we need to remove the URL suffix? $this->uri->_remove_url_suffix(); // Compile the segments into an array $this->uri->_explode_segments(); // Parse any custom routing that may exist $this->_parse_routes(); // Re-index the segment array so that it starts with 1 rather than 0 $this->uri->_reindex_segments(); }