📄 global.func.php
字号:
<?php
/*
[Discuz!] (C)2001-2007 Comsenz Inc.
This is NOT a freeware, use is subject to license terms
$Id: global.func.php 13601 2008-04-27 15:27:22Z liuqiang $
*/
if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
exit('Access Denied');
}
@set_time_limit(0);
function istpldir($dir) {
return is_dir(DISCUZ_ROOT.'./'.$dir) && !in_array(substr($dir, -1, 1), array('/', '\\')) &&
strpos(realpath(DISCUZ_ROOT.'./'.$dir), realpath(DISCUZ_ROOT.'./templates')) === 0;
}
function isplugindir($dir) {
return !$dir || (!preg_match("/(\.\.|[\\\\]+$)/", $dir) && substr($dir, -1) =='/');
}
function ispluginkey($key) {
return preg_match("/^[a-z]+[a-z0-9_]*$/i", $key);
}
function dir_writeable($dir) {
if(!is_dir($dir)) {
@mkdir($dir, 0777);
}
if(is_dir($dir)) {
if($fp = @fopen("$dir/test.txt", 'w')) {
@fclose($fp);
@unlink("$dir/test.txt");
$writeable = 1;
} else {
$writeable = 0;
}
}
return $writeable;
}
function checkpermission($action, $break = 1) {
if(!isset($GLOBALS['admincp'])) {
cpmsg('action_access_noexists', '', 'error');
} elseif($break && !$GLOBALS['admincp'][$action]) {
cpmsg('action_noaccess_config', '', 'error');
} else {
return $GLOBALS['admincp'][$action];
}
}
function bbsinformation() {
global $db, $timestamp, $tablepre, $charset, $bbname, $_SERVER, $siteuniqueid, $save_mastermobile;
$update = array('uniqueid' => $siteuniqueid, 'version' => DISCUZ_VERSION, 'release' => DISCUZ_RELEASE, 'php' => PHP_VERSION, 'mysql' => $db->version(), 'charset' => $charset, 'bbname' => $bbname, 'mastermobile' => $save_mastermobile);
$updatetime = @filemtime(DISCUZ_ROOT.'./forumdata/updatetime.lock');
if(empty($updatetime) || ($timestamp - $updatetime > 3600 * 4)) {
@touch(DISCUZ_ROOT.'./forumdata/updatetime.lock');
$update['members'] = $db->result_first("SELECT COUNT(*) FROM {$tablepre}members");
$update['threads'] = $db->result_first("SELECT COUNT(*) FROM {$tablepre}threads");
$update['posts'] = $db->result_first("SELECT COUNT(*) FROM {$tablepre}posts");
$query = $db->query("SELECT special, count(*) AS spcount FROM {$tablepre}threads GROUP BY special");
while($thread = $db->fetch_array($query)) {
$thread['special'] = intval($thread['special']);
$update['spt_'.$thread['special']] = $thread['spcount'];
}
}
$data = '';
foreach($update as $key => $value) {
$data .= $key.'='.rawurlencode($value).'&';
}
return 'update='.rawurlencode(base64_encode($data)).'&md5hash='.substr(md5($_SERVER['HTTP_USER_AGENT'].implode('', $update).$timestamp), 8, 8).'×tamp='.$timestamp;
}
function isfounder($user = '') {
$user = empty($user) ? array('uid' => $GLOBALS['discuz_uid'], 'adminid' => $GLOBALS['adminid'], 'username' => $GLOBALS['discuz_userss']) : $user;
$founders = str_replace(' ', '', $GLOBALS['forumfounders']);
if($user['adminid'] <> 1) {
return FALSE;
} elseif(empty($founders)) {
return TRUE;
} elseif(strexists(",$founders,", ",$user[uid],")) {
return TRUE;
} elseif(!is_numeric($user['username']) && strexists(",$founders,", ",$user[username],")) {
return TRUE;
} else {
return FALSE;
}
}
function lang($name, $force = true) {
global $lang;
return isset($lang[$name]) ? $lang[$name] : ($force ? $name : '');
}
function admincustom($title, $url, $sort = 0) {
global $db, $tablepre, $discuz_uid, $timestamp;
$url = 'admincp.php?'.$url;
$id = $db->result_first("SELECT id FROM {$tablepre}admincustom WHERE uid='$discuz_uid' AND sort='$sort' AND url='$url'");
if($id) {
$db->query("UPDATE {$tablepre}admincustom SET title='$title', clicks=clicks+1, dateline='$timestamp' WHERE id='$id'");
} else {
$db->query("INSERT INTO {$tablepre}admincustom (title, url, sort, uid, dateline) VALUES ('$title', '$url', '$sort', '$discuz_uid', '$timestamp')");
}
}
function cpurl($type = 'parameter', $filters = array('sid', 'frames')) {
parse_str($_SERVER['QUERY_STRING'], $getarray);
$extra = $and = '';
foreach($getarray as $key => $value) {
if(!in_array($key, $filters)) {
@$extra .= $and.$key.($type == 'parameter' ? '%3D' : '=').rawurlencode($value);
$and = $type == 'parameter' ? '%26' : '&';
}
}
return $extra;
}
function showheader($key, $url) {
echo '<li><em><a href="#" id="header_'.$key.'" onclick="toggleMenu(\''.$key.'\', \''.$url.'\');">'.lang('header_'.$key).'</a></em></li>';
}
function shownav($header = '', $menu = '', $nav = '') {
global $action, $operation;
$title = 'cplog_'.$action.($operation ? '_'.$operation : '');
if(in_array($action, array('home', 'custommenu'))) {
$customtitle = '';
} elseif(lang($title, false)) {
$customtitle = $title;
} else {
$customtitle = rawurlencode($nav ? $nav : ($menu ? $menu : ''));
}
echo '<script type="text/JavaScript">if(parent.$(\'admincpnav\')) parent.$(\'admincpnav\').innerHTML=\''.lang('header_index').
($header ? ' » '.lang('header_'.$header) : '').
($menu ? ' » '.lang($menu) : '').
($nav ? ' » '.lang($nav) : '').'\';'.
'if(parent.$(\'add2custom\')) parent.$(\'add2custom\').innerHTML='.($customtitle ? '\'<a href="admincp.php?action=misc&operation=custommenu&do=add&title='.$customtitle.'&url='.cpurl().'" target="main"><img src="images/admincp/btn_add2menu.gif" title="'.lang('custommenu_add').'" width="19" height="18" /></a>\';' : '\'\'').
'</script>';
}
function showmenu($key, $menus) {
echo '<ul id="menu_'.$key.'" style="display: none">';
if(is_array($menus)) {
foreach($menus as $menu) {
if($menu[0] && $menu[1]) {
echo '<li><a href="'.(substr($menu[1], 0, 4) == 'http' ? $menu[1] : 'admincp.php?action='.$menu[1]).'" target="'.($menu[2] ? $menu[2] : 'main').'"'.($menu[3] ? $menu[3] : '').'>'.lang($menu[0]).'</a></li>';
}
}
}
echo '</ul>';
}
function cpmsg($message, $url = '', $type = '', $extra = '', $stop = TRUE) {
extract($GLOBALS, EXTR_SKIP);
eval("\$message = \"".(isset($msglang[$message]) ? $msglang[$message] : $message)."\";");
switch($type) {
case 'succeed': $classname = 'infotitle2';break;
case 'error': $classname = 'infotitle3';break;
case 'loading': $classname = 'infotitle1';break;
default: $classname = 'marginbot normal';break;
}
$message = "<h4 class=\"$classname\">$message</h4>";
if($type == 'form') {
$message = "<form method=\"post\" action=\"$url\"><input type=\"hidden\" name=\"formhash\" value=\"".FORMHASH."\">".
"<br />$message$extra<br />".
"<p class=\"margintop\"><input type=\"submit\" class=\"btn\" name=\"confirmed\" value=\"$lang[ok]\"> \n".
"<input type=\"button\" class=\"btn\" value=\"$lang[cancel]\" onClick=\"history.go(-1);\"></p></form><br />";
} elseif($type == 'loadingform') {
$message = "<form method=\"post\" action=\"$url\" id=\"loadingform\"><input type=\"hidden\" name=\"formhash\" value=\"".FORMHASH."\"><br />$message$extra<img src=\"images/admincp/ajax_loader.gif\" class=\"marginbot\" /><br />".
'<p class="marginbot"><a href="###" onclick="$(\'loadingform\').submit();" class="lightlink">'.lang('message_redirect').'</a></p></form><br /><script type="text/JavaScript">setTimeout("$(\'loadingform\').submit();", 2000);</script>';
} else {
$message .= $extra.($type == 'loading' ? '<img src="images/admincp/ajax_loader.gif" class="marginbot" />' : '');
if($url) {
if($type == 'button') {
$message = "<br />$message<br /><p class=\"margintop\"><input type=\"submit\" class=\"btn\" name=\"submit\" value=\"$lang[start]\" onclick=\"location.href='$url'\" />";
} else {
$message .= '<p class="marginbot"><a href="'.$url.'" class="lightlink">'.lang('message_redirect').'</a></p>';
$url = transsid($url);
$message .= "<script type=\"text/JavaScript\">setTimeout(\"redirect('$url');\", 2000);</script>";
}
} elseif(strpos($message, $lang['return'])) {
$message .= '<p class="marginbot"><a href="javascript:history.go(-1);" class="lightlink">'.lang('message_return').'</a></p>';
}
}
if($stop) {
echo '<h3>'.lang('discuz_message').'</h3><div class="infobox">'.$message.'</div>';
cpfooter();
dexit();
} else {
echo '<div class="infobox">'.$message.'</div>';
}
}
function cpheader() {
global $charset, $frame;
$IMGDIR = IMGDIR;
$STYLEID = STYLEID;
echo <<< EOT
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=$charset">
<link href="./images/admincp/admincp.css" rel="stylesheet" type="text/css" />
</head>
<body>
<script type="text/JavaScript">
function redirect(url) {
window.location.replace(url);
}
if('$frame' != 'no' && !parent.document.getElementById('leftmenu')) redirect(document.URL + (document.URL.indexOf('?') != -1 ? '&' : '?') + 'frames=yes');
var IMGDIR = '$IMGDIR';
var STYLEID = '$STYLEID';
var IN_ADMINCP = true;
</script>
<script src="include/javascript/common.js" type="text/javascript"></script>
<script type="text/JavaScript">
function checkAll(type, form, value, checkall, changestyle) {
var checkall = checkall ? checkall : 'chkall';
for(var i = 0; i < form.elements.length; i++) {
var e = form.elements[i];
if(type == 'option' && e.type == 'radio' && e.value == value && e.disabled != true) {
e.checked = true;
} else if(type == 'value' && e.type == 'checkbox' && e.value == value) {
e.checked = form.elements[checkall].checked;
} else if(type == 'prefix' && e.name && e.name != checkall && (!value || (value && e.name.match(value)))) {
e.checked = form.elements[checkall].checked;
if(changestyle && e.parentNode && e.parentNode.tagName.toLowerCase() == 'li') {
e.parentNode.className = e.checked ? 'checked' : '';
}
}
}
}
function altStyle(obj) {
function altStyleClear(obj) {
var input, lis, i;
lis = obj.parentNode.getElementsByTagName('li');
for(i=0; i < lis.length; i++){
lis[i].className = '';
}
}
var input, lis, i, cc, o;
cc = 0;
lis = obj.getElementsByTagName('li');
for(i=0; i < lis.length; i++){
lis[i].onclick = function(e) {
o = is_ie ? event.srcElement.tagName : e.target.tagName;
if(cc) {
return;
}
cc = 1;
input = this.getElementsByTagName('input')[0];
if(input.getAttribute('type') == 'checkbox' || input.getAttribute('type') == 'radio') {
if(input.getAttribute('type') == 'radio') {
altStyleClear(this);
}
if(is_ie || o != 'INPUT' && input.onclick) {
input.click();
}
if(this.className != 'checked') {
this.className = 'checked';
input.checked = true;
} else {
this.className = '';
input.checked = false;
}
}
}
lis[i].onmouseup = function(e) {
cc = 0;
}
}
}
var addrowdirect = 0;
function addrow(obj, type) {
var table = obj.parentNode.parentNode.parentNode.parentNode;
if(!addrowdirect) {
var row = table.insertRow(obj.parentNode.parentNode.parentNode.rowIndex);
} else {
var row = table.insertRow(obj.parentNode.parentNode.parentNode.rowIndex + 1);
}
var typedata = rowtypedata[type];
for(var i = 0; i <= typedata.length - 1; i++) {
var cell = row.insertCell(i);
cell.colSpan = typedata[i][0];
var tmp = typedata[i][1];
if(typedata[i][2]) {
cell.className = typedata[i][2];
}
tmp = tmp.replace(/\{(\d+)\}/g, function($1, $2) {return addrow.arguments[parseInt($2) + 1];});
cell.innerHTML = tmp;
}
addrowdirect = 0;
}
function dropmenu(obj){
obj.className = obj.className == 'hasdropmenu' ? 'current' : 'hasdropmenu';
$(obj.id + 'child').style.display = $(obj.id + 'child').style.display == 'none' ? '' : 'none';
}
function textareasize(obj) {
if(obj.scrollHeight > 70) {
obj.style.height = obj.scrollHeight + 'px';
}
}
if('$frame' != 'no') _attachEvent(document.documentElement, 'keydown', parent.resetEscAndF5);
</script>
<div id="append_parent"></div>
<div class="container" id="cpcontainer">
EOT;
}
function showsubmenu($title, $menus = array()) {
if(empty($menus)) {
$s = '<h3>'.lang($title).'</h3>';
} elseif(is_array($menus)) {
$s = '<div class="itemtitle"><h3>'.lang($title).'</h3>';
if(is_array($menus)) {
$s .= '<ul class="tab1">';
foreach($menus as $menu) {
if(is_array($menu[0])) {
$s .= '<li id="addjs" class="'.($menu[2] ? ' current' : 'hasdropmenu').'" onclick="dropmenu(this);"><a href="#"><span>'.lang($menu[0]['menu']).'<em> </em></span></a><div id="addjschild" class="dropmenu" style="display:none;">';
if(is_array($menu[0]['submenu'])) {
foreach($menu[0]['submenu'] as $submenu) {
$s .= '<a href="admincp.php?action='.$submenu[1].'">'.lang($submenu[0]).'</a>';
}
}
$s .= '</div></li>';
} else {
$s .= '<li'.($menu[2] ? ' class="current"' : '').'><a href="admincp.php?action='.$menu[1].'"><span>'.lang($menu[0]).'</span></a></li>';
}
}
$s .= '</ul>';
}
$s .= '</div>';
}
echo $s;
}
function showsubmenusteps($title, $menus = array()) {
$s = '<div class="itemtitle">'.($title ? '<h3>'.lang($title).'</h3>' : '');
if(is_array($menus)) {
$s .= '<ul class="stepstat">';
$i = 0;
foreach($menus as $menu) {
$i++;
$s .= '<li'.($menu[1] ? ' class="current"' : '').' id="step'.$i.'">'.$i.'.'.lang($menu[0]).'</li>';
}
$s .= '</ul>';
}
$s .= '</div>';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -