File: D:/HostingSpaces/RDamen/damenbeletteringen.nl/wwwroot/admin/installer/third_party/MX/Router.php
<?php (defined('BASEPATH')) OR exit('No direct script access allowed');
/* load the MX core module class */
require dirname(__FILE__).'/Modules.php';
/**
* Modular Extensions - HMVC
*
* Adapted from the CodeIgniter Core Classes
* @link http://codeigniter.com
*
* Description:
* This library extends the CodeIgniter router class.
*
* Install this file as application/third_party/MX/Router.php
*
* @copyright Copyright (c) 2011 Wiredesignz
* @version 5.4
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
**/
class MX_Router extends CI_Router
{
protected $module;
public function fetch_module() {
return $this->module;
}
public function _validate_request($segments) {
if (count($segments) == 0) return $segments;
/* locate module controller */
if ($located = $this->locate($segments)) return $located;
/* use a default 404_override controller */
if (isset($this->routes['404_override']) AND $this->routes['404_override']) {
$segments = explode('/', $this->routes['404_override']);
if ($located = $this->locate($segments)) return $located;
}
/* no controller found */
show_404();
}
/** Locate the controller **/
public function locate($segments) {
$this->module = '';
$this->directory = '';
$ext = $this->config->item('controller_suffix').EXT;
/* use module route if available */
if (isset($segments[0]) AND $routes = Modules::parse_routes($segments[0], implode('/', $segments))) {
$segments = $routes;
}
/* get the segments array elements */
list($module, $directory, $controller) = array_pad($segments, 3, NULL);
/* check modules */
foreach (Modules::$locations as $location => $offset) {
/* module exists? */
if (is_dir($source = $location.$module.'/controllers/')) {
$this->module = $module;
$this->directory = $offset.$module.'/controllers/';
/* module sub-controller exists? */
if($directory AND is_file($source.$directory.$ext)) {
return array_slice($segments, 1);
}
/* module sub-directory exists? */
if($directory AND is_dir($source.$directory.'/')) {
$source = $source.$directory.'/';
$this->directory .= $directory.'/';
/* module sub-directory controller exists? */
if(is_file($source.$directory.$ext)) {
return array_slice($segments, 1);
}
/* module sub-directory sub-controller exists? */
if($controller AND is_file($source.$controller.$ext)) {
return array_slice($segments, 2);
}
}
/* module controller exists? */
if(is_file($source.$module.$ext)) {
return $segments;
}
}
}
/* application controller exists? */
if (is_file(APPPATH.'controllers/'.$module.$ext)) {
return $segments;
}
/* application sub-directory controller exists? */
if($directory AND is_file(APPPATH.'controllers/'.$module.'/'.$directory.$ext)) {
$this->directory = $module.'/';
return array_slice($segments, 1);
}
/* application sub-directory default controller exists? */
if (is_file(APPPATH.'controllers/'.$module.'/'.$this->default_controller.$ext)) {
$this->directory = $module.'/';
return array($this->default_controller);
}
}
public function set_class($class) {
$this->class = $class.$this->config->item('controller_suffix');
}
}