| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 | <?php/** *  base.php PHPCMS框架入口文件 * * @copyright			(C) 2005-2010 PHPCMS * @license				http://www.phpcms.cn/license/ * @lastmodify			2010-6-7 */define('IN_PHPCMS', true);//PHPCMS框架路径define('PC_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);if(!defined('PHPCMS_PATH')) define('PHPCMS_PATH', PC_PATH.'..'.DIRECTORY_SEPARATOR);//缓存文件夹地址define('CACHE_PATH', PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR);//主机协议define('SITE_PROTOCOL', isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://');//当前访问的主机名define('SITE_URL', (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ''));//来源define('HTTP_REFERER', isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '');//系统开始时间define('SYS_START_TIME', microtime());//加载公用函数库pc_base::load_sys_func('global');pc_base::load_sys_func('extention');pc_base::auto_load_func();pc_base::load_config('system','errorlog') ? set_error_handler('my_error_handler') : error_reporting(E_ERROR | E_WARNING | E_PARSE);//设置本地时差function_exists('date_default_timezone_set') && date_default_timezone_set(pc_base::load_config('system','timezone'));define('CHARSET' ,pc_base::load_config('system','charset'));//输出页面字符集header('Content-type: text/html; charset='.CHARSET);define('SYS_TIME', time());//定义网站根路径define('WEB_PATH',pc_base::load_config('system','web_path'));//js 路径define('JS_PATH',pc_base::load_config('system','js_path'));//css 路径define('CSS_PATH',pc_base::load_config('system','css_path'));//img 路径define('IMG_PATH',pc_base::load_config('system','img_path'));//动态程序路径define('APP_PATH',pc_base::load_config('system','app_path'));//自定义 js 路径define('MY_JS_PATH',pc_base::load_config('system','my_js_path'));//自定义 css 路径define('MY_CSS_PATH',pc_base::load_config('system','my_css_path'));//自定义 img 路径define('MY_IMG_PATH',pc_base::load_config('system','my_img_path'));define('MY_PATH',pc_base::load_config('system','my_path'));//自定义手机版的APP_PATHdefine('WAP_APP_PATH',pc_base::load_config('system','wap_app_path'));//应用静态文件路径define('PLUGIN_STATICS_PATH',WEB_PATH.'statics/plugin/');if(pc_base::load_config('system','gzip') && function_exists('ob_gzhandler')) {	ob_start('ob_gzhandler');} else {	ob_start();}class pc_base {		/**	 * 初始化应用程序	 */	public static function creat_app() {		return self::load_sys_class('application');	}	/**	 * 加载系统类方法	 * @param string $classname 类名	 * @param string $path 扩展地址	 * @param intger $initialize 是否初始化	 */	public static function load_sys_class($classname, $path = '', $initialize = 1) {			return self::_load_class($classname, $path, $initialize);	}		/**	 * 加载应用类方法	 * @param string $classname 类名	 * @param string $m 模块	 * @param intger $initialize 是否初始化	 */	public static function load_app_class($classname, $m = '', $initialize = 1) {		$m = empty($m) && defined('ROUTE_M') ? ROUTE_M : $m;		if (empty($m)) return false;		return self::_load_class($classname, 'modules'.DIRECTORY_SEPARATOR.$m.DIRECTORY_SEPARATOR.'classes', $initialize);	}		/**	 * 加载数据模型	 * @param string $classname 类名	 */	public static function load_model($classname) {		return self::_load_class($classname,'model');	}			/**	 * 加载类文件函数	 * @param string $classname 类名	 * @param string $path 扩展地址	 * @param intger $initialize 是否初始化	 */	private static function _load_class($classname, $path = '', $initialize = 1) {		static $classes = array();		if (empty($path)) $path = 'libs'.DIRECTORY_SEPARATOR.'classes';		$key = md5($path.$classname);		if (isset($classes[$key])) {			if (!empty($classes[$key])) {				return $classes[$key];			} else {				return true;			}		}		if (file_exists(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')) {			include PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php';			$name = $classname;			if ($my_path = self::my_path(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')) {				include $my_path;				$name = 'MY_'.$classname;			}			if ($initialize) {				$classes[$key] = new $name;			} else {				$classes[$key] = true;			}			return $classes[$key];		} else {			return false;		}	}		/**	 * 加载系统的函数库	 * @param string $func 函数库名	 */	public static function load_sys_func($func) {		return self::_load_func($func);	}		/**	 * 自动加载autoload目录下函数库	 * @param string $func 函数库名	 */	public static function auto_load_func($path='') {		return self::_auto_load_func($path);	}		/**	 * 加载应用函数库	 * @param string $func 函数库名	 * @param string $m 模型名	 */	public static function load_app_func($func, $m = '') {		$m = empty($m) && defined('ROUTE_M') ? ROUTE_M : $m;		if (empty($m)) return false;		return self::_load_func($func, 'modules'.DIRECTORY_SEPARATOR.$m.DIRECTORY_SEPARATOR.'functions');	}		/**	 * 加载插件类库	 */	public static function load_plugin_class($classname, $identification = '' ,$initialize = 1) {		$identification = empty($identification) && defined('PLUGIN_ID') ? PLUGIN_ID : $identification;		if (empty($identification)) return false;		return pc_base::load_sys_class($classname, 'plugin'.DIRECTORY_SEPARATOR.$identification.DIRECTORY_SEPARATOR.'classes', $initialize);	}		/**	 * 加载插件函数库	 * @param string $func 函数文件名称	 * @param string $identification 插件标识	 */	public static function load_plugin_func($func,$identification) {		static $funcs = array();		$identification = empty($identification) && defined('PLUGIN_ID') ? PLUGIN_ID : $identification;		if (empty($identification)) return false;		$path = 'plugin'.DIRECTORY_SEPARATOR.$identification.DIRECTORY_SEPARATOR.'functions'.DIRECTORY_SEPARATOR.$func.'.func.php';		$key = md5($path);		if (isset($funcs[$key])) return true;		if (file_exists(PC_PATH.$path)) {			include PC_PATH.$path;		} else {			$funcs[$key] = false;			return false;		}		$funcs[$key] = true;		return true;	}		/**	 * 加载插件数据模型	 * @param string $classname 类名	 */	public static function load_plugin_model($classname,$identification) {		$identification = empty($identification) && defined('PLUGIN_ID') ? PLUGIN_ID : $identification;		$path = 'plugin'.DIRECTORY_SEPARATOR.$identification.DIRECTORY_SEPARATOR.'model';		return self::_load_class($classname,$path);	}		/**	 * 加载函数库	 * @param string $func 函数库名	 * @param string $path 地址	 */	private static function _load_func($func, $path = '') {		static $funcs = array();		if (empty($path)) $path = 'libs'.DIRECTORY_SEPARATOR.'functions';		$path .= DIRECTORY_SEPARATOR.$func.'.func.php';		$key = md5($path);		if (isset($funcs[$key])) return true;		if (file_exists(PC_PATH.$path)) {			include PC_PATH.$path;		} else {			$funcs[$key] = false;			return false;		}		$funcs[$key] = true;		return true;	}		/**	 * 加载函数库	 * @param string $func 函数库名	 * @param string $path 地址	 */	private static function _auto_load_func($path = '') {		if (empty($path)) $path = 'libs'.DIRECTORY_SEPARATOR.'functions'.DIRECTORY_SEPARATOR.'autoload';		$path .= DIRECTORY_SEPARATOR.'*.func.php';		$auto_funcs = glob(PC_PATH.DIRECTORY_SEPARATOR.$path);		if(!empty($auto_funcs) && is_array($auto_funcs)) {			foreach($auto_funcs as $func_path) {				include $func_path;			}		}	}	/**	 * 是否有自己的扩展文件	 * @param string $filepath 路径	 */	public static function my_path($filepath) {		$path = pathinfo($filepath);		if (file_exists($path['dirname'].DIRECTORY_SEPARATOR.'MY_'.$path['basename'])) {			return $path['dirname'].DIRECTORY_SEPARATOR.'MY_'.$path['basename'];		} else {			return false;		}	}		/**	 * 加载配置文件	 * @param string $file 配置文件	 * @param string $key  要获取的配置荐	 * @param string $default  默认配置。当获取配置项目失败时该值发生作用。	 * @param boolean $reload 强制重新加载。	 */	public static function load_config($file, $key = '', $default = '', $reload = false) {		static $configs = array();		if (!$reload && isset($configs[$file])) {			if (empty($key)) {				return $configs[$file];			} elseif (isset($configs[$file][$key])) {				return $configs[$file][$key];			} else {				return $default;			}		}		$path = CACHE_PATH.'configs'.DIRECTORY_SEPARATOR.$file.'.php';		if (file_exists($path)) {			$configs[$file] = include $path;		}		if (empty($key)) {			return $configs[$file];		} elseif (isset($configs[$file][$key])) {			return $configs[$file][$key];		} else {			return $default;		}	}}
 |