/** * 系統錯誤處理 * @param <type> $message 錯誤信息 * @param <type> $show 是否顯示信息 * @param <type> $save 是否存入日誌 * @param <type> $halt 是否中斷訪問 */ function system_error($message, $show = true, $save = true, $halt = true) { ...... } /** * 更新 session * @global <type> $_G * @staticvar boolean $updated * @param boolean $force * @return boolean */ function updatesession($force = false) { ...... } /** * 獲取 microtime float 數值,爲了兼容php4 * @return <float> */ function dmicrotime() { ...... } /** * 設置全局 $_G 中的變量 * @global <array> $_G * @param <string> $key 鍵 * @param <string> $value 值 * @param <mix> $group 組(準備廢棄,儘可能不用) * @return true * * @example * setglobal('test', 1); // $_G['test'] = 1; * setglobal('config/test/abc') = 2; //$_G['config']['test']['abc'] = 2; * */ function setglobal($key , $value, $group = null) { ...... } /** * 獲取全局變量 $_G 當中的某個數值 * @global $_G * @param <type> $key * @param <type> $group 計劃廢棄的參數,不建議使用 * @return <mix> * * $v = getglobal('test'); // $v = $_G['test'] * $v = getglobal('test/hello/ok'); // $v = $_G['test']['hello']['ok'] */ function getglobal($key, $group = null) { ...... } /** * 取出 get, post, cookie 當中的某個變量 * * @param string $k key 值 * @param string $type 類型 * @return mix */ function getgpc($k, $type='GP') { ...... } /** * 根據uid 獲取用戶基本數據 * @staticvar array $users 存放已經獲取的用戶的信息,避免重複查庫 * @param <int> $uid * @return <array> */ function getuserbyuid($uid) { ...... } /** * 獲取當前用戶的擴展資料 * @param $field 字段 */ function getuserprofile($field) { ...... } /** * 對字符串或者輸入進行 addslashes 操做 * @param <mix> $string * @param <int> $force * @return <mix> */ function daddslashes($string, $force = 1) { ...... } /** * 對字符串進行加密和解密 * @param <string> $string * @param <string> $operation DECODE 解密 | ENCODE 加密 * @param <string> $key 當爲空的時候,取全局密鑰 * @param <int> $expiry 有效期,單位秒 * @return <string> */ function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { ...... } /** * 遠程文件文件請求兼容函數 */ function dfsockopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE) { ...... } /** * HTML轉義字符 * @param $string - 字符串 * @return 返回轉義好的字符串 */ function dhtmlspecialchars($string) { ...... } /** * 退出程序 同 exit 的區別, 對輸出數據會進行 從新加工和處理 * 一般狀況下,咱們建議使用本函數終止程序, 除非有特別需求 * @param <type> $message */ function dexit($message = '') { ...... } /** * 同 php header函數, 針對 location 跳轉作了特殊處理 * @param <type> $string * @param <type> $replace * @param <type> $http_response_code */ function dheader($string, $replace = true, $http_response_code = 0) { ...... } /** * 設置cookie * @param $var - 變量名 * @param $value - 變量值 * @param $life - 生命期 * @param $prefix - 前綴 * @param $httponly - 安全屬性 */ function dsetcookie($var, $value = '', $life = 0, $prefix = 1, $httponly = false) { ...... } /** * 獲取cookie * @param $key - cookie名稱,不須要帶前綴 */ function getcookie($key) { ...... } /** * 獲取文件擴展名 * @param $filename 文件名 */ function fileext($filename) { ...... } /** * 檢查是不是以手機瀏覽器進入(IN_MOBILE) */ function checkmobile() { ...... } /** * 字符串方式實現 preg_match("/(s1|s2|s3)/", $string, $match) * @param string $string 源字符串 * @param array $arr 要查找的字符串 如array('s1', 's2', 's3') * @param bool $returnvalue 是否返回找到的值 * @return bool */ function dstrpos($string, &$arr, $returnvalue = false) { ...... } /** * 檢查郵箱是否有效 * @param $email 要檢查的郵箱 * @param 返回結果 */ function isemail($email) { ...... } /** * 問題答案加密 * @param $questionid - 問題 * @param $answer - 答案 * @return 返回加密的字串 */ function quescrypt($questionid, $answer) { ...... } /** * 產生隨機碼 * @param $length - 要多長 * @param $numberic - 數字仍是字符串 * @return 返回字符串 */ function random($length, $numeric = 0) { ...... } /** * 判斷一個字符串是否在另外一個字符串中存在 * * @param string 原始字串 $string * @param string 查找 $find * @return boolean */ function strexists($string, $find) { ...... } /** * 獲取頭像 * * @param int $uid 須要獲取的用戶UID值 * @param string $size 獲取尺寸 'small', 'middle', 'big' * @param boolean $returnsrc 是否直接返回圖片src * @param boolean $real 是否返回真實圖片 * @param boolean $static 是否返回真實路徑 * @param string $ucenterurl 強制uc路徑 */ function avatar($uid, $size = 'middle', $returnsrc = FALSE, $real = FALSE, $static = FALSE, $ucenterurl = '') { ...... } /** * 加載語言 * 語言文件統一爲 $lang = array(); * @param $file - 語言文件,可包含路徑如 forum/xxx home/xxx * @param $langvar - 語言文字索引 * @param $vars - 變量替換數組 * @param $default - 指定默認值,當找不到對應言包時生效 * @return 語言文字 */ function lang($file, $langvar = null, $vars = array(), $default = null) { ...... } /** * 檢查模板源文件是否更新 * 當編譯文件不存時強制從新編譯 * 當 tplrefresh = 1 時檢查文件 * 當 tplrefresh > 1 時,則根據 tplrefresh 取餘,無餘時則檢查更新 * */ function checktplrefresh($maintpl, $subtpl, $timecompare, $templateid, $cachefile, $tpldir, $file) { ...... } /** * 解析模板 * @return 返回域名 */ function template($file, $templateid = 0, $tpldir = '', $gettplfile = 0, $primaltpl='') { ...... } /** * 對某id進行個性化md5 */ function modauthkey($id) { ...... } /** * 得到當前應用頁面選中的導航id */ function getcurrentnav() { ...... } /** * 讀取緩存 * @param $cachenames - 緩存名稱數組或字串 */ function loadcache($cachenames, $force = false) { ...... } /** * 經過memcache\mysql\file等幾種手段讀緩存 * @param mixed $cachenames 緩存名的數組或字串 */ function cachedata($cachenames) { ...... } /** * 格式化時間 * @param $timestamp - 時間戳 * @param $format - dt=日期時間 d=日期 t=時間 u=個性化 其餘=自定義 * @param $timeoffset - 時區 * @return string */ function dgmdate($timestamp, $format = 'dt', $timeoffset = '9999', $uformat = '') { ...... } /** 獲得時間戳 */ function dmktime($date) { ...... } /** * 更新緩存 * @param $cachename - 緩存名稱 * @param $data - 緩存數據 */ function save_syscache($cachename, $data) { ...... } /** * Portal模塊 * @param $parameter - 參數集合 */ function block_get($parameter) { ...... } /** * Portal 模塊顯示 * * @param $parameter - 參數集合 */ function block_display($bid) { ...... } /** * 返回庫文件的全路徑 * * @param string $libname 庫文件分類及名稱 * @param string $folder 模塊目錄'module','include','class' * @return string * * @example require DISCUZ_ROOT.'./source/function/function_cache.php' * @example 咱們能夠利用此函數簡寫爲:require libfile('function/cache'); * */ function libfile($libname, $folder = '') { ...... } /** * 針對uft-8進行特殊處理的strlen * @param string $str * @return int */ function dstrlen($str) { ...... } /** * 根據中文裁減字符串 * @param $string - 字符串 * @param $length - 長度 * @param $doc - 縮略後綴 * @return 返回帶省略號被裁減好的字符串 */ function cutstr($string, $length, $dot = ' ...') { ...... } /** * 論壇 aid url 生成 */ function aidencode($aid, $type = 0, $tid = 0) { ...... } /** * 返回論壇縮放附件圖片的地址 url */ function getforumimg($aid, $nocache = 0, $w = 140, $h = 140, $type = '') { ...... } /** * 獲取rewrite字符串 * @param string $type 須要獲取的rewite * @param boolean $returntype true:直接返回href, false:返回a標籤 * @param string $host 可選網站域名 * @return string */ function rewriteoutput($type, $returntype, $host) { ...... } /** * 手機模式下替換全部連接爲mobile=yes形式 * @param $file - 正則匹配到的文件字符串 * @param $file - 要被替換的字符串 * @$replace 替換後字符串 */ function mobilereplace($file, $replace) { ...... } /** * 手機的output函數 */ function mobileoutput() { ...... } /** * 系統輸出 * @return 返回內容 */ function output() { ...... } /** * ajax footer使用輸出頁面內容 */ function output_ajax() { ...... } /** * 運行鉤子 */ function runhooks() { ...... } /** * 執行插件腳本 */ function hookscript($script, $hscript, $type = 'funcs', $param = array(), $func = '') { ...... } /** * 獲取插件模塊 */ function pluginmodule($pluginid, $type) { ...... } /** * 執行積分規則 * @param String $action: 規則action名稱 * @param Integer $uid: 操做用戶 * @param array $extrasql: common_member_count的額外操做字段數組格式爲 array('extcredits1' => '1') * @param String $needle: 防重字符串 * @param Integer $coef: 積分放大倍數 * @param Integer $update: 是否執行更新操做 * @param Integer $fid: 版塊ID * @return 返回積分策略 */ function updatecreditbyaction($action, $uid = 0, $extrasql = array(), $needle = '', $coef = 1, $update = 1, $fid = 0) { ...... } /** * 檢查積分下限 * @param string $action: 策略動做Action或者須要檢測的操做積分值使如extcredits1積分進行減1操做檢測array('extcredits1' => -1) * @param Integer $uid: 用戶UID * @param Integer $coef: 積分放大倍數/負數爲減分操做 * @param Integer $returnonly: 只要返回結果,不用中斷程序運行 */ function checklowerlimit($action, $uid = 0, $coef = 1, $fid = 0, $returnonly = 0) { ...... } /** * 批量執行某一條策略規則 * @param String $action: 規則action名稱 * @param Integer $uids: 操做用戶能夠爲單個uid或uid數組 * @param array $extrasql: common_member_count的額外操做字段數組格式爲 array('extcredits1' => '1') * @param Integer $coef: 積分放大倍數,當爲負數時爲反轉操做 * @param Integer $fid: 版塊ID */ function batchupdatecredit($action, $uids = 0, $extrasql = array(), $coef = 1, $fid = 0) { ...... } /** * 添加積分 * @param Integer $uids: 用戶uid或者uid數組 * @param String $dataarr: member count相關操做數組,例: array('threads' => 1, 'doings' => -1) * @param Boolean $checkgroup: 是否檢查用戶組 true or false * @param String $operation: 操做類型 * @param Integer $relatedid: * @param String $ruletxt: 積分規則文本 */ function updatemembercount($uids, $dataarr = array(), $checkgroup = true, $operation = '', $relatedid = 0, $ruletxt = '') { if(!emptyempty($uids) && (is_array($dataarr) && $dataarr)) { require_once libfile('function/credit'); return _updatemembercount($uids, $dataarr, $checkgroup, $operation, $relatedid, $ruletxt); } return true; } /** * 校驗用戶組 * @param $uid */ function checkusergroup($uid = 0) { ...... } /** * 調試信息 */ function debuginfo() { ...... } /** * 隨機取出一個站長推薦的條目 * @param $module 當前模塊 * @return array */ function getfocus_rand($module) { ...... } /** * 檢查驗證碼正確性 * @param $value 驗證碼變量值 */ function check_seccode($value, $idhash) { ...... } /** * 檢查驗證問答正確性 * @param $value 驗證問答變量值 */ function check_secqaa($value, $idhash) { ...... } /** * 獲取廣告 */ function adshow($parameter) { ...... } /** * 顯示提示信息 * @param $message - 提示信息,可中文也能夠是 lang_message.php 中的數組 key 值 * @param $url_forward - 提示後跳轉的 url * @param $values - 提示信息中可替換的變量值 array(key => value ...) 形式 * @param $extraparam - 擴展參數 array(key => value ...) 形式 * 跳轉控制 header header跳轉 location location JS 跳轉,限於 msgtype = 二、3 timeout 定時跳轉 refreshtime 自定義跳轉時間 closetime 自定義關閉時間,限於 msgtype = 2,值爲 true 時爲默認 locationtime 自定義跳轉時間,限於 msgtype = 2,值爲 true 時爲默認 內容控制 alert alert 圖標樣式 right/info/error return 顯示請返回 redirectmsg 下載時用的提示信息,當跳轉時顯示的信息樣式 0:若是您的瀏覽器沒有自動跳轉,請點擊此連接 1:若是 n 秒後下載仍未開始,請點擊此連接 msgtype 信息樣式 1:非 Ajax 2:Ajax 彈出框 3:Ajax 只顯示信息文本 showmsg 顯示信息文本 showdialog 關閉原彈出框顯示 showDialog 信息,限於 msgtype = 2 login 未登陸時顯示登陸連接 extrajs 擴展 js striptags 過濾 HTML 標記 Ajax 控制 handle 執行 js 回調函數 showid 控制顯示的對象 ID */ function showmessage($message, $url_forward = '', $values = array(), $extraparam = array(), $custom = 0) { ...... } /** * 檢查是否正確提交了表單 * @param $var 須要檢查的變量 * @param $allowget 是否容許GET方式 * @param $seccodecheck 驗證碼檢測是否開啓 * @return 返回是否正確提交了表單 */ function submitcheck($var, $allowget = 0, $seccodecheck = 0, $secqaacheck = 0) { ...... } /** * 分頁 * @param $num - 總數 * @param $perpage - 每頁數 * @param $curpage - 當前頁 * @param $mpurl - 跳轉的路徑 * @param $maxpages - 容許顯示的最大頁數 * @param $page - 最多顯示多少頁碼 * @param $autogoto - 最後一頁,自動跳轉 * @param $simple - 是否簡潔模式(簡潔模式不顯示上一頁、下一頁和頁碼跳轉) * @return 返回分頁代碼 */ function multi($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $autogoto = FALSE, $simple = FALSE) { ...... } /** * 只有上一頁下一頁的分頁(無需知道數據總數) * @param $num - 本次所取數據條數 * @param $perpage - 每頁數 * @param $curpage - 當前頁 * @param $mpurl - 跳轉的路徑 * @return 返回分頁代碼 */ function simplepage($num, $perpage, $curpage, $mpurl) { ...... } /** * 詞語過濾 * @param $message - 詞語過濾文本 * @return 成功返回原始文本,不然提示錯誤或被替換 */ function censor($message, $modword = NULL, $return = FALSE) { ...... } /** 詞語過濾,檢測是否含有須要審覈的詞 */ function censormod($message) { ...... } /** * 刷新重定向 */ function dreferer($default = '') { ...... } /** * 遠程FTP使用 */ function ftpcmd($cmd, $arg1 = '') { ...... } /** * 編碼轉換 * @param <string> $str 要轉碼的字符 * @param <string> $in_charset 輸入字符集 * @param <string> $out_charset 輸出字符集(默認當前) * @param <boolean> $ForceTable 強制使用碼錶(默認不強制) * */ function diconv($str, $in_charset, $out_charset = CHARSET, $ForceTable = FALSE) { ...... } /** * 重建數組 * @param <string> $array 須要反轉的數組 * @return array 原數組與的反轉後的數組 */ function renum($array) { ...... } /** * 獲取當前腳本在線人數 * @param <int> $fid 分類 ID,版塊、羣組 的 id, * @param <int> $tid 內容 ID,帖子 的 id */ function getonlinenum($fid = 0, $tid = 0) { ...... } /** * 字節格式化單位 * @param $filesize - 大小(字節) * @return 返回格式化後的文本 */ function sizecount($size) { ...... } /** * 寫入運行日誌 */ function writelog($file, $log) { ...... } /** * 調色板 * @param <type> $colorid * @param <type> $id * @param <type> $background * @return <type> */ function getcolorpalette($colorid, $id, $background, $fun = '') { ...... } /** * 取得某標誌位的數值 (0|1) * * @param 數值 $status * @param 位置 $position * @return 0 | 1 */ function getstatus($status, $position) { ...... } /** * 設置某一bit位的數值 0 or 1 * * @param int $position 1-16 * @param int $value 0|1 * @param 原始數值 $baseon 0x0000-0xffff * @return int */ function setstatus($position, $value, $baseon = null) { ...... } /** * 通知 * @param Integer $touid: 通知給誰 * @param String $type: 通知類型 * @param String $note: 語言key * @param Array $notevars: 語言變量對應的值 * @param Integer $system: 是否爲系統通知 0:非系統通知; 1:系統通知 */ function notification_add($touid, $type, $note, $notevars = array(), $system = 0) { ...... } /** * 發送管理通知 * @param $type - 通知類型 */ function manage_addnotify($type, $from_num = 0, $langvar = array()) { ...... } /** * 發送短消息(兼容提醒) * @param $toid - 接收方id * @param $subject - 標題 * @param $message - 內容 * @param $fromid - 發送方id */ function sendpm($toid, $subject, $message, $fromid = '', $replypmid = 0, $isusername = 0, $type = 0) { ...... } /** * * 經過tid獲得相應的單一post表名或post表集合 * @param <mix> $tids: 容許傳進單個tid,也能夠是tid集合 * @param $primary: 是否只查主題表 0:遍歷全部表;1:只查主表 * @return 當傳進來的是單一的tid將直接返回表名,不然返回表集合的二維數組例:array('forum_post' => array(tids),'forum_post_1' => array(tids)) * @TODO tid傳進來的是字符串的,返回單個表名,傳進來的是數組的,無論是否是一個數組,返回的仍是數組,保證進出值對應 */ function getposttablebytid($tids, $primary = 0) { ...... } /** * 獲取論壇帖子表名 * @param <int> $tableid: 分表ID,默認爲:fourm_post表 * @param <boolean> $prefix: 是否默認帶有表前綴 * @return forum_post or forum_post_* */ function getposttable($tableid = 0, $prefix = false) { ...... } /** * 內存讀寫接口函數 * * @param 命令 $cmd (set|get|rm|check) * @param 鍵值 $key * @param 數據 $value * @param 有效期 $ttl * @return mix * * @example set : 寫入內存 $ret = memory('set', 'test', 'ok') * @example get : 讀取內存 $data = memory('get', 'test') * @example rm : 刪除內存 $ret = memory('rm', 'test') * @example check : 檢查內存功能是否可用 $allow = memory('check') */ function memory($cmd, $key='', $value='', $ttl = 0) { ...... } /** * ip容許訪問 * @param $ip 要檢查的ip地址 * @param - $accesslist 容許訪問的ip地址 * @param 返回結果 */ function ipaccess($ip, $accesslist) { ...... } /** * ip限制訪問 * @param $ip 要檢查的ip地址 * @param 返回結果 */ function ipbanned($onlineip) { ...... } /** * 系統級消息 */ function sysmessage($message) { ...... } /** * 論壇權限 * @param $permstr - 權限信息 * @param $groupid - 只判斷用戶組 * @return 0 無權限 > 0 有權限 */ function forumperm($permstr, $groupid = 0) { ...... } /** * PHP 兼容性函數 */ if(!function_exists('file_put_contents')) { if(!defined('FILE_APPEND')) define('FILE_APPEND', 8); function file_put_contents($filename, $data, $flag = 0) { $return = false; if($fp = @fopen($filename, $flag != FILE_APPEND ? 'w' : 'a')) { if($flag == LOCK_EX) @flock($fp, LOCK_EX); $return = fwrite($fp, is_array($data) ? implode('', $data) : $data); fclose($fp); } return $return; } } //檢查權限 function checkperm($perm) { global $_G; return (emptyempty($_G['group'][$perm])?'':$_G['group'][$perm]); } /** * 時間段設置檢測 * @param $periods - 那種時間段 $settings[$periods] $settings['postbanperiods'] $settings['postmodperiods'] * @param $showmessage - 是否提示信息 * @return 返回檢查結果 */ function periodscheck($periods, $showmessage = 1) { ...... } /** * 用戶操做日誌 * @param int $uid 用戶ID * @param string $action 操做類型 tid=thread pid=post blogid=blog picid=picture doid=doing sid=share aid=article uid_cid/blogid_cid/sid_cid/picid_cid/aid_cid/topicid_cid=comment * @return bool */ function useractionlog($uid, $action) { ...... } /** * 獲得用戶操做的代碼或表明字符,參數爲數字返回字符串,參數爲字符串返回數字 * @param string/int $var * @return int/string 注意:若是失敗返回false,請使用===判斷,由於代碼0表明tid */ function getuseraction($var) { ...... } /** * 獲取個人中心中展現的應用 */ function getuserapp($panel = 0) { ...... } /** * 獲取manyou應用本地圖標路徑 * @param <type> $appid */ function getmyappiconpath($appid, $iconstatus=0) { ...... } /** * 獲取文字內的url列表 * * @param $message 文字 * @return <array> url列表 * */ function get_url_list($message) { ...... } /** * 檢查文字內的URL * * @param $allowposturl 用戶組設置中的值 0=禁止 1=容許但審覈 2=容許但不解析 * @param $message 待處理的文字內容 * @return 0=禁止 1=容許但審覈 2=容許但不解析 */ function checkurl($allowposturl, &$message) { ...... } /** * 更新頁面和模塊的關係 * @param string $targettplname 頁面名稱 * @param array $blocks 模塊IDS */ function update_template_block($targettplname, $blocks) { ...... } /** * 獲取批定類型的關聯鏈接 * * @param string $extent 內容所需關聯連接範圍 article, forum, group, blog * @return string 有效的關聯連接 */ function getrelatedlink($extent) { ...... } /** * 判斷 Connect 連接參數有效性 * @global $_G * @param array $params 參數數組 * @param array $connect_params 返回參數 * @return boolean */ function connect_valid($params, &$connect_params) { ...... } /** * 獲取 Token * @global $_G * @param string $type * @return string */ function connect_get_access_token($type = 'USER') { ...... } /** * 獲取 Connect 參數簽名 * @param array $params 參數數組 * @param string $access_token 加密 Token * @return string */ function connect_get_sig($params, $access_token) { ...... } /** * 經過 AID 獲取附件表名 * @param <int> $aid */ function getattachtablebyaid($aid) { ...... } /** * 返回指定 TID 所對應的附件表編號 * @param <int> $tid */ function getattachtableid($tid) { ...... } /** * 經過 TID 獲取附件表名 * @param <int> $tid */ function getattachtablebytid($tid) { ...... } /** * 經過 PID 獲取附件表名 * @param <int> $pid */ function getattachtablebypid($pid) { ...... } /** * 添加一個新的附件索引記錄,並返回新附件 ID * @param <int> $uid */ function getattachnewaid($uid = 0) { ...... } /** * 獲取 SEO設置 * @param string $page 調用哪一個頁面的 * @param array $data 可替換數據 * @return array('seotitle', 'seodescription', 'seokeywords') */ function get_seosetting($page, $data = array(), $defset = array()) { ...... } /** * 需處理連續分隔符的str_replace() * @param array $searchs 被替換的數組 * @param array $replaces 用於替換的數組 * @param string $str 目標字符串 */ function strreplace_strip_split($searchs, $replaces, $str) { ...... } /** * 返回帶第幾頁的title * @global $_G * @param string $navtitle 源標題 * @param int $page 頁碼 * @return string */ function get_title_page($navtitle, $page){ if($page > 1) { ...... } /** * * 生成縮略圖文件名 * @param String $fileStr: 原文件名,容許附帶路徑 * @param String $extend: 新文件名後綴 * @param Boolean $holdOldExt: 是否保留原擴展名 * @return 返加新的後綴文件名 */ function getimgthumbname($fileStr, $extend='.thumb.jpg', $holdOldExt=true) { ...... } /** * 更新數據的審覈狀態 * @param <string> $idtype 數據類型 tid=thread pid=post blogid=blog picid=picture doid=doing sid=share aid=article uid_cid/blogid_cid/sid_cid/picid_cid/aid_cid/topicid_cid=comment * @param <array/int> $ids ID 數組、ID 值 * @param <int> $status 狀態 0=加入審覈(默認) 1=忽略審覈 2=審覈經過 */ function updatemoderate($idtype, $ids, $status = 0) { ...... } /** * 顯示漫遊應用公告 */ function userappprompt() { ...... }