cleaned project, repaired router

This commit is contained in:
Logsol 2013-07-08 22:52:36 +02:00
parent 2156d3f5c6
commit bffe0f1660
16 changed files with 1172 additions and 1440 deletions

View file

@ -1,136 +1,102 @@
<?php
/**
* Controller Router
* Specific routing entity
*
* @author Karl Pannek <info@katharsis.in>
* @version 0.5.2
* @package Katharsis
*/
class Katharsis_ControllerRouting
{
/**
* @var Katharsis_ControllerRouting
*/
protected static $_instance = null;
/**
* Singleton. Returns the same instance every time
*
* @return Katharsis_ControllerRouting
*/
public static function getInstance()
{
if(self::$_instance === null)
{
self::$_instance = new self();
}
return self::$_instance;
}
/**
* Sets default controller and action names
*
* @return void
*/
protected function __construct()
{
Katharsis_Request::setControllerName('index');
Katharsis_Request::setActionName('index');
}
/**
* Initiates routing process
*
* @return void
*/
public function init()
{
$paramstring = "";
$baseUrl = preg_replace('#(.*/)[^/]+#', '\1', $_SERVER['SCRIPT_NAME']);
if(preg_match("~.*" . $baseUrl . "([^/\?]+)/([^/\?]+)/*([^\?]*)~", $_SERVER['REQUEST_URI'], $matches))
{
$controller = $matches[1];
$action = $matches[2];
$paramstring = $matches[3];
$params = $this->_buildParams($paramstring);
Katharsis_Request::setControllerName($controller);
Katharsis_Request::setActionName($action);
} else if(preg_match("~.*" . $baseUrl . "([^/\?]+)/*([^\?]*)~", $_SERVER['REQUEST_URI'], $matches))
{
$controller = $matches[1];
$paramstring = $matches[2];
$params = $this->_buildParams($paramstring);
Katharsis_Request::setControllerName($controller);
} else
{
if(array_key_exists('controller', $_GET))
{
$controller = $_GET['controller'];
Katharsis_Request::setControllerName($controller);
}
if(array_key_exists('action', $_GET))
{
$action = $_GET['action'];
Katharsis_Request::setActionName($action);
}
$params = $_GET;
}
Katharsis_Request::setParams($params);
Katharsis_View::getInstance()->requestHook();
}
/**
* Routing processing method
*
* @return void
*/
public function route()
{
$controllerName = ucfirst(Katharsis_Request::getControllerName()) . 'Controller';
$action = Katharsis_Request::getActionName() . 'Action';
if(class_exists($controllerName))
{
$controllerObject = new $controllerName();
$controllerObject->$action();
}
}
/**
* Splits parameters to an array and returns them
*
* @return array
*/
protected function _buildParams($string)
{
$params = array();
if(trim($string) !== '')
{
$urlparams = explode("/", $string);
for($i = 0; $i < count($urlparams); $i=$i+2)
{
if(array_key_exists($i+1, $urlparams))
{
$params[$urlparams[$i]] = $urlparams[$i+1];
} else
{
$params[$urlparams[$i]] = null;
}
}
}
return $params;
}
}
<?php
class Katharsis_ControllerRouting
{
protected static $_instance = null;
public static function getInstance()
{
if(self::$_instance === null)
{
self::$_instance = new self();
}
return self::$_instance;
}
protected function __construct()
{
Katharsis_Request::setControllerName('index');
Katharsis_Request::setActionName('index');
}
public function init()
{
$paramstring = "";
$baseUrl = preg_replace('#(.*/)[^/]+#', '\1', $_SERVER['SCRIPT_NAME']);
if(preg_match("~/([^/\?]+)/([^/\?]+)/*([^\?]*)~", $_SERVER['REQUEST_URI'], $matches))
{
$controller = $matches[1];
$action = $matches[2];
$paramstring = $matches[3];
$params = $this->_buildParams($paramstring);
Katharsis_Request::setControllerName($controller);
Katharsis_Request::setActionName($action);
}
else if(preg_match("~/([^/\?]+)/*([^\?]*)~", $_SERVER['REQUEST_URI'], $matches))
{
$controller = $matches[1];
$paramstring = $matches[2];
$params = $this->_buildParams($paramstring);
Katharsis_Request::setControllerName($controller);
}
else
{
if(array_key_exists('controller', $_GET))
{
$controller = $_GET['controller'];
Katharsis_Request::setControllerName($controller);
}
if(array_key_exists('action', $_GET))
{
$action = $_GET['action'];
Katharsis_Request::setActionName($action);
}
$params = $_GET;
}
Katharsis_Request::setParams($params);
Katharsis_View::getInstance()->requestHook();
}
public function route()
{
$controllerName = ucfirst(Katharsis_Request::getControllerName()) . 'Controller';
$action = Katharsis_Request::getActionName() . 'Action';
if(class_exists($controllerName))
{
$controllerObject = new $controllerName();
$controllerObject->$action();
}
}
protected function _buildParams($string)
{
$params = array();
if(trim($string) !== '')
{
$urlparams = explode("/", $string);
for($i = 0; $i < count($urlparams); $i=$i+2)
{
if(array_key_exists($i+1, $urlparams))
{
$params[$urlparams[$i]] = $urlparams[$i+1];
} else
{
$params[$urlparams[$i]] = null;
}
}
}
return $params;
}
}
?>