📄 upgrade5.php
字号:
$fields .= $fieldids ? ', field_'.implode(', field_', $fieldids) : '';
$query = $db->query("SELECT $fields FROM {$tablepre}members LIMIT $start, 3000");
while($member = $db->fetch_array($query)) {
$member = daddslashes($member);
$fieldadd = '';
foreach($fieldids as $fieldid) {
$fieldadd .= ", '".$member['field_'.$fieldid]."'";
}
$db->query("INSERT INTO {$tablepre}memberfields ($fields, sightml)
VALUES('$member[uid]', '$member[site]', '$member[icq]', '$member[oicq]', '$member[yahoo]', '$member[msn]', '$member[location]', '$member[bio]', '$member[signature]', '$member[avatar]', '$member[avatarwidth]', '$member[avatarheight]', '$member[customstatus]', '$member[ignorepm]' $fieldadd, '$member[signature]')");
}
if($db->num_rows($query)) {
echo "正在进行第 3 步升级 起始列数: $start<br><br>";
redirect("?action=upgrade&step=3&start=".($start+3000));
} else {
echo "第 3 步升级成功<br><br>";
redirect("?action=upgrade&step=4");
}
}
} elseif($step == 4) {
runquery(intval(mysql_get_server_info()) == 3 ? $upgrade4_3 : $upgrade4_4);
echo "第 4 步升级成功<br><br>";
redirect("?action=upgrade&step=5");
} elseif($step == 5) {
runquery(intval(mysql_get_server_info()) == 3 ? $upgrade5_3 : $upgrade5_4);
loginit('ratelog');
loginit('illegallog');
loginit('modslog');
loginit('cplog');
loginit('errorlog');
loginit('banlog');
echo "第 5 步升级成功<br><br>";
redirect("?action=upgrade&step=6");
} elseif($step == 6) {
runquery(intval(mysql_get_server_info()) == 3 ? $upgrade6_3 : $upgrade6_4);
echo "第 6 步升级成功<br><br>";
redirect("?action=upgrade&step=7");
} elseif($step == 7) {
$str_fields = '';
$query = $db->query("SELECT fieldid, size FROM {$tablepre}profilefields");
while($field = $db->fetch_array($query)) {
$str_fields .= ", DROP field_$field[fieldid]";
}
$query = $db->query("SELECT * FROM {$tablepre}forums");
while($forum = $db->fetch_array($query)) {
$forum['moderator'] = addslashes(str_replace(' ', '', $forum['moderator']));
$query1 = $db->query("SELECT uid FROM {$tablepre}members WHERE username IN ('".str_replace(',', '\',\'', $forum['moderator'])."')");
while($member = $db->fetch_array($query1)) {
$db->query("REPLACE INTO {$tablepre}moderators (fid, uid) VALUES
('$forum[fid]', '$member[uid]')");
}
$db->query("REPLACE INTO {$tablepre}forumfields (fid, icon, moderators, password, viewperm, postperm, replyperm, getattachperm)
VALUES ('$forum[fid]', '".addslashes($forum['icon'])."', '".str_replace(',', "\t", addslashes($forum['moderator']))."', '".addslashes($forum['password'])."', '$forum[viewperm]', '$forum[postperm]', '$forum[replyperm]', '$forum[getattachperm]')");
}
eval("\$upgrade7 = \"$upgrade7\";");
runquery($upgrade7);
$query = $db->query("SELECT s.styleid, sv.substitute FROM {$tablepre}styles s
LEFT JOIN {$tablepre}stylevars sv ON s.styleid=sv.styleid AND sv.variable='fontsize'");
while($style = $db->fetch_array($query)) {
$db->query("INSERT INTO {$tablepre}stylevars (styleid, variable, substitute)
VALUES ('$style[styleid]', 'innerborderwidth', '1')");
$db->query("INSERT INTO {$tablepre}stylevars (styleid, variable, substitute)
VALUES ('$style[styleid]', 'innerbordercolor', '#D6E0EF')");
$db->query("INSERT INTO {$tablepre}stylevars (styleid, variable, substitute)
VALUES ('$style[styleid]', 'msgfontsize', '$style[substitute]')");
}
echo "第 7 步升级成功<br><br>";
redirect("?action=upgrade&step=8");
} elseif($step == 8) {
runquery($upgrade8);
$q = $db->query("SELECT fid FROM {$tablepre}forums");
while($f = $db->fetch_array($q)) {
$fid = $f['fid'];
$query = $db->query("SELECT COUNT(*) AS threadcount, SUM(t.replies)+COUNT(*) AS replycount
FROM {$tablepre}threads t, {$tablepre}forums f
WHERE f.fid='$fid' AND t.fid=f.fid AND t.displayorder>='0'");
extract($db->fetch_array($query));
$query = $db->query("SELECT tid, subject, lastpost, lastposter FROM {$tablepre}threads
WHERE fid='$fid' AND displayorder>='0' ORDER BY lastpost DESC LIMIT 1");
$thread = $db->fetch_array($query);
$thread['subject'] = addslashes($thread['subject']);
$thread['lastposter'] = addslashes($thread['lastposter']);
$db->query("UPDATE {$tablepre}forums SET posts='$replycount', threads='$threadcount', lastpost='$thread[tid]\t$thread[subject]\t$thread[lastpost]\t$thread[lastposter]' WHERE fid='$fid'", 'UNBUFFERED');
}
echo "第 8 步升级成功<br><br>";
redirect("?action=upgrade&step=9");
} elseif($step == 9) {
runquery($upgrade9);
$db->query("ALTER TABLE {$tablepre}pms DROP INDEX folder", 'SILENT');
$db->query("ALTER TABLE {$tablepre}styles DROP INDEX themename", 'SILENT');
$query = $db->query("SELECT fid, description, postcredits, replycredits FROM {$tablepre}forums");
while($forum = $db->fetch_array($query)) {
$postcredits = $forum['postcredits'] == -1 ? '' : addslashes(serialize(array(1 => $forum['postcredits'])));
$replycredits = $forum['replycredits'] == -1 ? '' : addslashes(serialize(array(1 => $forum['replycredits'])));
$db->query("UPDATE {$tablepre}forumfields SET description='".addslashes($forum['description'])."', postcredits='$postcredits', replycredits='$replycredits' WHERE fid='$forum[fid]'");
}
$db->query("ALTER TABLE {$tablepre}forums DROP description, DROP postcredits, DROP replycredits");
echo "第 9 步升级成功<br><br>";
redirect("?action=upgrade&step=10");
} elseif($step == 10) {
//这里可能需要分步骤操作
$query = $db->query("SELECT pid, dateline FROM {$tablepre}posts WHERE attachment>0");
while($post = $db->fetch_array($query)) {
$db->query("UPDATE {$tablepre}attachments SET dateline='$post[dateline]' WHERE pid='$post[pid]'");
}
echo "第 10 步升级成功<br><br>";
redirect("?action=upgrade&step=11");
} elseif($step == 11) {
$num = 10000; // parameter
$start = intval($start);
$pids = 0;
$query = $db->query("SELECT pid FROM {$tablepre}threads t, {$tablepre}posts p
WHERE p.tid=t.tid AND p.dateline=t.dateline AND p.authorid=t.authorid
LIMIT $start, $num");
while($post = $db->fetch_array($query)) {
$pids .= ','.$post['pid'];
}
$db->query("UPDATE {$tablepre}posts SET first='1' WHERE pid IN ($pids)");
if($db->num_rows($query)) {
echo "正在进行第 11 步升级 起始列数: $start<br><br>";
redirect("?action=upgrade&step=11&start=".($start+$num));
} else {
echo "第 11 步升级成功<br><br>";
redirect("?action=upgrade&step=12");
}
} elseif($step == 12) {
$query = $db->query("SELECT uid, buddyid, count(*) AS count FROM {$tablepre}buddys GROUP BY uid, buddyid HAVING count>1");
while($buddy = $db->fetch_array($query)) {
$db->query("DELETE FROM {$tablepre}buddys WHERE uid='$buddy[uid]' AND buddyid='$buddy[buddyid]' LIMIT ".($buddy['count'] - 1));
}
$credits = array();
$query = $db->query("SELECT * FROM {$tablepre}settings WHERE variable LIKE '%credits%'");
while($c = $db->fetch_array($query)) {
$credits[$c['variable']] = $c['value'];
}
$extcredits = Array
(
1 => Array
(
'title' => '威望',
'showinthread' => '',
'available' => 1
),
2 => Array
(
'title' => '金钱',
'showinthread' => '',
'available' => 1
)
);
$creditspolicy = Array
(
'post' => Array
(
1 => $credits['postcredits']
),
'reply' => Array
(
1 => $credits['replycredits']
),
'digest' => Array
(
1 => $credits['digestcredits']
),
'postattach' => Array
(
),
'getattach' => Array
(
),
'pm' => Array
(
),
'search' => Array
(
)
);
$db->query("REPLACE INTO {$tablepre}settings (variable, value)
VALUES ('creditspolicy', '".addslashes(serialize($creditspolicy))."')");
$db->query("REPLACE INTO {$tablepre}settings (variable, value)
VALUES ('extcredits', '".addslashes(serialize($extcredits))."')");
$db->query("DELETE FROM {$tablepre}settings WHERE variable IN ('deletedcredits', 'digestcredits', 'postcredits', 'replycredits')");
$query = $db->query("SELECT m.uid, m.groupid, m.groupexpiry, mf.origgroup FROM {$tablepre}members m, {$tablepre}memberfields mf WHERE mf.origgroup<>'' AND m.uid=mf.uid AND m.groupexpiry>0");
while($member = $db->fetch_array($query)) {
$member['origgroup'] = explode("\t", $member['origgroup']);
if($member['origgroup'][0] || $member['origgroup'][1]) {
$array = array('main' => array('time' => $member['groupexpiry'], 'groupid' => $member['origgroup'][1], 'adminid' => $member['origgroup'][0]), 'ext' => array($member['groupid'] => $member['groupexpiry']));
$db->query("UPDATE {$tablepre}memberfields SET groupterms='".addslashes(serialize($array))."' WHERE uid='$member[uid]'");
}
}
$db->query("ALTER TABLE {$tablepre}memberfields DROP origgroup");
@unlink('./forumdata/cache/cache_settings.php');
echo "恭喜您升级成功,请务必删除本程序. 进行以下操作后才能最后完成:<br>";
}
}
function dir_clear($dir) {
$directory = dir($dir);
while($entry = $directory->read()) {
$filename = $dir.'/'.$entry;
if(is_file($filename)) {
@unlink($filename);
}
}
$directory->close();
}
function daddslashes($string) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = daddslashes($val, $force);
}
} else {
$string = addslashes($string);
}
return $string;
}
function loginit($log) {
global $lang;
$fp = @fopen('./forumdata/'.$log.'.php');
@fwrite($fp, "<?PHP exit(\"Access Denied\"); ?>\n");
@fclose($fp);
}
function checkbbcodes($message, $bbcodeoff) {
return !$bbcodeoff && !preg_match("/\[.+\].*\[\/.+\]/s", $message) ? -1 : $bbcodeoff;
}
function checksmilies($message, $smileyoff) {
global $smilies;
return !$smileyoff && !preg_match('/'.implode('|', $smilies).'/', $message) ? -1 : $smileyoff;
}
function runquery($query) {
global $db, $tablepre;
$expquery = explode(";", $query);
foreach($expquery as $sql) {
$sql = trim($sql);
if($sql != "" && $sql[0] != "#") {
$db->query(str_replace("cdb_", $tablepre, $sql));
}
}
}
function redirect($url) {
echo"<script>";
echo"function redirect() {window.location.replace('$url');}\n";
echo"setTimeout('redirect();', 500);\n";
echo"</script>";
echo"<br><br><a href=\"$url\">浏览器会自动跳转页面,无需人工干预。<br>除非当您的浏览器没有自动跳转时,请点击这里</a>";
}
function random($length) {
$hash = '';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++) {
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -