initial commit
This commit is contained in:
commit
f2ff442d8a
21 changed files with 1559 additions and 0 deletions
5
README.textile
Normal file
5
README.textile
Normal file
|
@ -0,0 +1,5 @@
|
|||
Katharsis Framework is a lightweight open-source MVC-framework for PHP5.
|
||||
|
||||
Its principles of project processing as well as its handling are based on the manners of Zend Framework, so it is the perfect tool for a programmer who is looking for a lightweight alternative to Zend Framework.
|
||||
|
||||
Katharsis Framework is written in native, object-orientated PHP5 code only. It keeps things simple without bloating your project unnecessarily.
|
44
application/controller/IndexController.php
Normal file
44
application/controller/IndexController.php
Normal file
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
/**
|
||||
* Example Controller
|
||||
* By specifying controllers you arrange the different parts of your application
|
||||
* into groups of methods called actions
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
*/
|
||||
class IndexController extends Katharsis_Controller_Abstract
|
||||
{
|
||||
/**
|
||||
* Controller init method, will be called on any action request,
|
||||
* before action method is called
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Action method, call url: /controller/action
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function indexAction()
|
||||
{
|
||||
$this->_view->someVariableName = 'Katharsis';
|
||||
echo $this->_view->render('welcome');
|
||||
}
|
||||
|
||||
/**
|
||||
* Fallback method, will be called, if requested action doesn't exist
|
||||
*
|
||||
* @param string $name
|
||||
* @param array $args
|
||||
* @return void
|
||||
*/
|
||||
public function __call($name, $args)
|
||||
{
|
||||
}
|
||||
}
|
23
application/model/Example.php
Normal file
23
application/model/Example.php
Normal file
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
/**
|
||||
* Example Model
|
||||
* Use models do define an interface
|
||||
* between data holders and your application. You can implement your
|
||||
* business logic in model classes as well.
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
*/
|
||||
class Example extends Katharsis_Model_Abstract
|
||||
{
|
||||
/**
|
||||
* Init method, will be called when this class is instanced
|
||||
* Use this method instead of __construct()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
}
|
||||
}
|
12
application/view/welcome.phtml
Normal file
12
application/view/welcome.phtml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<link href="<?=$this->base?>/style/main.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>Welcome</h1>
|
||||
<p>
|
||||
This is an empty <?=$this->someVariableName?> project.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
5
config/database.config.ini
Normal file
5
config/database.config.ini
Normal file
|
@ -0,0 +1,5 @@
|
|||
; [connection:development:default]
|
||||
; host = localhost
|
||||
; user = root
|
||||
; password =
|
||||
; database = myDatabaseName
|
51
library/Katharsis/Autoload.php
Normal file
51
library/Katharsis/Autoload.php
Normal file
|
@ -0,0 +1,51 @@
|
|||
<?php
|
||||
/**
|
||||
* Autoloader
|
||||
* Loads class files automatically when they are needed.
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
*/
|
||||
class Katharsis_Autoload
|
||||
{
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected static $_classLocations = array(
|
||||
'library',
|
||||
'application/controller',
|
||||
'application/model'
|
||||
);
|
||||
|
||||
/**
|
||||
* Registering autoload method
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function init()
|
||||
{
|
||||
spl_autoload_register('Katharsis_Autoload::autoload');
|
||||
}
|
||||
|
||||
/**
|
||||
* Actual autoload method. Loads class files automatically when they are needed
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function autoload($classname)
|
||||
{
|
||||
$name = str_replace("_", DIRECTORY_SEPARATOR, $classname);
|
||||
|
||||
foreach(self::$_classLocations as $location)
|
||||
{
|
||||
if(file_exists($location . DIRECTORY_SEPARATOR . $name . ".php"))
|
||||
{
|
||||
require_once $location . DIRECTORY_SEPARATOR . $name . ".php";
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
die('Autoload: could not load class "' . $classname . '"');
|
||||
}
|
||||
}
|
29
library/Katharsis/Bootstrap.php
Normal file
29
library/Katharsis/Bootstrap.php
Normal file
|
@ -0,0 +1,29 @@
|
|||
<?php require_once('library/Katharsis/Autoload.php');
|
||||
/**
|
||||
* Bootstrap Class
|
||||
* Central application routing entity
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
*/
|
||||
class Katharsis_Bootstrap
|
||||
{
|
||||
/**
|
||||
* Central application routing method
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function run()
|
||||
{
|
||||
$router = Katharsis_ControllerRouting::getInstance();
|
||||
|
||||
$router->init();
|
||||
|
||||
Katharsis_Controller_Plugin::preControllerHook();
|
||||
|
||||
$router->route();
|
||||
|
||||
Katharsis_Controller_Plugin::postControllerHook();
|
||||
}
|
||||
}
|
105
library/Katharsis/Controller/Abstract.php
Normal file
105
library/Katharsis/Controller/Abstract.php
Normal file
|
@ -0,0 +1,105 @@
|
|||
<?php
|
||||
/**
|
||||
* Abstract Controller
|
||||
* All controllers must extend this class.
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
*/
|
||||
abstract class Katharsis_Controller_Abstract
|
||||
{
|
||||
/**
|
||||
* @var Katharsis_Db5
|
||||
*/
|
||||
protected $_con;
|
||||
|
||||
/**
|
||||
* @var Katharsis_View
|
||||
*/
|
||||
protected $_view;
|
||||
|
||||
/**
|
||||
* Instances class attributes, calles init method
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public final function __construct()
|
||||
{
|
||||
$this->_con = Katharsis_DatabaseConnector::getConnection();
|
||||
$this->_view = Katharsis_View::getInstance();
|
||||
$this->init();
|
||||
}
|
||||
|
||||
/**
|
||||
* Overwrite this method instead of using a constructor
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* If subclass hasn't got a __call method, this exception will be thrown
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __call($action, $params)
|
||||
{
|
||||
throw new Katharsis_Exception('Action "' . $action . '" doesn\'t exist.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a specific request parameter
|
||||
*
|
||||
* @param string $key
|
||||
* @return mixed
|
||||
*/
|
||||
protected function _getParam($key)
|
||||
{
|
||||
$params = Katharsis_Request::getParams();
|
||||
if(array_key_exists($key,$params))
|
||||
{
|
||||
return $params[$key];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all request parameters
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function _getAllParams()
|
||||
{
|
||||
return Katharsis_Request::getParams();
|
||||
}
|
||||
|
||||
/**
|
||||
* Forward to an other action
|
||||
*
|
||||
* @param string $action
|
||||
* @param string $controller
|
||||
* @param array $getParams
|
||||
* @return void
|
||||
*/
|
||||
protected function _location($action, $controller = null, $getParams = null)
|
||||
{
|
||||
if($controller === null)
|
||||
{
|
||||
$controller = Katharsis_Request::getControllerName();
|
||||
}
|
||||
|
||||
$paramstring = "";
|
||||
if($getParams !== null)
|
||||
{
|
||||
foreach($getParams as $key => $value)
|
||||
{
|
||||
$paramstring .= "/" . (string) $key . "/" . (string) $value;
|
||||
}
|
||||
}
|
||||
|
||||
header("location: " . $this->_view->base . "/" . $controller . "/" . $action . $paramstring);
|
||||
}
|
||||
}
|
53
library/Katharsis/Controller/Plugin.php
Normal file
53
library/Katharsis/Controller/Plugin.php
Normal file
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
/**
|
||||
* Central Plugin Class
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
*/
|
||||
class Katharsis_Controller_Plugin
|
||||
{
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected static $_plugins;
|
||||
|
||||
/**
|
||||
* Register all plugins with this method
|
||||
* Plugins will be called in the same order as they have been registered
|
||||
*
|
||||
* @param object $object - an instance of your plugin
|
||||
* @return void
|
||||
*/
|
||||
public static function registerPlugin($object)
|
||||
{
|
||||
self::$_plugins[] = $object;
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes preController methods of all plugins
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function preControllerHook()
|
||||
{
|
||||
foreach(self::$_plugins as $plugin)
|
||||
{
|
||||
$plugin->preController();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes postController methods of all plugins
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function postControllerHook()
|
||||
{
|
||||
foreach(self::$_plugins as $plugin)
|
||||
{
|
||||
$plugin->postController();
|
||||
}
|
||||
}
|
||||
}
|
31
library/Katharsis/Controller/Plugin/Abstract.php
Normal file
31
library/Katharsis/Controller/Plugin/Abstract.php
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
/**
|
||||
* Abstract Controller Plugin
|
||||
* All controller plugins must extend this class.
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
*/
|
||||
abstract class Katharsis_Controller_Plugin_Abstract
|
||||
{
|
||||
/**
|
||||
* Overwrite this method, if you want something to be processed
|
||||
* _before_ the controller is called
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function preController()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Overwrite this method, if you want something to be processed
|
||||
* _after_ the controller was called
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function postController()
|
||||
{
|
||||
}
|
||||
}
|
32
library/Katharsis/Controller/Plugin/Autorender.php
Normal file
32
library/Katharsis/Controller/Plugin/Autorender.php
Normal file
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
/**
|
||||
* Autorender Controller Plugin
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
*/
|
||||
class Katharsis_Controller_Plugin_Autorender extends Katharsis_Controller_Plugin_Abstract
|
||||
{
|
||||
/**
|
||||
* Renders a controller/action.phtml template automaticly after processing controller
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function postController()
|
||||
{
|
||||
$view = Katharsis_View::getInstance();
|
||||
|
||||
$view->controllerAction = false;
|
||||
|
||||
$templateName = strtolower(Katharsis_Request::getControllerName()) . DIRECTORY_SEPARATOR . strtolower(Katharsis_Request::getActionName());
|
||||
|
||||
if(file_exists('application/view' . DIRECTORY_SEPARATOR . $templateName . '.phtml'))
|
||||
{
|
||||
$view->controllerAction = $templateName;
|
||||
}
|
||||
|
||||
$view = Katharsis_View::getInstance();
|
||||
echo $view->render('main');
|
||||
}
|
||||
}
|
136
library/Katharsis/ControllerRouting.php
Normal file
136
library/Katharsis/ControllerRouting.php
Normal file
|
@ -0,0 +1,136 @@
|
|||
<?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;
|
||||
}
|
||||
}
|
130
library/Katharsis/DatabaseConnector.php
Normal file
130
library/Katharsis/DatabaseConnector.php
Normal file
|
@ -0,0 +1,130 @@
|
|||
<?php
|
||||
/**
|
||||
* Database Connector
|
||||
* controls database connections
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
*/
|
||||
class Katharsis_DatabaseConnector
|
||||
{
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public static $_conns = array();
|
||||
|
||||
/**
|
||||
* Reading ini file information and connecting
|
||||
*
|
||||
* @param string $requestedName
|
||||
* @return Katharsis_Db5
|
||||
*/
|
||||
protected static function connect($requestedName = null)
|
||||
{
|
||||
$ini = parse_ini_file('config/database.config.ini', true);
|
||||
if($ini !== array())
|
||||
{
|
||||
$conInformation = self::_selectConnection($ini, $requestedName);
|
||||
return self::_realConnect($conInformation);
|
||||
} else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Connects to all connections in config file
|
||||
*
|
||||
* @param string $requestedName
|
||||
* @return void
|
||||
*/
|
||||
public static function connectAll()
|
||||
{
|
||||
$groups = parse_ini_file('config/database.config.ini', true);
|
||||
|
||||
foreach($groups as $iniName => $conInformation)
|
||||
{
|
||||
if(preg_match("~^connection:([^:]+)~", $iniName, $matches))
|
||||
{
|
||||
self::getConnection($matches[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Calling Katharsis Db connecting method
|
||||
*
|
||||
* @param string $requestedName
|
||||
* @return Katharsis_Db5
|
||||
*/
|
||||
protected static function _realConnect($conInformation)
|
||||
{
|
||||
$con = new Katharsis_Db5($conInformation['host'], $conInformation['user'], $conInformation['password'], $conInformation['database']);
|
||||
|
||||
self::$_conns[$conInformation['name']]['connection'] = $con;
|
||||
self::$_conns[$conInformation['name']]['info'] = $conInformation;
|
||||
|
||||
return $con;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns specified or default connection
|
||||
*
|
||||
* @param string $requestedName
|
||||
* @return Katharsis_Db5
|
||||
*/
|
||||
public static function getConnection($requestedName = null)
|
||||
{
|
||||
if($requestedName === null)
|
||||
{
|
||||
foreach(self::$_conns as $con)
|
||||
{
|
||||
if($con['info']['default'] === true)
|
||||
{
|
||||
return $con['connection'];
|
||||
}
|
||||
}
|
||||
return self::connect(null);
|
||||
} else
|
||||
{
|
||||
if(in_array($requestedName, array_keys(self::$_conns)))
|
||||
{
|
||||
return self::$_conns[$requestedName]['connection'];
|
||||
}
|
||||
return self::connect($requestedName);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of connection information
|
||||
*
|
||||
* @param array $ini
|
||||
* @param string $requestedName
|
||||
* @return array
|
||||
*/
|
||||
protected static function _selectConnection($ini, $requestedName = null)
|
||||
{
|
||||
foreach($ini as $name => $connectionInfo)
|
||||
{
|
||||
if($requestedName === null)
|
||||
{
|
||||
if(preg_match("~^connection:([^:]+):default~", $name, $matches))
|
||||
{
|
||||
$connectionInfo['name'] = $matches[1];
|
||||
$connectionInfo['default'] = true;
|
||||
return $connectionInfo;
|
||||
}
|
||||
} else
|
||||
{
|
||||
if(preg_match("~^connection:" . $requestedName . ".*~", $name))
|
||||
{
|
||||
$connectionInfo['default'] = false;
|
||||
$connectionInfo['name'] = $requestedName;
|
||||
return $connectionInfo;
|
||||
}
|
||||
}
|
||||
}
|
||||
throw new Katharsis_Exception('Could not find database connection information for "' . $requestedName . '"');
|
||||
}
|
||||
}
|
627
library/Katharsis/Db5.php
Normal file
627
library/Katharsis/Db5.php
Normal file
|
@ -0,0 +1,627 @@
|
|||
<?php
|
||||
/**
|
||||
* Katharsis Database Class
|
||||
* A mysql query class, that is based on native php functionality (PHP5)
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
*/
|
||||
class Katharsis_Db5
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const FETCHMODE_ASSOC = 'ASSOC';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const FETCHMODE_ARRAY = 'ARRAY';
|
||||
|
||||
/**
|
||||
* @var Mysql Resource
|
||||
*/
|
||||
private $_connection = null;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $_host = null;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $_user = null;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $_password = null;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $_database = null;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $_lastStatement = "";
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $_lastResult = array();
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $_lastError = array();
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $_lastRowCount = 0;
|
||||
|
||||
/**
|
||||
* Create a connection
|
||||
*
|
||||
* @param $host
|
||||
* @param $user
|
||||
* @param $password
|
||||
* @param $database
|
||||
*
|
||||
* @return KatharsisDbConnector
|
||||
*/
|
||||
public function __construct($host = null, $user = null, $password = null, $database = null)
|
||||
{
|
||||
$this->setHost($host);
|
||||
$this->setUser($user);
|
||||
$this->setPassword($password);
|
||||
$this->setDatabase($database);
|
||||
|
||||
if($host !== null && $user !== null && $password !== null && $database !== null)
|
||||
{
|
||||
$this->connect();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of $_host
|
||||
*
|
||||
* @param string $host
|
||||
* @author Karl Pannek
|
||||
*/
|
||||
public function setHost($value)
|
||||
{
|
||||
$this->_host = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of $_user
|
||||
*
|
||||
* @param string $user
|
||||
* @author Karl Pannek
|
||||
*/
|
||||
public function setUser($value)
|
||||
{
|
||||
$this->_user = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of $_password
|
||||
*
|
||||
* @param string $password
|
||||
* @author Karl Pannek
|
||||
*/
|
||||
public function setPassword($value)
|
||||
{
|
||||
$this->_password = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of $_database
|
||||
*
|
||||
* @param string $database
|
||||
* @author Karl Pannek
|
||||
*/
|
||||
public function setDatabase($value)
|
||||
{
|
||||
$this->_database = $value;
|
||||
$this->_selectDatabase();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of $_host
|
||||
*
|
||||
* @return string
|
||||
* @author Karl Pannek
|
||||
*/
|
||||
public function getHost()
|
||||
{
|
||||
return $this->_host;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of $_user
|
||||
*
|
||||
* @return string
|
||||
* @author Karl Pannek
|
||||
*/
|
||||
public function getUser()
|
||||
{
|
||||
return $this->_user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of $_password
|
||||
*
|
||||
* @return string
|
||||
* @author Karl Pannek
|
||||
*/
|
||||
public function getPassword()
|
||||
{
|
||||
return $this->_password;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of $_database
|
||||
*
|
||||
* @return string
|
||||
* @author Karl Pannek
|
||||
*/
|
||||
public function getDatabase()
|
||||
{
|
||||
return $this->_database;
|
||||
}
|
||||
|
||||
/**
|
||||
* Connect to database
|
||||
*
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function connect()
|
||||
{
|
||||
$this->_connection = @mysql_connect(
|
||||
$this->getHost(),
|
||||
$this->getUser(),
|
||||
$this->getPassword(),
|
||||
true
|
||||
);
|
||||
|
||||
if(!$this->_connection)
|
||||
{
|
||||
throw new KatharsisDb5_Exception('Could not connect to "' . $this->getHost() . '" with user "' . $this->getUser() . '".');
|
||||
}
|
||||
|
||||
$this->_selectDatabase();
|
||||
}
|
||||
|
||||
/**
|
||||
* Disconnect database connection
|
||||
* @return bool
|
||||
*/
|
||||
public function disconnect()
|
||||
{
|
||||
$this->_connection = null;
|
||||
return (bool) mysql_close($this->_connection);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks connection to database
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isConnected()
|
||||
{
|
||||
if($this->_connection !== null && $this->_connection !== false)
|
||||
{
|
||||
return true;
|
||||
} else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns mysql connection link resource
|
||||
*
|
||||
* @return mysql link resource
|
||||
*/
|
||||
public function getMysqlResource ()
|
||||
{
|
||||
return $this->_connection;
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes a Sql statement
|
||||
*
|
||||
* @param $statement
|
||||
* @return bool
|
||||
*/
|
||||
public function run ($statement)
|
||||
{
|
||||
if($this->_execute($statement))
|
||||
{
|
||||
return true;
|
||||
} else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns Result set for incremental fetching
|
||||
*
|
||||
* @param $statement
|
||||
* @return KatharsisDb5_ResultSet
|
||||
*/
|
||||
public function runForIncrementalFetch ($statement)
|
||||
{
|
||||
$resultSet = $this->_execute($statement);
|
||||
return new KatharsisDb5_ResultSet($resultSet);
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserts a row into a specified table
|
||||
*
|
||||
* @param $table
|
||||
* @param $values
|
||||
* @return bool
|
||||
*/
|
||||
public function insert ($table, $values = array())
|
||||
{
|
||||
$sets = array();
|
||||
|
||||
foreach($values as $key => $value)
|
||||
{
|
||||
if(is_string($value))
|
||||
{
|
||||
$value = "'" . mysql_real_escape_string($value, $this->_connection) . "'";
|
||||
}
|
||||
$sets[] = "`" . $key . "` = " . $value;
|
||||
}
|
||||
|
||||
$sql = 'INSERT INTO ' . $table;
|
||||
|
||||
if($values !== array())
|
||||
{
|
||||
$sql .= ' SET ' . implode(',', $sets);
|
||||
} else
|
||||
{
|
||||
$sql .= ' () VALUES () ';
|
||||
}
|
||||
|
||||
return $this->run($sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes Query and returns number of rows
|
||||
*
|
||||
* @param $statement
|
||||
* @return int
|
||||
*/
|
||||
public function count ($statement)
|
||||
{
|
||||
$result = $this->_execute($statement);
|
||||
$this->_lastRowCount = mysql_num_rows($result);
|
||||
return $this->_lastRowCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a fetched result set (All rows)
|
||||
*
|
||||
* @param $statement
|
||||
* @param $fetchmode
|
||||
* @return array
|
||||
*/
|
||||
public function fetchAll($statement, $fetchmode = self::FETCHMODE_ASSOC)
|
||||
{
|
||||
return $this->_fetch($statement, $fetchmode, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a fetched result (One rows)
|
||||
*
|
||||
* @param $statement
|
||||
* @param $fetchmode
|
||||
* @return array
|
||||
*/
|
||||
public function fetchOne($statement, $fetchmode = self::FETCHMODE_ASSOC)
|
||||
{
|
||||
return $this->_fetch($statement, $fetchmode, true);
|
||||
}
|
||||
|
||||
public function fetchField ($statement, $field = null)
|
||||
{
|
||||
if($field === null)
|
||||
{
|
||||
$result = $this->_fetch($statement, self::FETCHMODE_ARRAY, true);
|
||||
return $result[0];
|
||||
} else
|
||||
{
|
||||
$result = $this->_fetch($statement, self::FETCHMODE_ASSOC, true);
|
||||
if(array_key_exists($field, $result))
|
||||
{
|
||||
return $result[$field];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints out details of the last query (Html formatted)
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function analyseLast ()
|
||||
{
|
||||
$debug = debug_backtrace();
|
||||
$file = explode("/", str_replace("\\", "/", $debug[0]['file']));
|
||||
$file = $file[count($file)-1];
|
||||
|
||||
|
||||
echo '<pre style="margin: 10px; padding: 0px; background-color: #eee">';
|
||||
|
||||
echo '<table style="width: 100%"><tr><td style="font-size: 0.9em; padding-left: 10px; color: #aaa;">QUERY ANALYSIS | from ' . $file . ' on line ' . $debug[0]['line'] . '</td>';
|
||||
echo '<td align="right" style="padding: 5px;">';
|
||||
echo '<button style="background-color: #ddd; border: 0px solid #bbb;" onclick="parentNode.parentNode.parentNode.parentNode.parentNode.style.display=\'none\';">X</button></td></tr></table>';
|
||||
echo '<div style="margin: 1px; background-color: #FFFCE6; padding: 5px; color: #3F0808;">';
|
||||
echo '<b>Statement:</b><br/>';
|
||||
echo '<p style="margin-left: 15px;">';
|
||||
print_r((string) $this->_lastStatement);
|
||||
echo '</p>';
|
||||
echo '</div>';
|
||||
|
||||
echo '<div style="margin: 1px; background-color: #EFFFEF;padding: 5px; color: #3F0808;">';
|
||||
echo '<b>Result:</b><br/>';
|
||||
echo '<p style="margin-left: 15px;">';
|
||||
print_r($this->_lastResult);
|
||||
echo '</p>';
|
||||
echo '</div>';
|
||||
|
||||
if($this->_lastError)
|
||||
{
|
||||
echo '<div style="margin: 1px; background-color: #FFEEEE; padding: 5px; color: #3F0808;">';
|
||||
echo '<b>Error:</b><br/>';
|
||||
echo '<p style="margin-left: 15px;">';
|
||||
echo '<table>';
|
||||
echo '<tr><td><b>Number:</b></td><td>' . $this->_lastError['number'] . '</td></tr>';
|
||||
echo '<tr><td style="vertical-align:top;"><b>Message:</b></td><td>' . $this->_lastError['message'] . '</td></tr>';
|
||||
echo '</table>';
|
||||
echo '</p>';
|
||||
echo '</div>';
|
||||
}
|
||||
echo '</pre>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepares a statement with certain values
|
||||
*
|
||||
* @param $statement
|
||||
* @param $values
|
||||
* @return string
|
||||
*/
|
||||
public function createStatement ($statement, $values = array())
|
||||
{
|
||||
foreach($values as $key => $value)
|
||||
{
|
||||
$wasString = false;
|
||||
if(is_string($value))
|
||||
{
|
||||
$wasString = true;
|
||||
}
|
||||
|
||||
if($this->_connection !== null)
|
||||
{
|
||||
$value = mysql_real_escape_string($value);
|
||||
} else
|
||||
{
|
||||
$value = mysql_escape_string($value);
|
||||
}
|
||||
|
||||
// if string, or a integer, but wanting to request via LIKE
|
||||
if($wasString || preg_match('~%' . $key . '|' . $key . '%~', $statement))
|
||||
{
|
||||
$statement = preg_replace('~\:(%*)' . $key . '(%*)~', "'" . '${1}' . (string) $value . '${2}' . "'", $statement);
|
||||
} else
|
||||
{
|
||||
$statement = str_replace(":" . $key, $value, $statement);
|
||||
}
|
||||
}
|
||||
|
||||
return $statement;
|
||||
}
|
||||
|
||||
/**
|
||||
* Last primary key that has been inserted
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function lastInsertId ()
|
||||
{
|
||||
return mysql_insert_id($this->_connection);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of rows from the last executed statement
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function lastRowCount ()
|
||||
{
|
||||
return $this->_lastRowCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Select a database for usage
|
||||
*
|
||||
* @return void
|
||||
* @throws KatharsisDb5_Exception
|
||||
*/
|
||||
protected function _selectDatabase()
|
||||
{
|
||||
if($this->isConnected() && $this->getDatabase() !== null)
|
||||
{
|
||||
if(!mysql_select_db($this->getDatabase(), $this->_connection))
|
||||
{
|
||||
throw new KatharsisDb5_Exception('Could not select database "' . $this->getDatabase() . '".');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes Sql statement
|
||||
*
|
||||
* @param $statement
|
||||
* @return mysql resource
|
||||
*/
|
||||
protected function _execute($statement)
|
||||
{
|
||||
if(!$this->isConnected())
|
||||
{
|
||||
throw new KatharsisDb5_Exception("Not connected to database.");
|
||||
}
|
||||
if($result = mysql_query($statement, $this->_connection))
|
||||
{
|
||||
$this->_lastStatement = $statement;
|
||||
$this->_lastRowCount = mysql_affected_rows($this->_connection);
|
||||
}
|
||||
|
||||
if(mysql_error($this->_connection))
|
||||
{
|
||||
$this->_lastError['number'] = mysql_errno($this->_connection);
|
||||
$this->_lastError['message'] = mysql_error($this->_connection);
|
||||
} else
|
||||
{
|
||||
$this->_lastError = array();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetches database result
|
||||
*
|
||||
* @param $statement
|
||||
* @param $fetchmode
|
||||
* @param $fetchOne
|
||||
* @return array
|
||||
*/
|
||||
protected function _fetch($statement, $fetchmode = self::FETCHMODE_ASSOC, $fetchOne = false)
|
||||
{
|
||||
$result = $this->_execute($statement);
|
||||
|
||||
if(!$result)
|
||||
{
|
||||
$this->_lastResult = array();
|
||||
return array();
|
||||
}
|
||||
|
||||
$fetchedResult = array();
|
||||
|
||||
switch($fetchmode)
|
||||
{
|
||||
case self::FETCHMODE_ASSOC:
|
||||
while($row = mysql_fetch_assoc($result))
|
||||
{
|
||||
if($fetchOne)
|
||||
{
|
||||
$fetchedResult = $row;
|
||||
break;
|
||||
} else
|
||||
{
|
||||
$fetchedResult[] = $row;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case self::FETCHMODE_ARRAY:
|
||||
while($row = mysql_fetch_row($result))
|
||||
{
|
||||
if($fetchOne)
|
||||
{
|
||||
$fetchedResult = $row;
|
||||
break;
|
||||
} else
|
||||
{
|
||||
$fetchedResult[] = $row;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new KatharsisDb5_Exception('Wrong Fetchmode');
|
||||
break;
|
||||
}
|
||||
|
||||
$this->_lastResult = $fetchedResult;
|
||||
|
||||
return $fetchedResult;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* KatharsisDb exception spicification
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
*/
|
||||
class KatharsisDb5_Exception extends Exception {}
|
||||
|
||||
/**
|
||||
* KatharsisDb Result Set
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
|
||||
*/
|
||||
class KatharsisDb5_ResultSet
|
||||
{
|
||||
/**
|
||||
* @var Mysql Resource
|
||||
*/
|
||||
private $_resultSet;
|
||||
|
||||
/**
|
||||
* @var Katharsis_Db5
|
||||
*/
|
||||
private $_connection;
|
||||
|
||||
/**
|
||||
* Sets class attributes
|
||||
*
|
||||
* @param Mysql Resource $resultSet
|
||||
*/
|
||||
public function __construct($resultSet)
|
||||
{
|
||||
$this->_resultSet = $resultSet;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetching next row
|
||||
*
|
||||
* @param Mysql Resource $resultSet
|
||||
*/
|
||||
public function fetchNext ($fetchmode = Katharsis_Db5::FETCHMODE_ASSOC)
|
||||
{
|
||||
switch ($fetchmode)
|
||||
{
|
||||
case Katharsis_Db5::FETCHMODE_ASSOC:
|
||||
return mysql_fetch_assoc($this->_resultSet);
|
||||
break;
|
||||
|
||||
case Katharsis_Db5::FETCHMODE_ARRAY:
|
||||
return mysql_fetch_row($this->_resultSet);
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new KatharsisDb5_Exception('Wrong Fetchmode');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
11
library/Katharsis/Exception.php
Normal file
11
library/Katharsis/Exception.php
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
/**
|
||||
* Katharsis Exception
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
*/
|
||||
class Katharsis_Exception extends Exception
|
||||
{
|
||||
}
|
36
library/Katharsis/Model/Abstract.php
Normal file
36
library/Katharsis/Model/Abstract.php
Normal file
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
/**
|
||||
* Abstract Model
|
||||
* All models must extend this class.
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
*/
|
||||
abstract class Katharsis_Model_Abstract
|
||||
{
|
||||
/**
|
||||
* @var Katharsis_Db5
|
||||
*/
|
||||
protected $_con;
|
||||
|
||||
/**
|
||||
* Instances class attributes, calles init method
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public final function __construct()
|
||||
{
|
||||
$this->_con = Katharsis_DatabaseConnector::getConnection();
|
||||
$this->init();
|
||||
}
|
||||
|
||||
/**
|
||||
* Overwrite this method instead of using a constructor
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
}
|
||||
}
|
93
library/Katharsis/Request.php
Normal file
93
library/Katharsis/Request.php
Normal file
|
@ -0,0 +1,93 @@
|
|||
<?php
|
||||
/**
|
||||
* Katharsis Request
|
||||
* Represents a http call
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
*/
|
||||
class Katharsis_Request
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected static $_controller;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected static $_action;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected static $_params = array();
|
||||
|
||||
/**
|
||||
* Set name of controller
|
||||
*
|
||||
* @param string $name
|
||||
* @return void
|
||||
*/
|
||||
public static function setControllerName($name)
|
||||
{
|
||||
self::$_controller = $name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set name of action
|
||||
*
|
||||
* @param string $name
|
||||
* @return void
|
||||
*/
|
||||
public static function setActionName($name)
|
||||
{
|
||||
self::$_action = $name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set parameters
|
||||
*
|
||||
* @param array $params
|
||||
* @return void
|
||||
*/
|
||||
public static function setParams($params)
|
||||
{
|
||||
foreach($_POST as $key => $value)
|
||||
{
|
||||
$params[$key] = $value;
|
||||
}
|
||||
self::$_params = $params;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get controller name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function getControllerName()
|
||||
{
|
||||
return self::$_controller;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get action name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function getActionName()
|
||||
{
|
||||
return self::$_action;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get parameter array
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getParams()
|
||||
{
|
||||
return self::$_params;
|
||||
}
|
||||
}
|
101
library/Katharsis/View.php
Normal file
101
library/Katharsis/View.php
Normal file
|
@ -0,0 +1,101 @@
|
|||
<?php
|
||||
/**
|
||||
* Katharsis View
|
||||
* Controls anything related to the display level
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
*/
|
||||
class Katharsis_View
|
||||
{
|
||||
/**
|
||||
* @var Katharsis_View
|
||||
*/
|
||||
protected static $_instance = null;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_params = array();
|
||||
|
||||
/**
|
||||
* Singleton. Returns the same instance every time
|
||||
*
|
||||
* @return Katharsis_View
|
||||
*/
|
||||
public static function getInstance()
|
||||
{
|
||||
if(self::$_instance === null)
|
||||
{
|
||||
self::$_instance = new self();
|
||||
}
|
||||
return self::$_instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets base application path
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function __construct()
|
||||
{
|
||||
$base = preg_replace('/(.+)\/[^\/]+/', '\1', $_SERVER['SCRIPT_NAME']);
|
||||
$this->_params['base'] = $base != $_SERVER['SCRIPT_NAME'] ? $base : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Magical get method, gets specific param
|
||||
*
|
||||
* @param string $name
|
||||
* @return string
|
||||
*/
|
||||
public function __get($name)
|
||||
{
|
||||
if(array_key_exists($name, $this->_params))
|
||||
{
|
||||
return $this->_params[$name];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Magical set method, sets specific param
|
||||
*
|
||||
* @param string name
|
||||
* @param string value
|
||||
*/
|
||||
public function __set($name, $value)
|
||||
{
|
||||
$this->_params[$name] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Template rendering method
|
||||
*
|
||||
* @param string $template
|
||||
* @return string
|
||||
*/
|
||||
public function render($template)
|
||||
{
|
||||
ob_start();
|
||||
if(file_exists('application/view/' . $template . '.phtml'))
|
||||
{
|
||||
include('application/view/' . $template . '.phtml');
|
||||
}
|
||||
$output = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets Request params into View params
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function requestHook()
|
||||
{
|
||||
$this->_params['params'] = Katharsis_Request::getParams();
|
||||
}
|
||||
}
|
9
public/.htaccess
Normal file
9
public/.htaccess
Normal file
|
@ -0,0 +1,9 @@
|
|||
RewriteEngine On
|
||||
RewriteCond %{REQUEST_FILENAME} -s [OR]
|
||||
RewriteCond %{REQUEST_FILENAME} -l [OR]
|
||||
RewriteCond %{REQUEST_FILENAME} -d
|
||||
RewriteRule ^.*$ - [NC,L]
|
||||
RewriteRule ^.*$ index.php [NC,L]
|
||||
|
||||
php_flag magic_quotes_gpc 0
|
||||
php_value error_reporting 6143
|
26
public/index.php
Normal file
26
public/index.php
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
/**
|
||||
* Index File
|
||||
* Public central routing file
|
||||
*
|
||||
* @author Karl Pannek <info@katharsis.in>
|
||||
* @version 0.5.2
|
||||
* @package Katharsis
|
||||
*/
|
||||
|
||||
chdir('..');
|
||||
require_once('library/Katharsis/Bootstrap.php');
|
||||
Katharsis_Autoload::init();
|
||||
|
||||
Katharsis_Controller_Plugin::registerPlugin(new Katharsis_Controller_Plugin_Autorender());
|
||||
|
||||
|
||||
try {
|
||||
Katharsis_Bootstrap::run();
|
||||
} catch(Exception $e)
|
||||
{
|
||||
echo '<h2>Exception thrown</h2>';
|
||||
echo '<h3>' . $e->getMessage() . '</h3>';
|
||||
echo '<pre>';
|
||||
print_r($e);
|
||||
}
|
0
public/style/main.css
Normal file
0
public/style/main.css
Normal file
Loading…
Add table
Add a link
Reference in a new issue