dispatch(); self::sendResponse($response); } public static function setupEnvironment() { error_reporting(E_ALL|E_STRICT); ini_set('display_errors', true); date_default_timezone_set('Europe/London'); self::$root = dirname(dirname(__FILE__)); define('HTMLPURIFIER_PREFIX', self::$root . '/library'); self::_disableMagicQuotes(); } public static function prepare() { self::setupEnvironment(); Zend_Loader::registerAutoload(); self::setupRegistry(); self::setupConfiguration(); self::setupFrontController(); self::setupView(); self::setupDatabase(); self::setupAcl(); } public static function setupFrontController() { self::$frontController = Zend_Controller_Front::getInstance(); self::$frontController->throwExceptions(true); self::$frontController->returnResponse(true); self::$frontController->setControllerDirectory( array( 'default' => self::$root . '/application/controllers', 'admin' => self::$root . '/application/admin/controllers' ) ); $router = self::$frontController->getRouter(); $router->addRoutes(self::_assembleRoutes()); self::$frontController->setParam('registry', self::$registry); $response = new Zend_Controller_Response_Http; $response->setHeader('Content-Type', 'text/html; charset=UTF-8', true); self::$frontController->setResponse($response); } public static function setupView() { $view = new Zend_View; $view->setEncoding('UTF-8'); $view->doctype('XHTML1_STRICT'); $view->addHelperPath( self::$root . '/application/views/helpers', 'ZFBlog_View_Helper_' ); $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view); Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); Zend_Layout::startMvc( array( 'layoutPath' => self::$root . '/application/views/layouts', 'layout' => 'common', 'pluginClass' => 'ZFBlog_Layout_Controller_Plugin_Layout' ) ); } public static function sendResponse(Zend_Controller_Response_Http $response) { $response->sendResponse(); } public static function setupRegistry() { self::$registry = new Zend_Registry(array(), ArrayObject::ARRAY_AS_PROPS); Zend_Registry::setInstance(self::$registry); } public static function setupConfiguration() { $config = new Zend_Config_Ini( self::$root . '/config/config.ini', 'general' ); self::$registry->configuration = $config; } public static function setupDatabase() { $config = self::$registry->configuration; $db = Zend_Db::factory($config->db->adapter, $config->db->toArray()); $db->query("SET NAMES 'utf8'"); self::$registry->database = $db; Zend_Db_Table::setDefaultAdapter($db); } public static function setupAcl() { $auth = Zend_Auth::getInstance(); $acl = new ZFBlog_Acl($auth); self::$frontController->setParam('auth', $auth); self::$frontController->setParam('acl', $acl); self::$frontController->registerPlugin( new ZFBlog_Controller_Plugin_Acl($auth, $acl) ); } protected static function _assembleRoutes() { $routes = array(); $routes['entry'] = new Zend_Controller_Router_Route_Regex( '[0-9a-z\.\_!;,\+\-\%]+-(\d+)', array( 'module' => 'default', 'controller' => 'entry', 'action' => 'view' ), array( 'id' => 1 ) ); return $routes; } protected static function _disableMagicQuotes() { if (get_magic_quotes_gpc()) { $_GET = self::_stripSlashes($_GET); $_POST = self::_stripSlashes($_POST); $_REQUEST = self::_stripSlashes($_REQUEST); $_COOKIE = self::_stripSlashes($_COOKIE); } } protected static function _stripSlashes($value) { if (is_array($value)) { $value = array_map(array($this, '_stripSlashes'), $value); } else { $value = stripslashes($value); } return $value; } }