📄 upgrade10.php
字号:
$uctablepre = $_POST['uctablepre'];
echo "<h4>处理短消息数据</h4>";
$ucdb = new dbstuff();
$ucdb->connect(UC_DBHOST, UC_DBUSER, UC_DBPW, UC_DBNAME, 0, FALSE, UC_DBCHARSET);
$commonpm = getgpc('commonpm');
if(!$commonpm) {
$arr = $db->fetch_first("SELECT uid, username FROM {$tablepre}members WHERE adminid='1' LIMIT 1");
$query = $db->query("SELECT * FROM {$tablepre}announcements WHERE type='2'");
while($data = $db->fetch_array($query)) {
$data['subject'] = addslashes($data['subject']);
$data['message'] = addslashes($data['message']);
$ucdb->query("INSERT INTO ".UC_DBTABLEPRE."pms SET msgfrom='$arr[username]', msgfromid='$arr[uid]', msgtoid='0', folder='inbox', subject='$data[subject]', message='$data[message]', dateline='$data[dateline]'");
}
}
$start = intval(getgpc('start'));
$limit = 5000;
$total = intval(getgpc('total'));
if(!$total) {
$total = $db->result_first("SELECT COUNT(*) FROM {$tablepre}pms");
}
$ucdb = new dbstuff();
$ucdb->connect(UC_DBHOST, UC_DBUSER, UC_DBPW, UC_DBNAME, 0, FALSE, UC_DBCHARSET);
//mysql_query("SET character_set_connection=latin1, character_set_results=binary, character_set_client=latin1", $ucdb->link);
$query = $db->query("SELECT * FROM {$tablepre}pms LIMIT $start, $limit");
if($total == 0 || $total <= $start || $db->errno() == 1146) {
instmsg(' 处理短消息完毕。', '?step=7');
}
if($ucdb->version() > '4.1' && $ucdb == $db && $dbname != UC_DBNAME) {
$ucdb->query("SET NAMES ".UC_DBCHARSET);
}
while($data = $db->fetch_array($query)) {
$data['subject'] = addslashes($data['subject']);
$data['message'] = addslashes($data['message']);
$ucdb->query("INSERT INTO ".UC_DBTABLEPRE."pms SET msgfrom='$data[msgfrom]',
msgfromid='$data[msgfromid]',msgtoid='$data[msgtoid]',folder='$data[folder]',new='$data[new]',subject='$data[subject]',
dateline='$data[dateline]',message='$data[message]',delstatus='$data[delstatus]',related='0'", 'SILENT');
}
$end = $start + $limit;
instmsg("正在处理短消息 $start / $total", '?step=6&commonpm=1&start='.$end.'&total='.$total, $uchidden);
instfooter();
} elseif($step == 7) {
echo "<h4>新增数据表</h4>";
$sql = str_replace("\r\n", "\n", $sql);
dir_clear('./forumdata/cache');
dir_clear('./forumdata/templates');
runquery($upgrade1);
instmsg("新增数据表处理完毕。", '?step=8');
instfooter();
} elseif($step == 8) {
$start = isset($_GET['start']) ? intval($_GET['start']) : 0;
echo "<h4>调整论坛数据表结构</h4>";
if(isset($upgradetable[$start]) && $upgradetable[$start][0]) {
echo "升级数据表 [ $start ] {$tablepre}{$upgradetable[$start][0]} {$upgradetable[$start][3]}:";
$successed = upgradetable($upgradetable[$start]);
if($successed === TRUE) {
echo ' <font color=green>OK</font><br />';
} elseif($successed === FALSE) {
//echo ' <font color=red>ERROR</font><br />';
} elseif($successed == 'TABLE NOT EXISTS') {
echo '<span class=red>数据表不存在</span>升级无法继续,请确认您的论坛版本是否正确!</font><br />';
instfooter();
exit;
}
}
$start ++;
if(isset($upgradetable[$start]) && $upgradetable[$start][0]) {
instmsg("请等待 ...", "?step=8&start=$start");
}
instmsg("论坛数据表结构调整完毕。", "?step=9");
instfooter();
} elseif($step == 9) {
echo "<h4>更新部分数据</h4>";
runquery($upgrade3);
upg_adminactions();
upg_insenz();
upg_js();
instmsg("部分数据更新完毕。", "?step=10");
instfooter();
} else {
require_once DISCUZ_ROOT.'./uc_client/client.php';
$uc_input = uc_api_input("action=updatecache");
dir_clear('./forumdata/cache');
dir_clear('./forumdata/templates');
echo '<br />恭喜您论坛数据升级成功,接下来请您:<ol><li><b>必删除本程序</b>'.
'<li>使用管理员身份登录论坛,进入后台,更新缓存'.
'<li>进行论坛注册、登录、发贴等常规测试,看看运行是否正常'.
'<li>如果您觉得论坛升级后没有任何问题可以自行删除 forumdata 目录下的 upgrade.log 文件<br /><br />'.
'<b>感谢您选用我们的产品!</b><a href="index.php" target="_blank">您现在可以访问论坛,查看升级情况</a><iframe width="0" height="0" src="index.php"></iframe>';
instfooter();
}
function insertconfig($s, $find, $replace) {
if(preg_match($find, $s)) {
$s = preg_replace($find, $replace, $s);
} else {
// 插入到最后一行
$s .= "\r\n".$replace;
}
return $s;
}
function instheader() {
global $charset, $version;
echo "<html><head>".
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=$charset\">".
"<title>$version[old] >> $version[new] 升级向导</title>".
"<style type=\"text/css\">
a {
color: #3A4273;
text-decoration: none
}
a:hover {
color: #3A4273;
text-decoration: underline
}
body, table, td {
color: #3A4273;
font-family: Tahoma, Verdana, Arial;
font-size: 12px;
line-height: 20px;
scrollbar-base-color: #E3E3EA;
scrollbar-arrow-color: #5C5C8D
}
input {
color: #085878;
font-family: Tahoma, Verdana, Arial;
font-size: 12px;
background-color: #3A4273;
color: #FFFFFF;
scrollbar-base-color: #E3E3EA;
scrollbar-arrow-color: #5C5C8D
}
.install {
font-family: Arial, Verdana;
font-size: 20px;
font-weight: bold;
color: #000000
}
.message {
background: #E3E3EA;
padding: 20px;
}
.altbg1 {
background: #E3E3EA;
}
.altbg2 {
background: #EEEEF6;
}
.header td {
color: #FFFFFF;
background-color: #3A4273;
text-align: center;
}
.option td {
text-align: center;
}
.redfont {
color: #FF0000;
}
</style>
<script type=\"text/javascript\">
function redirect(url) {
window.location=url;
}
function $(id) {
return document.getElementById(id);
}
</script>
</head>".
"<body bgcolor=\"#3A4273\" text=\"#000000\"><div id=\"append_parent\"></div>".
"<table width=\"95%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#FFFFFF\" align=\"center\"><tr><td>".
"<table width=\"98%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\"><tr>".
"<td class=\"install\" height=\"30\" valign=\"bottom\"><font color=\"#FF0000\">>></font> $version[old] >> $version[new] 升级向导 ".
"</td></tr><tr><td><hr noshade align=\"center\" width=\"100%\" size=\"1\"></td></tr><tr><td colspan=\"2\">";
}
function instfooter() {
global $version;
echo "</td></tr><tr><td><hr noshade align=\"center\" width=\"100%\" size=\"1\"></td></tr>".
"<tr><td align=\"center\">".
"<b style=\"font-size: 11px\">Powered by <a href=\"http://discuz.net\" target=\"_blank\">Discuz!".
"</a> Copyright © <a href=\"http://www.comsenz.com\" target=\"_blank\">Comsenz Inc.</a> 2001-2009</b><br /><br />".
"</td></tr></table></td></tr></table>".
"</body></html>";
}
function instmsg($message, $url_forward = '', $postdata = '') {
global $lang, $msglang;
$message = $msglang[$message] ? $msglang[$message] : $message;
if($postdata) {
$message .= "<br /><br /><br /><a href=\"###\" onclick=\"document.getElementById('postform').submit();\">$msglang[redirect_msg]</a>";
echo '<form action="'.$url_forward.'" method="post" id="postform">';
echo $postdata;
echo "<tr><td style=\"padding-top:50px; padding-bottom:100px\"><table width=\"560\" cellspacing=\"1\" bgcolor=\"#000000\" border=\"0\" align=\"center\">".
"<tr bgcolor=\"#3A4273\"><td width=\"20%\" style=\"color: #FFFFFF; padding-left: 10px\">$lang[error_message]</td></tr>".
"<tr align=\"center\" bgcolor=\"#E3E3EA\"><td class=\"message\">$message</td></tr></table></td></tr>";
echo '</form><script>setTimeout("document.getElementById(\'postform\').submit()", 1250);</script>';
instfooter();
} else {
if($url_forward) {
$message .= "<br /><br /><br /><a href=\"$url_forward\">$msglang[redirect_msg]</a>";
$message .= "<script>setTimeout(\"redirect('$url_forward');\", 1250);</script>";
} elseif(strpos($message, $lang['return'])) {
$message .= "<br /><br /><br /><a href=\"javascript:history.go(-1);\" class=\"mediumtxt\">$lang[message_return]</a>";
}
echo "<tr><td style=\"padding-top:50px; padding-bottom:100px\"><table width=\"560\" cellspacing=\"1\" bgcolor=\"#000000\" border=\"0\" align=\"center\">".
"<tr bgcolor=\"#3A4273\"><td width=\"20%\" style=\"color: #FFFFFF; padding-left: 10px\">$lang[error_message]</td></tr>".
"<tr align=\"center\" bgcolor=\"#E3E3EA\"><td class=\"message\">$message</td></tr></table></td></tr>";
instfooter();
}
exit;
}
function getgpc($k, $var='G') {
switch($var) {
case 'G': $var = &$_GET; break;
case 'P': $var = &$_POST; break;
case 'C': $var = &$_COOKIE; break;
case 'R': $var = &$_REQUEST; break;
}
return isset($var[$k]) ? $var[$k] : NULL;
}
function dir_clear($dir) {
$directory = dir($dir);
while($entry = $directory->read()) {
$filename = $dir.'/'.$entry;
if(is_file($filename)) {
@unlink($filename);
}
}
@touch($dir.'/index.htm');
$directory->close();
}
function var_to_hidden($k, $v) {
return "<input type=\"hidden\" name=\"$k\" value=\"$v\" />";
}
function getmaxuid() {
global $ucdb;
$query = $ucdb->query("SHOW TABLE STATUS LIKE '".substr(UC_DBTABLEPRE, strpos(UC_DBTABLEPRE, ".")+1)."members'");
$data = $ucdb->fetch_array($query);
if($data["Auto_increment"]) {
return $data["Auto_increment"] - 1;
} else {
return 0;
}
}
function getuidfields() {
return array(
'members',
'memberfields',
'access',
'activities',
'activityapplies',
'attachments',
'attachpaymentlog',
'buddys|uid,buddyid',
'creditslog',
'debateposts',
'debates',
'favorites',
'forumrecommend|authorid,moderatorid',
'invites',
'magiclog',
'magicmarket',
'membermagics',
'memberspaces',
'moderators',
'modworks',
'myposts',
'mythreads',
'onlinetime',
'orders',
'paymentlog|uid,authorid',
'pms|msgtoid,msgfromid|pmid',
'posts|authorid|pid',
'promotions',
'ratelog',
'rewardlog|authorid,answererid',
'searchindex|uid',
'spacecaches',
'subscriptions',
'threads|authorid|tid',
'threadsmod',
'tradecomments|raterid,rateeid',
'tradelog|sellerid,buyerid',
'trades|sellerid',
'validating',
'videos',
);
}
function dfopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE) {
$return = '';
$matches = parse_url($url);
$host = $matches['host'];
$path = $matches['path'] ? $matches['path'].'?'.$matches['query'].'#'.$matches['fragment'] : '/';
$port = !empty($matches['port']) ? $matches['port'] : 80;
if($post) {
$out = "POST $path HTTP/1.0\r\n";
$out .= "Accept: */*\r\n";
//$out .= "Referer: $boardurl\r\n";
$out .= "Accept-Language: zh-cn\r\n";
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
$out .= "Host: $host\r\n";
$out .= 'Content-Length: '.strlen($post)."\r\n";
$out .= "Connection: Close\r\n";
$out .= "Cache-Control: no-cache\r\n";
$out .= "Cookie: $cookie\r\n\r\n";
$out .= $post;
} else {
$out = "GET $path HTTP/1.0\r\n";
$out .= "Accept: */*\r\n";
//$out .= "Referer: $boardurl\r\n";
$out .= "Accept-Language: zh-cn\r\n";
$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
$out .= "Host: $host\r\n";
$out .= "Connection: Close\r\n";
$out .= "Cookie: $cookie\r\n\r\n";
}
$fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
if(!$fp) {
return '';
} else {
stream_set_blocking($fp, $block);
stream_set_timeout($fp, $timeout);
@fwrite($fp, $out);
$status = stream_get_meta_data($fp);
if(!$status['timed_out']) {
while (!feof($fp)) {
if(($header = @fgets($fp)) && ($header == "\r\n" || $header == "\n")) {
break;
}
}
$stop = false;
while(!feof($fp) && !$stop) {
$data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit));
$return .= $data;
if($limit) {
$limit -= strlen($data);
$stop = $limit <= 0;
}
}
}
@fclose($fp);
return $return;
}
}
function createtable($sql, $dbcharset) {
$type = strtoupper(preg_replace("/^\s*CREATE TABLE\s+.+\s+\(.+?\).*(ENGINE|TYPE)\s*=\s*([a-z]+?).*$/isU", "\\2", $sql));
$type = in_array($type, array('MYISAM', 'HEAP')) ? $type : 'MYISAM';
return preg_replace("/^\s*(CREATE TABLE\s+.+\s+\(.+?\)).*$/isU", "\\1", $sql).
(mysql_get_server_info() > '4.1' ? " ENGINE=$type DEFAULT CHARSET=$dbcharset" : " TYPE=$type");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -