<?php /** * Defaults * @package Broker */ define ( "SITE_LOCATION", rtrim ( dirname ( $_SERVER ["SCRIPT_NAME"] ), DIRECTORY_SEPARATOR ) . DIRECTORY_SEPARATOR ); define ( "SITE_ROOT_DIR", rtrim ( realpath ( dirname ( dirname ( __FILE__ ) ) ), DIRECTORY_SEPARATOR ) . DIRECTORY_SEPARATOR ); define ( "CONFIG_DIR", "config" ); define ( "CONFIG_MODULES_DIR", "modules" ); define ( "CONFIG_MODULES_EXPANSION_DIR", "expansion" ); define ( "SITE_CONFIG_DIR", SITE_ROOT_DIR . CONFIG_DIR . DIRECTORY_SEPARATOR ); define ( "SITE_CONFIG_MODULES_DIR", SITE_CONFIG_DIR . CONFIG_MODULES_DIR . DIRECTORY_SEPARATOR ); define ( "SITE_CONFIG_MODULES_EXPANSION_DIR", SITE_CONFIG_MODULES_DIR . CONFIG_MODULES_EXPANSION_DIR . DIRECTORY_SEPARATOR ); define ( "INCLUDES_DIR", "includes" ); define ( "INCLUDES_CLASS_DIR", "class" ); define ( "INCLUDES_MODULES_DIR", "modules" ); define ( "SITE_INCLUDES_DIR", SITE_ROOT_DIR . INCLUDES_DIR . DIRECTORY_SEPARATOR ); define ( "SITE_INCLUDES_CLASS_DIR", SITE_INCLUDES_DIR . INCLUDES_CLASS_DIR . DIRECTORY_SEPARATOR ); define ( "SITE_INCLUDES_MODULES_DIR", SITE_INCLUDES_DIR . INCLUDES_MODULES_DIR . DIRECTORY_SEPARATOR ); define ( "LAYOUT_DIR", "layout" ); define ( "LAYOUT_SMARTY_DIR", "smarty" ); define ( "LAYOUT_SMARTY_TEMPLATES_DIR", "templates" ); define ( "LAYOUT_SMARTY_CONFIG_DIR", "config" ); define ( "SITE_LAYOUT_DIR", SITE_ROOT_DIR . LAYOUT_DIR . DIRECTORY_SEPARATOR ); define ( "SITE_LAYOUT_SMARTY_DIR", SITE_LAYOUT_DIR . LAYOUT_SMARTY_DIR . DIRECTORY_SEPARATOR ); define ( "SITE_LAYOUT_SMARTY_TEMPLATES_DIR", SITE_LAYOUT_SMARTY_DIR . LAYOUT_SMARTY_TEMPLATES_DIR . DIRECTORY_SEPARATOR ); define ( "SITE_LAYOUT_SMARTY_CONFIG_DIR", SITE_LAYOUT_SMARTY_DIR . LAYOUT_SMARTY_CONFIG_DIR . DIRECTORY_SEPARATOR ); define ( "CACHE_DIR", "cache" ); define ( "CACHE_CONFIGURATION_DIR", "configuration" ); define ( "CACHE_DATABASE_DIR", "database" ); define ( "CACHE_SMARTY_DIR", "smarty" ); define ( "CACHE_SMARTY_CACHE_DIR", "cache" ); define ( "CACHE_SMARTY_TEMPLATESC_DIR", "templates_c" ); define ( "SITE_CACHE_DIR", SITE_ROOT_DIR . CACHE_DIR . DIRECTORY_SEPARATOR ); define ( "SITE_CACHE_CONFIGURATION_DIR", SITE_CACHE_DIR . CACHE_CONFIGURATION_DIR . DIRECTORY_SEPARATOR ); define ( "SITE_CACHE_DATABASE_DIR", SITE_CACHE_DIR . CACHE_DATABASE_DIR . DIRECTORY_SEPARATOR ); define ( "SITE_CACHE_SMARTY_DIR", SITE_CACHE_DIR . CACHE_SMARTY_DIR . DIRECTORY_SEPARATOR ); define ( "SITE_CACHE_SMARTY_CACHE_DIR", SITE_CACHE_SMARTY_DIR . CACHE_SMARTY_CACHE_DIR . DIRECTORY_SEPARATOR ); define ( "SITE_CACHE_SMARTY_TEMPLATESC_DIR", SITE_CACHE_SMARTY_DIR . CACHE_SMARTY_TEMPLATESC_DIR . DIRECTORY_SEPARATOR ); // check for modules if (! extension_loaded ( "curl" )) { die ( "Curl module for PHP is required!" ); } else if (! extension_loaded ( "pdo_sqlite" )) { die ( "Php_sqlite module for PHP is required!" ); } else if (! extension_loaded ( "PDO" )) { die ( "PDO module for PHP is required!" ); } else if (! extension_loaded ( "mbstring" )) { die ( "Mbstring module for PHP is required!" ); } // support PHP 5.3 if (! interface_exists ( "SessionHandlerInterface" )) { /** * SessionHandlerInterface (if not available) */ interface SessionHandlerInterface { /** * Close */ public function close(); /** * Destroy * @param string $session_id */ public function destroy($session_id); /** * Garbage collect * @param number $maxlifetime */ public function gc($maxlifetime); /** * Open * @param string $save_path * @param string $name */ public function open($save_path, $name); /** * Read * @param string $session_id * @return string */ public function read($session_id); /** * Write * @param string $session_id * @param string $session_data */ public function write($session_id, $session_data); } } if (! function_exists ( "hash_equals" )) { /** * Hash equals * @param string $str1 * @param string $str2 * @return boolean */ function hash_equals($str1, $str2) { if (strlen ( $str1 ) != strlen ( $str2 )) { return false; } else { $res = $str1 ^ $str2; $ret = 0; for($i = strlen ( $res ) - 1; $i >= 0; $i --) $ret |= ord ( $res [$i] ); return ! $ret; } } } /** * Autoloader class * * @param string $class */ function autoLoader($class) { if (preg_match ( "/^Broker\\\\([^\\\\]+)$/", $class, $match )) { if (file_exists ( SITE_INCLUDES_CLASS_DIR . $match [1] . ".class.php" )) { require_once (SITE_INCLUDES_CLASS_DIR . $match [1] . ".class.php"); } else { die ( "class " . $class . " not found" ); } } else if (preg_match ( "/^BrokerExpansion\\\\([^\\\\]+)Expansion$/", $class, $match )) { if (file_exists ( SITE_CONFIG_MODULES_EXPANSION_DIR . $match [1] . "Expansion.class.php" )) { require_once (SITE_CONFIG_MODULES_EXPANSION_DIR . $match [1] . "Expansion.class.php"); } } } spl_autoload_register ( "autoLoader" ); // validate configuration \Broker\Configuration::validate (); ?>