gusucode.com > 同城苏州黄页系统php源码程序 > lib/base.class.php
<? # 调试级别 define( '__DEBUG_NONE' , 0 ); // 关闭调试 define( '__DEBUG_NOOPTION' , 1 ); // 当 radio,checkbox 表单选项没有被设定时 define( '__DEBUG_OUTDATA' , 2 ); // 输出 写入数据库的数据 define( '__DEBUG_OUTSQL' , 3 ); // 输出 执行的 sql //define( '__DEBUG_______' , 4 ); // 暂无 //define( '__DEBUG_______' , 5 ); // 暂无 //define( '__DEBUG_______' , 6 ); // 暂无 //define( '__DEBUG_______' , 7 ); // 暂无 define( '__DEBUG_RUNTIME' , 8 ); // 输出运行时间 define( '__DEBUG_NODELETE' , 9 ); // 不进行实质性的删除工作,用输出操作文本替代。如删除记录 或 图片 $DB_HANDLE = 0; register_event( array('EVENT_NO_FUNC_INVOKE') ) ; class base { /* * 影响网站的全局变量 */ var $project_name = '黄页' ; var $now ; # 数据库参数 var $dbhost ='localhost'; var $dbname ='wbrick'; var $dbuser ='wbrick'; var $dbpwd ='123456'; /*var $dbhost ='localhost'; var $dbname ='yellowpage'; var $dbuser ='root'; var $dbpwd ='';*/ # 文件路径参数 var $site_url = 'http://qy.suzhou58.com/'; var $domain = array( 'qy.suzhou58.com' ); var $upload_dir = 'upload/'; var $root_path ; var $upload_path ; var $upload_url ; # 多语言 参数 var $if_multilang = false; // 网站支持多语模板 var $default_lang = ''; // 默认的语言 var $current_lang = ''; // 当前的语言 var $language_dirs = array( // 支持的语言目录 'simplified'=>'简体中文', 'traditional'=>'繁體中文', 'english'=>'English', 'japanese'=>'日本語', 'korean'=>'韓國語' ); var $lang_parameter_tag ='Multilang_Current_lang'; // 语言参数 在 $_SESSION 和 $_GET 中的名称 # 其它杂项 var $upload_fld_input_type = array('file','picture'); /** * Enter description here... * * __DEBUG_NONE 无任何异常信息 * __DEBUG_NOOPTION 当 radio,checkbox 表单选项没有被设定时 * __DEBUG_RUNTIME 运行时间输出 * * @var unknown_type */ var $debug=__DEBUG_NONE; var $wrong_msg_style = ' style="color:red"'; var $succee_msg_style = ' style="color:green"'; var $system_msg = array(); // 对于 MySQL 4.1 UTF8 var $bIfMySQLConnUTF8 = true ; function base( $if_conn_db = true ) { $this->site_url = 'http://'.$_SERVER['HTTP_HOST'].'/' ; $this->now = time() ; if( !array( $_SERVER['HTTP_HOST'], $this->domain ) ) exit("本站域名:<a href='{$this->site_url}'>{$this->site_url}</a>"); # 初始化 路径 $this->root_path = dirname(__FILE__).'/../' ; $this->upload_path = $this->root_path . $this->upload_dir ; $this->upload_url = $this->site_url . $this->upload_dir ; # 连接数据库 global $DB_HANDLE; if( $if_conn_db and empty($DB_HANDLE) ) $this->mysql_conn(); # 获得当前使用的语言 信息 $this->get_current_lang(); if( $_SERVER['HTTP_HOST']!='qy.suzhou58.com' ) { Header("HTTP/1.1 404 Not Found"); exit("404 服务器遇到致命错误。<br />{$_SERVER['HTTP_HOST']}") ; } mysql_connect($this->dbhost,$this->dbuser,$this->dbpwd); mysql_query("SET NAMES 'utf8';") ; } # 数据库 初始化函数 ========================================== function mysql_conn($dbname='') { global $DB_HANDLE; mysql_connect($this->dbhost,$this->dbuser,$this->dbpwd); if( !empty($dbname) ) $DB_HANDLE = mysql_select_db($dbname); else $DB_HANDLE = mysql_select_db($this->dbname); if($this->bIfMySQLConnUTF8) mysql_query("SET NAMES 'utf8';") ; } # 系统信息函数 ========================================== function create_msg($msg,$style='') { if(empty($msg)) return false; $this->system_msg[]=array( 'style'=>$style, 'msg'=>$msg ); return $this->out_msg(); } function clear_msg() { $this->system_msg = array(); } function bad($msg) { return $this->create_msg($msg,$this->wrong_msg_style); } function ok($msg) { return $this->create_msg($msg,$this->succee_msg_style); } function out_msg($idx=-1) { if( $idx<0 or $idx+1>count($this->system_msg) ) $thisMsg=end($this->system_msg); else $thisMsg=$this->system_msg[$idx]; return "<label{$thisMsg['style']}>{$thisMsg['msg']}</label>"; } function out_msg_all() { function process_msg($thisMsg){ return "<label{$thisMsg['style']}>{$thisMsg['msg']}</label>";} return implode( "<br>\r\n",array_map('process_msg',$this->system_msg) ); } function has_msg() { return count($this->system_msg); } function get_other_msg($Ob) { $this->system_msg=array_merge($this->system_msg,$Ob->system_msg); } function set_config( $conf, $ignore=array() ) { foreach ($conf as $name=>$value) { if( isset($this->$name) and !in_array($name,$ignore) ) $this->$name = $value ; } } # 多语言 ========================================== function get_current_lang() { if( !$this->if_multilang ) return false; # 默认语言 if( !isset($_SESSION[ $this->lang_parameter_tag ]) ) $_SESSION[ $this->lang_parameter_tag ] = $this->default_lang ; # 更换语言 if( isset($_GET[ $this->lang_parameter_tag ]) and key_exists( $_GET[ $this->lang_parameter_tag ],$this->language_dirs ) ) { $_SESSION[ $this->lang_parameter_tag ] = $_GET[ $this->lang_parameter_tag ] ; } $this->current_lang = $_SESSION[ $this->lang_parameter_tag ] ; } # 事件机制 ========================================== function _touch_user_event( $event_name, $parameters_1=null, $parameters_2=null, $parameters_3=null, $parameters_4=null, $parameters_5=null, $parameters_6=null, $parameters_7=null, $parameters_8=null, $parameters_9=null, $parameters_10=null ) { $parameters = func_get_args(); # 调用 用户事件函数 if( function_exists($event_name) ) { return $event_name( &$this, $parameters_1, $parameters_2, $parameters_3, $parameters_4, $parameters_5, $parameters_6, $parameters_7, $parameters_8, $parameters_9, $parameters_10 ); } # 调用 统一的 Invoke 事件函数 elseif( function_exists('Invoke') ) { return Invoke( &$this, $event_name, $parameters_1, $parameters_2, $parameters_3, $parameters_4, $parameters_5, $parameters_6, $parameters_7, $parameters_8, $parameters_9, $parameters_10 ); } return EVENT_NO_FUNC_INVOKE ; } } # 调试工具 ========================================== /** * 跟踪流程的函数 * * tt(); 每在程序段里被执行一次,则输出一个累加的数据 和 换行符。 * 该行数用于检验所在的程序段是否被执行,或执行多少次 * 例如: * for($i=0;$i<3;$i++) * { * ……;(其他代码) * tt(); * } * 则屏幕上显示: * 1 * 2 * 3 * */ function tt() { global $tlaalt_for_tt; if( empty($tlaalt_for_tt) ) $tlaalt_for_tt=0; $tlaalt_for_tt ++; print $tlaalt_for_tt."<br />\r\n"; } function clear_tt() { global $tlaalt_for_tt; $tlaalt_for_tt = 0; } if( !function_exists('file_put_contents') ) { define( 'FILE_APPEND', 1 ); define( 'FILE_USE_INCLUDE_PATH', 2 ); function file_put_contents( $filename, $str, $flag=0 ) { if( $flag == FILE_APPEND ) $modul = 'a+'; else $modul = 'w+'; if( !$p=fopen($filename,$modul) ) return false; if( !fwrite($p,$str) ) return false; fclose($p); return true; } } /** * 简单格式化输出 * * 传递多个参数,则使用 第一个参数为分隔符,依次 格式化输出后面的参数 * * @param mix $s 输出对象,或多个对象之间的分隔符 */ function pp($s) { echo "\r\n<pre>\r\n"; if( func_num_args() == 1 ) print_r($s); else { $arg = func_get_args(); $sp = array_shift($arg); foreach ($arg as $idx=>$v) { if($idx) echo $sp; if( is_string($v) ) echo $v; else print_r($v); } } echo "\r\n</pre>\r\n"; } function esc_var_name($name) { return str_replace('-','_',$name); } # 將一個任意維數的數組,壓縮成一個一維數組 function cutdownArr($arr) { if(!is_array($arr)) return false; $re=array(); foreach ($arr as $key=>$item) { if( is_array($item) ) $re=array_merge($re,cutdownArr($item)); else $re[$key]=$item; } return $re; } function check_email($str) { return preg_match("/^[_\-\.\w]+@[_\-\.\w]+\.[a-z]{2,4}$/i",$str); } function &load_class( $class_name, $if_init=false ) { global $root_path; if( !class_exists($class_name) ) include_once("{$root_path}lib/{$class_name}.class.php"); if( $if_init ) { $parameter = func_get_args(); $obj = &new $class_name( isset($parameter[2])? $parameter[2]:Null , isset($parameter[3])? $parameter[3]:Null , isset($parameter[4])? $parameter[4]:Null , isset($parameter[5])? $parameter[5]:Null , isset($parameter[6])? $parameter[6]:Null , isset($parameter[7])? $parameter[7]:Null , isset($parameter[8])? $parameter[8]:Null , isset($parameter[9])? $parameter[9]:Null , isset($parameter[10])? $parameter[10]:Null , isset($parameter[11])? $parameter[11]:Null ) ; return $obj; } } function getSystem( $itemName ) { if( !$r = mysql_query("select `value` from `system_parameters` where `key`='{$itemName}'") or !$arr = mysql_fetch_assoc($r) or empty($arr) ) return false; return $arr['value']; } function setSystem( $itemName, $value ) { return mysql_query("update `system_parameters` set `value`='{$value}' where `key`='{$itemName}'") ; } function register_event( $events ) { $helpStr = '' ; foreach ($events as $eventTag) { $eventName = 'On'.str_replace( ' ', '', ucwords(strtolower( str_replace( '_', ' ', str_replace('EVENT_','',$eventTag) ) )) ); define( $eventTag, $eventName ); $helpStr.=" # --- {$eventTag} --- case '{$eventName}': /* -- event function {$eventName} start -- */ # ... ... # ... ... /* -- event function {$eventName} end -- */ break; "; } // file_put_contents( './events.txt', $helpStr ) ; } function zoomSize( &$srcW, &$srcH, $limitW, $limitH ) { if( $limitW > $srcW and $limitH > $srcH ) // 长宽均小于限制尺寸 return ; // 无需压缩 else if( $srcW/$srcH = $limitW/$limitH ) { $srcH = $limitH ; $srcW = $limitW ; } else if( $srcW/$srcH < $limitW/$limitH ) // 宽的压缩幅度 比较大 { $srcW = ( $limitH/$srcH ) * $limitW ; $srcH = $limitH ; } else { $srcH = ( $limitW/$srcW ) * $limitH ; $srcW = $limitW ; } } if( !function_exists('http_build_query') ) { function http_build_query( $data=array(), $val_name_pre='' ) { if( empty($data) ) $data = $_REQUEST ; $restr = ''; foreach($data as $key=>$val) { if( !empty($restr) ) $restr.= '&' ; $val_name_pre ? $key = "{$val_name_pre}%5B{$key}%5D" : null ; if( is_array($val) ) { $return = http_build_query( $val, $key ); if( empty($return) ) continue ; $restr.= $return; } else $restr.="{$key}={$val}"; } return $restr; } } function today() { return mktime(0,0,0,date('m'),date('d'),date('Y'))/100; } ?>