📄 cache.func.php
字号:
break;
case 'custominfo':
$table = 'settings';
$conditions = "WHERE variable IN ('extcredits', 'customauthorinfo', 'postno', 'postnocustom')";
break;
case 'request':
$table = 'request';
$conditions = '';
break;
case 'usergroups':
$table = 'usergroups';
$cols = 'groupid, type, grouptitle, creditshigher, creditslower, stars, color, groupavatar, readaccess, allowcusbbcode';
$conditions = "ORDER BY creditslower";
break;
case 'ranks':
$table = 'ranks';
$cols = 'ranktitle, postshigher, stars, color';
$conditions = "ORDER BY postshigher DESC";
break;
case 'announcements':
$table = 'announcements';
$cols = 'id, subject, type, starttime, endtime, displayorder, groups, message';
$conditions = "WHERE starttime<='$timestamp' AND (endtime>='$timestamp' OR endtime='0') ORDER BY displayorder, starttime DESC, id DESC";
break;
case 'announcements_forum':
$table = 'announcements a';
$cols = 'a.id, a.author, m.uid AS authorid, a.subject, a.message, a.type, a.starttime, a.displayorder';
$conditions = "LEFT JOIN {$tablepre}members m ON m.username=a.author WHERE a.type!=2 AND a.groups = '' AND a.starttime<='$timestamp' ORDER BY a.displayorder, a.starttime DESC, a.id DESC LIMIT 1";
break;
case in_array($cachename, array('globalstick', 'floatthreads')):
$table = 'forums';
$cols = 'fid, type, fup';
$conditions = "WHERE status>0 AND type IN ('forum', 'sub') ORDER BY type";
break;
case 'forums':
$table = 'forums f';
$cols = 'f.fid, f.type, f.name, f.fup, f.simple, ff.viewperm, ff.formulaperm, a.uid';
$conditions = "LEFT JOIN {$tablepre}forumfields ff ON ff.fid=f.fid LEFT JOIN {$tablepre}access a ON a.fid=f.fid AND a.allowview>'0' WHERE f.status>0 ORDER BY f.type, f.displayorder";
break;
case 'onlinelist':
$table = 'onlinelist';
$conditions = "ORDER BY displayorder";
break;
case 'forumlinks':
$table = 'forumlinks';
$conditions = "ORDER BY displayorder";
break;
case 'bbcodes':
$table = 'bbcodes';
$conditions = "WHERE available='1'";
break;
case 'bbcodes_display':
$table = 'bbcodes';
$cols = 'tag, icon, explanation, params, prompt';
$conditions = "WHERE available='1' AND icon!=''";
break;
case 'smilies':
$table = 'smilies s';
$cols = 's.id, s.code, s.url, t.typeid';
$conditions = "LEFT JOIN {$tablepre}imagetypes t ON t.typeid=s.typeid WHERE s.type='smiley' AND s.code<>'' AND t.typeid IS NOT NULL ORDER BY LENGTH(s.code) DESC";
break;
case 'smilies_display':
$table = 'imagetypes';
$cols = 'typeid, directory';
$conditions = "WHERE type='smiley' ORDER BY displayorder";
break;
case 'smileytypes':
$table = 'imagetypes';
$cols = 'typeid, name, directory';
$conditions = "WHERE type='smiley' ORDER BY displayorder";
break;
case 'icons':
$table = 'smilies';
$cols = 'id, url';
$conditions = "WHERE type='icon' ORDER BY displayorder";
break;
case 'fields_required':
$table = 'profilefields';
$cols = 'fieldid, invisible, title, description, required, unchangeable, selective, choices';
$conditions = "WHERE available='1' AND required='1' ORDER BY displayorder";
break;
case 'fields_optional':
$table = 'profilefields';
$cols = 'fieldid, invisible, title, description, required, unchangeable, selective, choices';
$conditions = "WHERE available='1' AND required='0' ORDER BY displayorder";
break;
case 'ipbanned':
$db->query("DELETE FROM {$tablepre}banned WHERE expiration<'$timestamp'");
$table = 'banned';
$cols = 'ip1, ip2, ip3, ip4, expiration';
break;
case 'google':
$table = 'settings';
$cols = 'value';
$conditions = "WHERE variable = 'google'";
break;
case 'censor':
$table = 'words';
$cols = 'find, replacement';
break;
case 'medals':
$table = 'medals';
$cols = 'medalid, name, image';
$conditions = "WHERE available='1'";
break;
case 'magics':
$table = 'magics';
$cols = 'magicid, available, identifier, name, description, weight, price';
break;
case 'birthdays_index':
$table = 'members';
$cols = 'uid, username, email, bday';
$conditions = "WHERE RIGHT(bday, 5)='".gmdate('m-d', $timestamp + $timeoffset * 3600)."' ORDER BY bday LIMIT $maxbdays";
break;
case 'birthdays':
$table = 'members';
$cols = 'uid';
$conditions = "WHERE RIGHT(bday, 5)='".gmdate('m-d', $timestamp + $timeoffset * 3600)."' ORDER BY bday";
break;
case 'modreasons':
$table = 'settings';
$cols = 'value';
$conditions = "WHERE variable='modreasons'";
break;
case 'faqs':
$table = 'faqs';
$cols = 'id, identifier, keyword';
$conditions = "WHERE identifier!='' AND keyword!=''";
break;
case substr($cachename, 0, 5) == 'tags_':
global $viewthreadtags, $hottags;
$taglimit = substr($cachename, 5) == 'viewthread' ? intval($viewthreadtags) : intval($hottags);
$table = 'tags';
$cols = 'tagname, total';
$conditions = "WHERE closed=0 ORDER BY total DESC LIMIT $taglimit";
break;
}
$data = array();
if(!in_array($cachename, array('secqaa')) && substr($cachename, 0, 5) != 'advs_') {
if(empty($table) || empty($cols)) return '';
$query = $db->query("SELECT $cols FROM {$tablepre}$table $conditions");
}
switch($cachename) {
case 'settings':
while($setting = $db->fetch_array($query)) {
if($setting['variable'] == 'extcredits') {
if(is_array($setting['value'] = unserialize($setting['value']))) {
foreach($setting['value'] as $key => $value) {
if($value['available']) {
unset($setting['value'][$key]['available']);
} else {
unset($setting['value'][$key]);
}
}
}
} elseif($setting['variable'] == 'creditsformula') {
if(!preg_match("/^([\+\-\*\/\.\d\(\)]|((extcredits[1-8]|digestposts|posts|pageviews|oltime)([\+\-\*\/\(\)]|$)+))+$/", $setting['value']) || !is_null(@eval(preg_replace("/(digestposts|posts|pageviews|oltime|extcredits[1-8])/", "\$\\1", $setting['value']).';'))) {
$setting['value'] = '$member[\'extcredits1\']';
} else {
$setting['value'] = preg_replace("/(digestposts|posts|pageviews|oltime|extcredits[1-8])/", "\$member['\\1']", $setting['value']);
}
} elseif($setting['variable'] == 'maxsmilies') {
$setting['value'] = $setting['value'] <= 0 ? -1 : $setting['value'];
} elseif($setting['variable'] == 'threadsticky') {
$setting['value'] = explode(',', $setting['value']);
} elseif($setting['variable'] == 'attachdir') {
$setting['value'] = preg_replace("/\.asp|\\0/i", '0', $setting['value']);
$setting['value'] = str_replace('\\', '/', substr($setting['value'], 0, 2) == './' ? DISCUZ_ROOT.$setting['value'] : $setting['value']);
} elseif($setting['variable'] == 'onlinehold') {
$setting['value'] = $setting['value'] * 60;
} elseif($setting['variable'] == 'userdateformat') {
if(empty($setting['value'])) {
$setting['value'] = array();
} else {
$setting['value'] = dhtmlspecialchars(explode("\n", $setting['value']));
$setting['value'] = array_map('trim', $setting['value']);
}
} elseif(in_array($setting['variable'], array('creditspolicy', 'ftp', 'secqaa', 'ec_credit', 'google', 'qihoo', 'insenz', 'spacedata', 'infosidestatus', 'uc', 'outextcredits', 'relatedtag'))) {
$setting['value'] = unserialize($setting['value']);
}
$GLOBALS[$setting['variable']] = $data[$setting['variable']] = $setting['value'];
}
$GLOBALS['version'] = $data['version'] = DISCUZ_KERNEL_VERSION;
$GLOBALS['totalmembers'] = $data['totalmembers'] = $db->result_first("SELECT COUNT(*) FROM {$tablepre}members");
$GLOBALS['lastmember'] = $data['lastmember'] = $db->result_first("SELECT username FROM {$tablepre}members ORDER BY uid DESC LIMIT 1");
$data['cachethreadon'] = $db->result_first("SELECT COUNT(*) FROM {$tablepre}forums WHERE status>0 AND threadcaches>0") ? 1 : 0;
$data['cronnextrun'] = $db->result_first("SELECT nextrun FROM {$tablepre}crons WHERE available>'0' AND nextrun>'0' ORDER BY nextrun LIMIT 1");
$data['ftp']['connid'] = 0;
$data['indexname'] = empty($data['indexname']) ? 'index.php' : $data['indexname'];
if(!$data['imagelib']) {
unset($data['imageimpath']);
}
if(is_array($data['relatedtag']['order'])) {
asort($data['relatedtag']['order']);
$relatedtag = array();
foreach($data['relatedtag']['order'] AS $k => $v) {
$relatedtag['status'][$k] = $data['relatedtag']['status'][$k];
$relatedtag['name'][$k] = $data['relatedtag']['name'][$k];
$relatedtag['limit'][$k] = $data['relatedtag']['limit'][$k];
$relatedtag['template'][$k] = $data['relatedtag']['template'][$k];
}
$data['relatedtag'] = $relatedtag;
foreach((array)$data['relatedtag']['status'] AS $appid => $status) {
if(!$status) {
unset($data['relatedtag']['limit'][$appid]);
}
}
unset($data['relatedtag']['status'], $data['relatedtag']['order'], $relatedtag);
}
$data['seccodedata'] = $data['seccodedata'] ? unserialize($data['seccodedata']) : array();
if($data['seccodedata']['type'] == 2) {
if(extension_loaded('ming')) {
unset($data['seccodedata']['background'], $data['seccodedata']['adulterate'],
$data['seccodedata']['ttf'], $data['seccodedata']['angle'],
$data['seccodedata']['color'], $data['seccodedata']['size'],
$data['seccodedata']['animator']);
} else {
$data['seccodedata']['animator'] = 0;
}
}
$secqaacheck = sprintf('%03b', $data['secqaa']['status']);
$data['secqaa']['status'] = array(
1 => $secqaacheck{2},
2 => $secqaacheck{1},
3 => $secqaacheck{0}
);
if(!$data['secqaa']['status'][2] && !$data['secqaa']['status'][3]) {
unset($data['secqaa']['minposts']);
}
if($data['watermarktype'] == 2 && $data['watermarktext']) {
$data['watermarktext'] = unserialize($data['watermarktext']);
if($data['watermarktext']['text'] && strtoupper($charset) != 'UTF-8') {
require_once DISCUZ_ROOT.'include/chinese.class.php';
$c = new Chinese($charset, 'utf8');
$data['watermarktext']['text'] = $c->Convert($data['watermarktext']['text']);
}
$data['watermarktext']['text'] = bin2hex($data['watermarktext']['text']);
$data['watermarktext']['fontpath'] = 'images/fonts/'.$data['watermarktext']['fontpath'];
$data['watermarktext']['color'] = preg_replace('/#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})/e', "hexdec('\\1').','.hexdec('\\2').','.hexdec('\\3')", $data['watermarktext']['color']);
$data['watermarktext']['shadowcolor'] = preg_replace('/#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})/e', "hexdec('\\1').','.hexdec('\\2').','.hexdec('\\3')", $data['watermarktext']['shadowcolor']);
} else {
$data['watermarktext'] = array();
}
$tradetypes = implodeids(unserialize($data['tradetypes']));
$data['tradetypes'] = array();
if($tradetypes) {
$query = $db->query("SELECT typeid, name FROM {$tablepre}threadtypes WHERE typeid in ($tradetypes)");
while($type = $db->fetch_array($query)) {
$data['tradetypes'][$type['typeid']] = $type['name'];
}
}
$data['jsmenustatus'] = sprintf('%b', $data['jsmenustatus']);
for($i = 1; $i <= strlen($data['jsmenustatus']); $i++) {
if(substr($data['jsmenustatus'], -$i, 1)) $data['jsmenu'][$i] = TRUE;
}
unset($data['jsmenustatus']);
$data['stylejumpstatus'] = $data['stylejump'];
$data['stylejump'] = array();
$query = $db->query("SELECT styleid, name FROM {$tablepre}styles WHERE available='1'");
while($style = $db->fetch_array($query)) {
$data['stylejump'][$style['styleid']] = dhtmlspecialchars($style['name']);
}
$globaladvs = advertisement('all');
$data['globaladvs'] = $globaladvs['all'] ? $globaladvs['all'] : array();
$data['redirectadvs'] = $globaladvs['redirect'] ? $globaladvs['redirect'] : array();
$data['invitecredit'] = '';
if($data['inviteconfig'] = unserialize($data['inviteconfig'])) {
$data['invitecredit'] = $data['inviteconfig']['invitecredit'];
}
unset($data['inviteconfig']);
$data['videoopen'] = $data['videotype'] = $data['vsiteid'] = $data['vkey'] = $data['vsiteurl'] = '';
if($data['videoinfo'] = unserialize($data['videoinfo'])) {
$data['videoopen'] = intval($data['videoinfo']['open']);
$data['videotype'] = explode("\n", $data['videoinfo']['vtype']);
$data['vsiteid'] = $data['videoinfo']['siteid'];
$data['vkey'] = $data['videoinfo']['authkey'];
$data['vsiteurl'] = $data['videoinfo']['url'];
}
unset($data['videoinfo']);
$outextcreditsrcs = $outextcredits = array();
foreach((array)$data['outextcredits'] as $value) {
$outextcreditsrcs[$value['creditsrc']] = $value['creditsrc'];
$key = $value['appiddesc'].'|'.$value['creditdesc'];
if(!isset($outextcredits[$key])) {
$outextcredits[$key] = array('title' => $value['title'], 'unit' => $value['unit']);
}
$outextcredits[$key]['creditsrc'][$value['creditsrc']] = $value['ratio'];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -