You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

222 lines
6.4 KiB

<?php
/**
* @package Adserv
*
* GLOBAL CONFIGURATION
*
* This file defines a singleton class that is used for dependency injection
* into the framework dispatcher.
*
* For the most part the settings here shouldn't be changed. The static
* properties can be changed in either _app_config.php or _machine_config.php
* depending on whether the setting is application-wide or machine-specific
*
* From phreeze package
* @license http://www.gnu.org/copyleft/lesser.html LGPL
*
*/
/**
* GlobalConfig is a singleton containing the global variables.
* In general settings should not be changed in this file and should instead
* be made in either _app_config.php or _machine_config.php
*
* For unit testing this object can be swapped out with another object entirely
* to allow for mock data, mockput, etc as needed
*
* @package Portal
* @author sjpadgett@gmail.com
*/
class GlobalConfig
{
/** @var set to true to send debug info to the browser */
public static $DEBUG_MODE = false;
public static $PORTAL = false;
/** @var default action is the controller.method fired when no route is specified */
public static $DEFAULT_ACTION = "Provider.Home";
/** @var routemap is an array of patterns and routes */
public static $ROUTE_MAP;
/** @var specify the template render engine (Smarty, Savant, PHP) */
public static $TEMPLATE_ENGINE = 'SavantRenderEngine';
/** @var template path is the physical location of view template files */
public static $TEMPLATE_PATH;
/** @var template cache path is the physical location where templates can be cached */
public static $TEMPLATE_CACHE_PATH;
/** @var app root is the root directory of the application */
public static $APP_ROOT;
/** @var root url of the application */
public static $ROOT_URL;
/** @var root url of the application */
public static $WEB_ROOT;
/** @var ConnectionSetting object containing settings for the DB connection **/
public static $CONNECTION_SETTING;
/** @var Setting to true will convert all NULL values to an empty string (set to false with caution!) **/
public static $CONVERT_NULL_TO_EMPTYSTRING = true;
/** @var ICache (optional) object for level 2 caching (for example memcached) **/
public static $LEVEL_2_CACHE;
/** @var string if level 2 cache is specified, a temp path for writing files */
public static $LEVEL_2_CACHE_TEMP_PATH;
/** @var int if level 2 cache is specified, the timeout in seconds*/
public static $LEVEL_2_CACHE_TIMEOUT = 15;
private static $INSTANCE;
private static $IS_INITIALIZED = false;
private $context;
private $router;
private $phreezer;
private $render_engine;
/** prevents external construction */
private function __construct()
{
}
/** prevents external cloning */
private function __clone()
{
}
/**
* Initialize the GlobalConfig object
*/
static function Init()
{
if (!self::$IS_INITIALIZED) {
require_once 'verysimple/HTTP/RequestUtil.php';
RequestUtil::NormalizeUrlRewrite();
require_once 'verysimple/Phreeze/PortalController.php';
PortalController::$SmartyViewPrefix = '';
PortalController::$DefaultRedirectMode = 'header';
self::$IS_INITIALIZED = true;
}
}
/**
* Returns an instance of the GlobalConfig singleton
* @return GlobalConfig
*/
static function GetInstance()
{
if (!self::$IS_INITIALIZED) {
self::Init();
}
if (!self::$INSTANCE instanceof self) {
self::$INSTANCE = new self();
}
return self::$INSTANCE;
}
/**
* Returns the context, used for storing session information
* @return Context
*/
function GetContext()
{
if ($this->context == null) {
}
return $this->context;
}
/**
* Returns a URL Writer used to parse/generate URLs
* @return UrlWriter
*/
function GetRouter()
{
if ($this->router == null) {
require_once("verysimple/Phreeze/GenericRouter.php");
$this->router = new GenericRouter(self::$ROOT_URL, self::GetDefaultAction(), self::$ROUTE_MAP);
}
return $this->router;
}
/**
* Returns the requested action requested by the user
* @return string
*/
function GetAction()
{
list($controller,$method) = $this->GetRouter()->GetRoute();
return $controller . '.' . $method;
}
/**
* Returns the default action if none is specified by the user
* @return string
*/
function GetDefaultAction()
{
return self::$DEFAULT_ACTION;
}
/**
* Returns the Phreezer persistence layer
* @return Phreezer
*/
function GetPhreezer()
{
if ($this->phreezer == null) {
if (!self::$CONVERT_NULL_TO_EMPTYSTRING) {
require_once("verysimple/DB/DatabaseConfig.php");
DatabaseConfig::$CONVERT_NULL_TO_EMPTYSTRING = false;
}
if (self::$DEBUG_MODE) {
require_once("verysimple/Phreeze/ObserveToSmarty.php");
$observer = new ObserveToSmarty($this->GetRenderEngine());
$this->phreezer = new Phreezer(self::$CONNECTION_SETTING, $observer);
} else {
$this->phreezer = new Phreezer(self::$CONNECTION_SETTING);
}
if (self::$LEVEL_2_CACHE) {
$this->phreezer->SetLevel2CacheProvider(self::$LEVEL_2_CACHE, self::$LEVEL_2_CACHE_TEMP_PATH);
$this->phreezer->ValueCacheTimeout = self::$LEVEL_2_CACHE_TIMEOUT;
}
}
return $this->phreezer;
}
/**
* @return IRenderEngine
*/
function GetRenderEngine()
{
if ($this->render_engine == null) {
$engine_class = self::$TEMPLATE_ENGINE;
if (!class_exists($engine_class)) {
require_once 'verysimple/Phreeze/' . $engine_class . '.php';
}
$this->render_engine = new $engine_class(self::$TEMPLATE_PATH, self::$TEMPLATE_CACHE_PATH);
$this->render_engine->assign("ROOT_URL", self::$ROOT_URL);
$this->render_engine->assign("PHREEZE_VERSION", Phreezer::$Version);
$this->render_engine->assign("PHREEZE_PHAR", Phreezer::PharPath());
}
return $this->render_engine;
}
}