📄 cache.func.php
字号:
}
}
}
break;
case 'smileytypes':
while($type = $db->fetch_array($query)) {
$typeid = $type['typeid'];
unset($type['typeid']);
$squery = $db->query("SELECT COUNT(*) FROM {$tablepre}smilies WHERE type='smiley' AND code<>'' AND typeid='$typeid'");
if($db->result($squery, 0)) {
$data[$typeid] = $type;
}
}
break;
case 'icons':
while($icon = $db->fetch_array($query)) {
$data[$icon['id']] = $icon['url'];
}
break;
case (in_array($cachename, array('fields_required', 'fields_optional'))):
while($field = $db->fetch_array($query)) {
$choices = array();
if($field['selective']) {
foreach(explode("\n", $field['choices']) as $item) {
list($index, $choice) = explode('=', $item);
$choices[trim($index)] = trim($choice);
}
$field['choices'] = $choices;
} else {
unset($field['choices']);
}
$data['field_'.$field['fieldid']] = $field;
}
break;
case 'ipbanned':
if($db->num_rows($query)) {
$data['expiration'] = 0;
$data['regexp'] = $separator = '';
}
while($banned = $db->fetch_array($query)) {
$data['expiration'] = !$data['expiration'] || $banned['expiration'] < $data['expiration'] ? $banned['expiration'] : $data['expiration'];
$data['regexp'] .= $separator.
($banned['ip1'] == '-1' ? '\\d+\\.' : $banned['ip1'].'\\.').
($banned['ip2'] == '-1' ? '\\d+\\.' : $banned['ip2'].'\\.').
($banned['ip3'] == '-1' ? '\\d+\\.' : $banned['ip3'].'\\.').
($banned['ip4'] == '-1' ? '\\d+' : $banned['ip4']);
$separator = '|';
}
break;
case 'google':
$data = unserialize($db->result($query, 0));
$lr = $data['lang'] ? 'lang_'.$data['lang'] : '';
$jsdata = 'var google_host="'.$_SERVER['HTTP_HOST'].'";var google_charset="'.$charset.'";var google_hl="'.$data['lang'].'";var google_lr="'.$lr.'";';
$cachedir = DISCUZ_ROOT.'./forumdata/cache/';
if(@$fp = fopen($cachedir.'google_var.js', 'w')) {
fwrite($fp, $jsdata);
fclose($fp);
} else {
exit('Can not write to cache files, please check directory ./forumdata/ and ./forumdata/cache/ .');
}
break;
case 'medals':
while($medal = $db->fetch_array($query)) {
$data[$medal['medalid']] = array('name' => $medal['name'], 'image' => $medal['image']);
}
break;
case 'magics':
while($magic = $db->fetch_array($query)) {
$data[$magic['magicid']]['identifier'] = $magic['identifier'];
$data[$magic['magicid']]['available'] = $magic['available'];
$data[$magic['magicid']]['name'] = $magic['name'];
$data[$magic['magicid']]['description'] = $magic['description'];
$data[$magic['magicid']]['weight'] = $magic['weight'];
$data[$magic['magicid']]['price'] = $magic['price'];
}
break;
case 'birthdays_index':
$bdaymembers = array();
while($bdaymember = $db->fetch_array($query)) {
$birthyear = intval($bdaymember['bday']);
$bdaymembers[] = '<a href="space.php?uid='.$bdaymember['uid'].'" target="_blank" '.($birthyear ? 'title="'.$bdaymember['bday'].'"' : '').'>'.$bdaymember['username'].'</a>';
}
$data['todaysbdays'] = implode(', ', $bdaymembers);
break;
case 'birthdays':
$data['uids'] = $comma = '';
$data['num'] = 0;
while($bdaymember = $db->fetch_array($query)) {
$data['uids'] .= $comma.$bdaymember['uid'];
$comma = ',';
$data['num'] ++;
}
break;
case 'modreasons':
$modreasons = $db->result($query, 0);
$modreasons = str_replace(array("\r\n", "\r"), array("\n", "\n"), $modreasons);
$data = explode("\n", trim($modreasons));
break;
case substr($cachename, 0, 5) == 'advs_':
$data = advertisement(substr($cachename, 5));
break;
case 'faqs':
while($faqs = $db->fetch_array($query)) {
$data[$faqs['identifier']]['id'] = $faqs['id'];
$data[$faqs['identifier']]['keyword'] = $faqs['keyword'];
}
break;
case 'secqaa':
$secqaanum = $db->result_first("SELECT COUNT(*) FROM {$tablepre}itempool");
$start_limit = $secqaanum <= 10 ? 0 : mt_rand(0, $secqaanum - 10);
$query = $db->query("SELECT question, answer FROM {$tablepre}itempool LIMIT $start_limit, 10");
$i = 1;
while($secqaa = $db->fetch_array($query)) {
$secqaa['answer'] = md5($secqaa['answer']);
$data[$i] = $secqaa;
$i++;
}
while(($secqaas = count($data)) < 9) {
$data[$secqaas + 1] = $data[array_rand($data)];
}
break;
case substr($cachename, 0, 5) == 'tags_':
global $tagstatus, $hottags;
$tagnames = array();
if($tagstatus) {
if(substr($cachename, 5) == 'index') {
if($hottags) {
$tagary = array();
while($tagrow = $db->fetch_array($query)) {
$tagary[] = '<a href="tag.php?name='.rawurlencode($tagrow['tagname']).'" target="_blank">'.$tagrow['tagname'].'<em>('.$tagrow['total'].')</em></a>';
}
$data = implode(' ', $tagary);
} else {
$data = '';
}
} else {
$data[0] = $data[1] = array();
while($tagrow = $db->fetch_array($query)) {
$data[0][] = $tagrow['tagname'];
$data[1][] = rawurlencode($tagrow['tagname']);
}
$data[0] = '[\''.implode('\',\'', (array)$data[0]).'\']';
$data[1] = '[\''.implode('\',\'', (array)$data[1]).'\']';
$data[2] = $db->result_first("SELECT count(*) FROM {$tablepre}tags", 0);
}
}
break;
default:
while($datarow = $db->fetch_array($query)) {
$data[] = $datarow;
}
}
$dbcachename = $cachename;
$cachename = in_array(substr($cachename, 0, 5), array('advs_', 'tags_')) ? substr($cachename, 0, 4) : $cachename;
$curdata = "\$_DCACHE['$cachename'] = ".arrayeval($data).";\n\n";
$db->query("REPLACE INTO {$tablepre}caches (cachename, type, dateline, data) VALUES ('$dbcachename', '1', '$timestamp', '".addslashes($curdata)."')");
return $curdata;
}
function getcachevars($data, $type = 'VAR') {
$evaluate = '';
foreach($data as $key => $val) {
if(is_array($val)) {
$evaluate .= "\$$key = ".arrayeval($val).";\n";
} else {
$val = addcslashes($val, '\'\\');
$evaluate .= $type == 'VAR' ? "\$$key = '$val';\n" : "define('".strtoupper($key)."', '$val');\n";
}
}
return $evaluate;
}
function advertisement($range) {
global $db, $tablepre, $timestamp, $insenz;
$advs = array();
$query = $db->query("SELECT * FROM {$tablepre}advertisements WHERE available>'0' AND starttime<='$timestamp' ORDER BY displayorder");
if($db->num_rows($query)) {
while($adv = $db->fetch_array($query)) {
if(in_array($adv['type'], array('footerbanner', 'thread'))) {
$parameters = unserialize($adv['parameters']);
$position = isset($parameters['position']) && in_array($parameters['position'], array(2, 3)) ? $parameters['position'] : 1;
$type = $adv['type'].$position;
} else {
$type = $adv['type'];
}
$adv['targets'] = in_array($adv['targets'], array('', 'all')) ? ($type == 'text' ? 'forum' : (substr($type, 0, 6) == 'thread' ? 'forum' : 'all')) : $adv['targets'];
foreach(explode("\t", $adv['targets']) as $target) {
$target = $target == '0' || $type == 'intercat' ? 'index' : (in_array($target, array('all', 'index', 'forumdisplay', 'viewthread', 'register', 'redirect', 'archiver')) ? $target : ($target == 'forum' ? 'forum_all' : 'forum_'.$target));
if((($range == 'forumdisplay' && !in_array($adv['type'], array('thread', 'interthread'))) || $range == 'viewthread') && substr($target, 0, 6) == 'forum_') {
if($adv['type'] == 'thread') {
foreach(isset($parameters['displayorder']) ? explode("\t", $parameters['displayorder']) : array('0') as $postcount) {
$advs['type'][$type.'_'.$postcount][$target][] = $adv['advid'];
}
} else {
$advs['type'][$type][$target][] = $adv['advid'];
}
$advs['items'][$adv['advid']] = $adv['code'];
} elseif($range == 'all' && in_array($target, array('all', 'redirect'))) {
$advs[$target]['type'][$type][] = $adv['advid'];
$advs[$target]['items'][$adv['advid']] = $adv['code'];
} elseif($range == 'index' && $type == 'intercat') {
$parameters = unserialize($adv['parameters']);
foreach(is_array($parameters['position']) ? $parameters['position'] : array('0') as $position) {
$advs['type'][$type][$position][] = $adv['advid'];
$advs['items'][$adv['advid']] = $adv['code'];
}
} elseif($target == $range || ($range == 'index' && $target == 'forum_all' && $type == 'text')) {
$advs['type'][$type][] = $adv['advid'];
$advs['items'][$adv['advid']] = $adv['code'];
}
}
}
}
if($insenz['hash'] && $insenz['hardadstatus']) {
$typearray = array('insenz' => 0, 'headerbanner' => 1, 'thread3_1' => 2, 'thread2_1' => 3, 'thread1_1' => 4, 'interthread' => 5, 'footerbanner1' => 6, 'footerbanner2' => 7, 'footerbanner3' => 8);
$hardadstatus = is_array($insenz['hardadstatus']) ? $insenz['hardadstatus'] : explode(',', $insenz['hardadstatus']);
$query = $db->query("SELECT * FROM {$tablepre}advcaches");
while($adv = $db->fetch_array($query)) {
$adv['advid'] = 'i'.$adv['advid'];
if($adv['type'] == 'insenz' && $range == 'all') {
$advs['all']['type']['insenz'][] = $adv['advid'];
$advs['all']['items'][$adv['advid']] = $adv['code'];
} elseif(in_array($typearray[$adv['type']], $hardadstatus)) {
if($adv['target'] == 0) {
if(($adv['type'] == 'interthread' || substr($adv['type'], 0, 6) == 'thread') && $range == 'viewthread') {
$advs['type'][$adv['type']]['forum_all'][] = $adv['advid'];
$advs['items'][$adv['advid']] = $adv['code'];
} elseif(($adv['type'] == 'headerbanner' || substr($adv['type'], 0, 12) == 'footerbanner') && $range == 'all') {
$advs['all']['type'][$adv['type']][] = $adv['advid'];
$advs['all']['items'][$adv['advid']] = $adv['code'];
}
} elseif($range == 'viewthread' || ($range == 'forumdisplay' && ($adv['type'] == 'headerbanner' || substr($adv['type'], 0, 12) == 'footerbanner'))) {
$advs['type'][$adv['type']]['forum_'.$adv['target']][] = $adv['advid'];
$advs['items'][$adv['advid']] = $adv['code'];
}
}
}
}
return $advs;
}
function pluginmodulecmp($a, $b) {
return $a['displayorder'] > $b['displayorder'] ? 1 : -1;
}
function smthumb($size, $smthumb = 50) {
if($size[0] <= $smthumb && $size[1] <= $smthumb) {
return array('w' => $size[0], 'h' => $size[1]);
}
$sm = array();
$x_ratio = $smthumb / $size[0];
$y_ratio = $smthumb / $size[1];
if(($x_ratio * $size[1]) < $smthumb) {
$sm['h'] = ceil($x_ratio * $size[1]);
$sm['w'] = $smthumb;
} else {
$sm['w'] = ceil($y_ratio * $size[0]);
$sm['h'] = $smthumb;
}
return $sm;
}
function arrayeval($array, $level = 0) {
if(!is_array($array)) {
return "'".$array."'";
}
if(is_array($array) && function_exists('var_export')) {
return var_export($array, true);
}
$space = '';
for($i = 0; $i <= $level; $i++) {
$space .= "\t";
}
$evaluate = "Array\n$space(\n";
$comma = $space;
if(is_array($array)) {
foreach($array as $key => $val) {
$key = is_string($key) ? '\''.addcslashes($key, '\'\\').'\'' : $key;
$val = !is_array($val) && (!preg_match("/^\-?[1-9]\d*$/", $val) || strlen($val) > 12) ? '\''.addcslashes($val, '\'\\').'\'' : $val;
if(is_array($val)) {
$evaluate .= "$comma$key => ".arrayeval($val, $level + 1);
} else {
$evaluate .= "$comma$key => $val";
}
$comma = ",\n$space";
}
}
$evaluate .= "\n$space)";
return $evaluate;
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -