|
|
@@ -1,4 +1,5 @@ |
|
|
|
<?php |
|
|
|
|
|
|
|
/** |
|
|
|
* @version $Id: index.php 2020-11-18 tianya $ |
|
|
|
* @copyright Copyright (c) 2020, DedeBIZ.COM |
|
|
@@ -9,145 +10,124 @@ |
|
|
|
// 1.数据库转码 |
|
|
|
// 2.文件选择性覆盖 |
|
|
|
$cfg_NotPrintHead = "Y"; |
|
|
|
require_once (dirname(__FILE__) . "/../include/common.inc.php"); |
|
|
|
require_once (dirname(__FILE__) . "/common.func.php"); |
|
|
|
require_once(dirname(__FILE__) . "/../include/common.inc.php"); |
|
|
|
require_once(dirname(__FILE__) . "/common.func.php"); |
|
|
|
|
|
|
|
define("TOV6LOCK", DEDEDATA."/cache/tov6.lock.txt"); |
|
|
|
define("TOV6LOCK", DEDEDATA . "/cache/tov6.lock.txt"); |
|
|
|
|
|
|
|
$bkdir = DEDEDATA.'/'.$cfg_backup_dir."/tov6"; |
|
|
|
MkdirAll($bkdir,$GLOBALS['cfg_dir_purview']); |
|
|
|
$bkdir = DEDEDATA . '/' . $cfg_backup_dir . "/tov6"; |
|
|
|
MkdirAll($bkdir, $GLOBALS['cfg_dir_purview']); |
|
|
|
|
|
|
|
$step = isset($step)? intval($step) : 0; |
|
|
|
$step = isset($step) ? intval($step) : 0; |
|
|
|
|
|
|
|
//跳转到一下页的JS |
|
|
|
$gotojs = "function GotoNextPage(){ |
|
|
|
document.gonext."."submit(); |
|
|
|
}"."\r\nset"."Timeout('GotoNextPage()',500);"; |
|
|
|
document.gonext." . "submit(); |
|
|
|
}" . "\r\nset" . "Timeout('GotoNextPage()',500);"; |
|
|
|
|
|
|
|
$dojs = "<script language='javascript'>$gotojs</script>"; |
|
|
|
|
|
|
|
if ( empty($tablearr) ) |
|
|
|
{ |
|
|
|
$dsql->SetQuery("SHOW TABLES"); |
|
|
|
$dsql->Execute('t'); |
|
|
|
while($row = $dsql->GetArray('t',MYSQL_BOTH)) |
|
|
|
{ |
|
|
|
if(preg_match("#^{$cfg_dbprefix}#", $row[0])||in_array($row[0],$channelTables)) |
|
|
|
{ |
|
|
|
$dedeSysTables[] = $row[0]; |
|
|
|
} |
|
|
|
if (empty($tablearr)) { |
|
|
|
$dsql->SetQuery("SHOW TABLES"); |
|
|
|
$dsql->Execute('t'); |
|
|
|
while ($row = $dsql->GetArray('t', MYSQL_BOTH)) { |
|
|
|
if (preg_match("#^{$cfg_dbprefix}#", $row[0]) || in_array($row[0], $channelTables)) { |
|
|
|
$dedeSysTables[] = $row[0]; |
|
|
|
} |
|
|
|
$tablearr = implode(",", $dedeSysTables); |
|
|
|
} |
|
|
|
$tablearr = implode(",", $dedeSysTables); |
|
|
|
} |
|
|
|
|
|
|
|
if ( empty($bakfiles) ) |
|
|
|
{ |
|
|
|
if (empty($bakfiles)) { |
|
|
|
$dh = dir($bkdir); |
|
|
|
$structfile = ""; |
|
|
|
while(($filename=$dh->read()) !== false) |
|
|
|
{ |
|
|
|
if(!preg_match("#txt$#", $filename)) |
|
|
|
{ |
|
|
|
continue; |
|
|
|
} |
|
|
|
if(preg_match("#tables_struct#", $filename)) |
|
|
|
{ |
|
|
|
$structfile = $filename; |
|
|
|
} |
|
|
|
else if( filesize("$bkdir/$filename") >0 ) |
|
|
|
{ |
|
|
|
$filelists[] = $filename; |
|
|
|
} |
|
|
|
while (($filename = $dh->read()) !== false) { |
|
|
|
if (!preg_match("#txt$#", $filename)) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
if (preg_match("#tables_struct#", $filename)) { |
|
|
|
$structfile = $filename; |
|
|
|
} else if (filesize("$bkdir/$filename") > 0) { |
|
|
|
$filelists[] = $filename; |
|
|
|
} |
|
|
|
} |
|
|
|
$dh->close(); |
|
|
|
$bakfiles = implode(",", $filelists); |
|
|
|
} |
|
|
|
|
|
|
|
if (file_exists(TOV6LOCK)) { |
|
|
|
ShowMsgV6("<p>已经成功执行升级程序,无需重复执行。</p><p>如果您需要获取升级服务,可以<a target='_blank' href='https://www.dedebiz.com/contact#contact'>联系官方</a>协助升级。</p>","javascript:;"); |
|
|
|
ShowMsgV6("<p>已经成功执行升级程序,无需重复执行。</p><p>如果您需要获取升级服务,可以<a target='_blank' href='https://www.dedebiz.com/contact#contact'>联系官方</a>协助升级。</p>", "javascript:;"); |
|
|
|
} |
|
|
|
|
|
|
|
if ($step == 0) { |
|
|
|
ShowMsgV6("<p>执行升级程序之前,您需要<font color=red>备份站点数据库及文件</font>,如果已经完成备份,可以点击下面“开始升级到V6”进行升级!<br><a target='_blank' class='btn btn-outline-success' href='https://www.dedebiz.com/help/tov6.md'>升级文档</a> <a class='btn btn-success' href='index.php?step=1'>开始升级到V6</a></p><p>如果您需要获取升级服务,也可以<a target='_blank' href='https://www.dedebiz.com/contact#contact'>联系官方</a>协助升级。</p>","javascript:;"); |
|
|
|
ShowMsgV6("<p>执行升级程序之前,您需要<font color=red>备份站点数据库及文件</font>,如果已经完成备份,可以点击下面“开始升级到V6”进行升级!<br><a target='_blank' class='btn btn-outline-success' href='https://www.dedebiz.com/help/tov6.md'>升级文档</a> <a class='btn btn-success' href='index.php?step=1'>开始升级到V6</a></p><p>如果您需要获取升级服务,也可以<a target='_blank' href='https://www.dedebiz.com/contact#contact'>联系官方</a>协助升级。</p>", "javascript:;"); |
|
|
|
} |
|
|
|
|
|
|
|
// 对数据库进行编码转换 |
|
|
|
else if ( $step == 1 ) |
|
|
|
{ |
|
|
|
if ( $cfg_soft_lang === "gb2312" ) |
|
|
|
{ |
|
|
|
//初始化使用到的变量 |
|
|
|
$tables = explode(',', $tablearr); |
|
|
|
$isstruct = 1; |
|
|
|
if(!isset($startpos)) |
|
|
|
{ |
|
|
|
$startpos = 0; |
|
|
|
} |
|
|
|
if(!isset($iszip)) |
|
|
|
{ |
|
|
|
$iszip = 0; |
|
|
|
} |
|
|
|
if(empty($nowtable)) |
|
|
|
{ |
|
|
|
$nowtable = ''; |
|
|
|
} |
|
|
|
if(empty($fsize)) |
|
|
|
{ |
|
|
|
$fsize = 2048; |
|
|
|
} |
|
|
|
$fsizeb = $fsize * 1024; |
|
|
|
|
|
|
|
//第一页的操作 |
|
|
|
if($nowtable=='') |
|
|
|
{ |
|
|
|
$tmsg = ''; |
|
|
|
$dh = dir($bkdir); |
|
|
|
while($filename = $dh->read()) |
|
|
|
{ |
|
|
|
if(!preg_match("#txt$#", $filename)) |
|
|
|
{ |
|
|
|
continue; |
|
|
|
} |
|
|
|
$filename = $bkdir."/$filename"; |
|
|
|
if(!is_dir($filename)) |
|
|
|
{ |
|
|
|
unlink($filename); |
|
|
|
} |
|
|
|
} |
|
|
|
$dh->close(); |
|
|
|
$tmsg .= "发现是GBK编码系统,需要进行数据库转码...<br />"; |
|
|
|
|
|
|
|
if($isstruct==1) |
|
|
|
{ |
|
|
|
$bkfile = $bkdir."/tables_struct_".substr(md5(time().mt_rand(1000,5000).$cfg_cookie_encode),0,16).".txt"; |
|
|
|
$mysql_version = $dsql->GetVersion(); |
|
|
|
$fp = fopen($bkfile, "w"); |
|
|
|
foreach($tables as $t) |
|
|
|
{ |
|
|
|
$ttt = str_replace($cfg_dbprefix, $cfg_dbprefix."v6_", $t); |
|
|
|
fwrite($fp, "DROP TABLE IF EXISTS `$ttt`;\r\n\r\n"); |
|
|
|
$dsql->SetQuery("SHOW CREATE TABLE ". $dsql->dbName .".".$t); |
|
|
|
$dsql->Execute('me'); |
|
|
|
$row = $dsql->GetArray('me', MYSQL_BOTH); |
|
|
|
|
|
|
|
//去除AUTO_INCREMENT |
|
|
|
$row[1] = preg_replace("#AUTO_INCREMENT=([0-9]{1,})[ \r\n\t]{1,}#i", "", $row[1]); |
|
|
|
$eng1 = "#ENGINE=MyISAM[ \r\n\t]{1,}DEFAULT[ \r\n\t]{1,}CHARSET=gbk#i"; |
|
|
|
$row[1] = preg_replace($eng1, "ENGINE=MyISAM CHARSET=utf8", $row[1]); |
|
|
|
|
|
|
|
$row[1] = str_replace("CREATE TABLE `".$cfg_dbprefix, "CREATE TABLE `".$cfg_dbprefix."v6_", $row[1]); |
|
|
|
|
|
|
|
$tableStruct = $row[1]; |
|
|
|
|
|
|
|
$tableStruct = gb2utf8($tableStruct); |
|
|
|
|
|
|
|
fwrite($fp,''.$tableStruct.";\r\n\r\n"); |
|
|
|
} |
|
|
|
fclose($fp); |
|
|
|
$tmsg .= "转化数据表结构信息完成...<br />"; |
|
|
|
} |
|
|
|
$tmsg .= "<font color='red'>正在进行数据转化的初始化工作,请稍后...</font>"; |
|
|
|
$doneForm = "<form name='gonext' method='post' action='index.php'> |
|
|
|
else if ($step == 1) { |
|
|
|
if ($cfg_soft_lang === "gb2312") { |
|
|
|
//初始化使用到的变量 |
|
|
|
$tables = explode(',', $tablearr); |
|
|
|
$isstruct = 1; |
|
|
|
if (!isset($startpos)) { |
|
|
|
$startpos = 0; |
|
|
|
} |
|
|
|
if (!isset($iszip)) { |
|
|
|
$iszip = 0; |
|
|
|
} |
|
|
|
if (empty($nowtable)) { |
|
|
|
$nowtable = ''; |
|
|
|
} |
|
|
|
if (empty($fsize)) { |
|
|
|
$fsize = 2048; |
|
|
|
} |
|
|
|
$fsizeb = $fsize * 1024; |
|
|
|
|
|
|
|
//第一页的操作 |
|
|
|
if ($nowtable == '') { |
|
|
|
$tmsg = ''; |
|
|
|
$dh = dir($bkdir); |
|
|
|
while ($filename = $dh->read()) { |
|
|
|
if (!preg_match("#txt$#", $filename)) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
$filename = $bkdir . "/$filename"; |
|
|
|
if (!is_dir($filename)) { |
|
|
|
unlink($filename); |
|
|
|
} |
|
|
|
} |
|
|
|
$dh->close(); |
|
|
|
$tmsg .= "发现是GBK编码系统,需要进行数据库转码...<br />"; |
|
|
|
|
|
|
|
if ($isstruct == 1) { |
|
|
|
$bkfile = $bkdir . "/tables_struct_" . substr(md5(time() . mt_rand(1000, 5000) . $cfg_cookie_encode), 0, 16) . ".txt"; |
|
|
|
$mysql_version = $dsql->GetVersion(); |
|
|
|
$fp = fopen($bkfile, "w"); |
|
|
|
foreach ($tables as $t) { |
|
|
|
$ttt = str_replace($cfg_dbprefix, $cfg_dbprefix . "v6_", $t); |
|
|
|
fwrite($fp, "DROP TABLE IF EXISTS `$ttt`;\r\n\r\n"); |
|
|
|
$dsql->SetQuery("SHOW CREATE TABLE " . $dsql->dbName . "." . $t); |
|
|
|
$dsql->Execute('me'); |
|
|
|
$row = $dsql->GetArray('me', MYSQL_BOTH); |
|
|
|
|
|
|
|
//去除AUTO_INCREMENT |
|
|
|
$row[1] = preg_replace("#AUTO_INCREMENT=([0-9]{1,})[ \r\n\t]{1,}#i", "", $row[1]); |
|
|
|
$eng1 = "#ENGINE=MyISAM[ \r\n\t]{1,}DEFAULT[ \r\n\t]{1,}CHARSET=gbk#i"; |
|
|
|
$row[1] = preg_replace($eng1, "ENGINE=MyISAM CHARSET=utf8", $row[1]); |
|
|
|
|
|
|
|
$row[1] = str_replace("CREATE TABLE `" . $cfg_dbprefix, "CREATE TABLE `" . $cfg_dbprefix . "v6_", $row[1]); |
|
|
|
|
|
|
|
$tableStruct = $row[1]; |
|
|
|
|
|
|
|
$tableStruct = gb2utf8($tableStruct); |
|
|
|
|
|
|
|
fwrite($fp, '' . $tableStruct . ";\r\n\r\n"); |
|
|
|
} |
|
|
|
fclose($fp); |
|
|
|
$tmsg .= "转化数据表结构信息完成...<br />"; |
|
|
|
} |
|
|
|
$tmsg .= "<font color='red'>正在进行数据转化的初始化工作,请稍后...</font>"; |
|
|
|
$doneForm = "<form name='gonext' method='post' action='index.php'> |
|
|
|
<input type='hidden' name='isstruct' value='$isstruct' /> |
|
|
|
<input type='hidden' name='step' value='1' /> |
|
|
|
<input type='hidden' name='fsize' value='$fsize' /> |
|
|
@@ -155,52 +135,47 @@ else if ( $step == 1 ) |
|
|
|
<input type='hidden' name='nowtable' value='{$tables[0]}' /> |
|
|
|
<input type='hidden' name='startpos' value='0' /> |
|
|
|
<input type='hidden' name='iszip' value='$iszip' />\r\n</form>\r\n{$dojs}\r\n"; |
|
|
|
PutInfo($tmsg, $doneForm); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
//执行分页备份 |
|
|
|
else |
|
|
|
{ |
|
|
|
$j = 0; |
|
|
|
$fs = array(); |
|
|
|
$bakStr = ''; |
|
|
|
|
|
|
|
//分析表里的字段信息 |
|
|
|
$dsql->GetTableFields($nowtable); |
|
|
|
$tmpNowtable = str_replace($cfg_dbprefix, $cfg_dbprefix."v6_", $nowtable); |
|
|
|
$intable = "INSERT INTO `$tmpNowtable` VALUES("; |
|
|
|
while($r = $dsql->GetFieldObject()) |
|
|
|
{ |
|
|
|
$fs[$j] = trim($r->name); |
|
|
|
$j++; |
|
|
|
} |
|
|
|
|
|
|
|
$fsd = $j-1; |
|
|
|
|
|
|
|
//读取表的内容 |
|
|
|
$dsql->SetQuery("SELECT * FROM `$nowtable` "); |
|
|
|
$dsql->Execute(); |
|
|
|
$m = 0; |
|
|
|
$bakfilename = "$bkdir/{$nowtable}_{$startpos}_".substr(md5(time().mt_rand(1000,5000).$cfg_cookie_encode),0,16).".txt"; |
|
|
|
|
|
|
|
while($row2 = $dsql->GetArray()) |
|
|
|
{ |
|
|
|
|
|
|
|
if($m < $startpos) |
|
|
|
{ |
|
|
|
$m++; |
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
//检测数据是否达到规定大小 |
|
|
|
if(strlen($bakStr) > $fsizeb) |
|
|
|
{ |
|
|
|
$fp = fopen($bakfilename,"w"); |
|
|
|
$bakStr = gb2utf8($bakStr); |
|
|
|
fwrite($fp,$bakStr); |
|
|
|
fclose($fp); |
|
|
|
$tmsg = "<font color='red'>完成到{$m}条记录的转化,继续转化{$nowtable}...</font>"; |
|
|
|
$doneForm = "<form name='gonext' method='post' action='index.php'> |
|
|
|
PutInfo($tmsg, $doneForm); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
//执行分页备份 |
|
|
|
else { |
|
|
|
$j = 0; |
|
|
|
$fs = array(); |
|
|
|
$bakStr = ''; |
|
|
|
|
|
|
|
//分析表里的字段信息 |
|
|
|
$dsql->GetTableFields($nowtable); |
|
|
|
$tmpNowtable = str_replace($cfg_dbprefix, $cfg_dbprefix . "v6_", $nowtable); |
|
|
|
$intable = "INSERT INTO `$tmpNowtable` VALUES("; |
|
|
|
while ($r = $dsql->GetFieldObject()) { |
|
|
|
$fs[$j] = trim($r->name); |
|
|
|
$j++; |
|
|
|
} |
|
|
|
|
|
|
|
$fsd = $j - 1; |
|
|
|
|
|
|
|
//读取表的内容 |
|
|
|
$dsql->SetQuery("SELECT * FROM `$nowtable` "); |
|
|
|
$dsql->Execute(); |
|
|
|
$m = 0; |
|
|
|
$bakfilename = "$bkdir/{$nowtable}_{$startpos}_" . substr(md5(time() . mt_rand(1000, 5000) . $cfg_cookie_encode), 0, 16) . ".txt"; |
|
|
|
|
|
|
|
while ($row2 = $dsql->GetArray()) { |
|
|
|
|
|
|
|
if ($m < $startpos) { |
|
|
|
$m++; |
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
//检测数据是否达到规定大小 |
|
|
|
if (strlen($bakStr) > $fsizeb) { |
|
|
|
$fp = fopen($bakfilename, "w"); |
|
|
|
$bakStr = gb2utf8($bakStr); |
|
|
|
fwrite($fp, $bakStr); |
|
|
|
fclose($fp); |
|
|
|
$tmsg = "<font color='red'>完成到{$m}条记录的转化,继续转化{$nowtable}...</font>"; |
|
|
|
$doneForm = "<form name='gonext' method='post' action='index.php'> |
|
|
|
<input type='hidden' name='step' value='1' /> |
|
|
|
<input type='hidden' name='isstruct' value='$isstruct' /> |
|
|
|
<input type='hidden' name='dopost' value='bak' /> |
|
|
@@ -209,222 +184,189 @@ else if ( $step == 1 ) |
|
|
|
<input type='hidden' name='nowtable' value='$nowtable' /> |
|
|
|
<input type='hidden' name='startpos' value='$m' /> |
|
|
|
<input type='hidden' name='iszip' value='$iszip' />\r\n</form>\r\n{$dojs}\r\n"; |
|
|
|
PutInfo($tmsg,$doneForm); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
|
|
|
|
//正常情况 |
|
|
|
$line = $intable; |
|
|
|
for($j=0; $j<=$fsd; $j++) |
|
|
|
{ |
|
|
|
if($j < $fsd) |
|
|
|
{ |
|
|
|
$line .= "'".RpLine(addslashes($row2[$fs[$j]]))."',"; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
$line .= "'".RpLine(addslashes($row2[$fs[$j]]))."');\r\n"; |
|
|
|
} |
|
|
|
} |
|
|
|
$m++; |
|
|
|
$bakStr .= $line; |
|
|
|
} |
|
|
|
|
|
|
|
//如果数据比卷设置值小 |
|
|
|
if($bakStr!='') |
|
|
|
{ |
|
|
|
$fp = fopen($bakfilename,"w"); |
|
|
|
$bakStr = gb2utf8($bakStr); |
|
|
|
fwrite($fp,$bakStr); |
|
|
|
fclose($fp); |
|
|
|
} |
|
|
|
for($i=0; $i<count($tables); $i++) |
|
|
|
{ |
|
|
|
if($tables[$i] == $nowtable) |
|
|
|
{ |
|
|
|
if(isset($tables[$i+1])) |
|
|
|
{ |
|
|
|
$nowtable = $tables[$i+1]; |
|
|
|
$startpos = 0; |
|
|
|
break; |
|
|
|
}else |
|
|
|
{ |
|
|
|
ShowMsgV6('完成数据备份转码,下面进行还原……', 'index?step=2'); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
$tmsg = "<font color='red'>完成到{$m}条记录的转码,继续转码{$nowtable}...</font>"; |
|
|
|
$doneForm = "<form name='gonext' method='post' action='index.php'> |
|
|
|
PutInfo($tmsg, $doneForm); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
|
|
|
|
//正常情况 |
|
|
|
$line = $intable; |
|
|
|
for ($j = 0; $j <= $fsd; $j++) { |
|
|
|
if ($j < $fsd) { |
|
|
|
$line .= "'" . RpLine(addslashes($row2[$fs[$j]])) . "',"; |
|
|
|
} else { |
|
|
|
$line .= "'" . RpLine(addslashes($row2[$fs[$j]])) . "');\r\n"; |
|
|
|
} |
|
|
|
} |
|
|
|
$m++; |
|
|
|
$bakStr .= $line; |
|
|
|
} |
|
|
|
|
|
|
|
//如果数据比卷设置值小 |
|
|
|
if ($bakStr != '') { |
|
|
|
$fp = fopen($bakfilename, "w"); |
|
|
|
$bakStr = gb2utf8($bakStr); |
|
|
|
fwrite($fp, $bakStr); |
|
|
|
fclose($fp); |
|
|
|
} |
|
|
|
for ($i = 0; $i < count($tables); $i++) { |
|
|
|
if ($tables[$i] == $nowtable) { |
|
|
|
if (isset($tables[$i + 1])) { |
|
|
|
$nowtable = $tables[$i + 1]; |
|
|
|
$startpos = 0; |
|
|
|
break; |
|
|
|
} else { |
|
|
|
ShowMsgV6('完成数据备份转码,下面进行还原……', 'index.php?step=2'); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
$tmsg = "<font color='red'>完成到{$m}条记录的转码,继续转码{$nowtable}...</font>"; |
|
|
|
$doneForm = "<form name='gonext' method='post' action='index.php'> |
|
|
|
<input type='hidden' name='isstruct' value='$isstruct' /> |
|
|
|
<input type='hidden' name='step' value='1' /> |
|
|
|
<input type='hidden' name='fsize' value='$fsize' /> |
|
|
|
<input type='hidden' name='tablearr' value='$tablearr' /> |
|
|
|
<input type='hidden' name='nowtable' value='$nowtable' /> |
|
|
|
<input type='hidden' name='startpos' value='$startpos'>\r\n</form>\r\n{$dojs}\r\n"; |
|
|
|
PutInfo($tmsg,$doneForm); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
//分页备份代码结束 |
|
|
|
PutInfo($tmsg, $doneForm); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
//分页备份代码结束 |
|
|
|
} else { |
|
|
|
ShowMsgV6('当前系统就是UTF8程序,无需数据库编码转换,进行DedeCMSV6升级……', 'index?step=3'); |
|
|
|
exit(); |
|
|
|
ShowMsgV6('当前系统就是UTF8程序,无需数据库编码转换,进行DedeCMSV6升级……', 'index.php?step=3'); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// 还原为UTF8编码的文件 |
|
|
|
else if ( $step == 2 ) |
|
|
|
{ |
|
|
|
if ( $cfg_soft_lang === "gb2312" ) |
|
|
|
{ |
|
|
|
else if ($step == 2) { |
|
|
|
if ($cfg_soft_lang === "gb2312") { |
|
|
|
@list($dbhost, $dbport) = explode(':', $GLOBALS['cfg_dbhost']); |
|
|
|
!$dbport && $dbport = 3306; |
|
|
|
$conn = mysqli_init(); |
|
|
|
mysqli_real_connect($conn, $dbhost, $GLOBALS['cfg_dbuser'], $GLOBALS['cfg_dbpwd'], false, $dbport) or die("无法连接数据库"); |
|
|
|
mysqli_query($conn, "SET character_set_connection=utf8,character_set_results=utf8,character_set_client=binary"); |
|
|
|
mysqli_select_db($conn, $GLOBALS['cfg_dbname']); |
|
|
|
$bakfilesTmp = $bakfiles; |
|
|
|
$bakfiles = explode(',', $bakfiles); |
|
|
|
if(empty($structfile)) |
|
|
|
{ |
|
|
|
$structfile = ""; |
|
|
|
} |
|
|
|
if(empty($delfile)) |
|
|
|
{ |
|
|
|
$delfile = 1; |
|
|
|
} |
|
|
|
if(empty($startgo)) |
|
|
|
{ |
|
|
|
$startgo = 0; |
|
|
|
} |
|
|
|
if($startgo==0 && $structfile!='') |
|
|
|
{ |
|
|
|
$tbdata = ''; |
|
|
|
$fp = fopen("$bkdir/$structfile", 'r'); |
|
|
|
while(!feof($fp)) |
|
|
|
{ |
|
|
|
$tbdata .= fgets($fp, 1024); |
|
|
|
} |
|
|
|
fclose($fp); |
|
|
|
$querys = explode(';', $tbdata); |
|
|
|
|
|
|
|
foreach($querys as $q) |
|
|
|
{ |
|
|
|
$rs = mysqli_query($conn, trim($q).';'); |
|
|
|
if ( !$rs ) |
|
|
|
{ |
|
|
|
//$str = mysqli_error($conn); |
|
|
|
//var_dump($str); |
|
|
|
} |
|
|
|
//$str = mysqli_error($conn); |
|
|
|
//var_dump($str); |
|
|
|
//$dsql->ExecuteNoneQuery(trim($q).';'); |
|
|
|
} |
|
|
|
if($delfile==1) |
|
|
|
{ |
|
|
|
@unlink("$bkdir/$structfile"); |
|
|
|
} |
|
|
|
$tmsg = "<font color='red'>完成数据表编码,准备转化数据...</font>"; |
|
|
|
$doneForm = "<form name='gonext' method='post' action='index.php'> |
|
|
|
$bakfilesTmp = $bakfiles; |
|
|
|
$bakfiles = explode(',', $bakfiles); |
|
|
|
if (empty($structfile)) { |
|
|
|
$structfile = ""; |
|
|
|
} |
|
|
|
if (empty($delfile)) { |
|
|
|
$delfile = 1; |
|
|
|
} |
|
|
|
if (empty($startgo)) { |
|
|
|
$startgo = 0; |
|
|
|
} |
|
|
|
if ($startgo == 0 && $structfile != '') { |
|
|
|
$tbdata = ''; |
|
|
|
$fp = fopen("$bkdir/$structfile", 'r'); |
|
|
|
while (!feof($fp)) { |
|
|
|
$tbdata .= fgets($fp, 1024); |
|
|
|
} |
|
|
|
fclose($fp); |
|
|
|
$querys = explode(';', $tbdata); |
|
|
|
|
|
|
|
foreach ($querys as $q) { |
|
|
|
$rs = mysqli_query($conn, trim($q) . ';'); |
|
|
|
if (!$rs) { |
|
|
|
//$str = mysqli_error($conn); |
|
|
|
//var_dump($str); |
|
|
|
} |
|
|
|
//$str = mysqli_error($conn); |
|
|
|
//var_dump($str); |
|
|
|
//$dsql->ExecuteNoneQuery(trim($q).';'); |
|
|
|
} |
|
|
|
if ($delfile == 1) { |
|
|
|
@unlink("$bkdir/$structfile"); |
|
|
|
} |
|
|
|
$tmsg = "<font color='red'>完成数据表编码,准备转化数据...</font>"; |
|
|
|
$doneForm = "<form name='gonext' method='post' action='index.php'> |
|
|
|
<input type='hidden' name='step' value='2' /> |
|
|
|
<input type='hidden' name='startgo' value='1' /> |
|
|
|
<input type='hidden' name='delfile' value='$delfile' /> |
|
|
|
<input type='hidden' name='bakfiles' value='$bakfilesTmp' /> |
|
|
|
</form>\r\n{$dojs}\r\n"; |
|
|
|
PutInfo($tmsg, $doneForm); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
$nowfile = $bakfiles[0]; |
|
|
|
$bakfilesTmp = preg_replace("#".$nowfile."[,]{0,1}#", "", $bakfilesTmp); |
|
|
|
$oknum=0; |
|
|
|
if( filesize("$bkdir/$nowfile") > 0 ) |
|
|
|
{ |
|
|
|
$fp = fopen("$bkdir/$nowfile", 'r'); |
|
|
|
while(!feof($fp)) |
|
|
|
{ |
|
|
|
$line = trim(fgets($fp, 512*1024)); |
|
|
|
if($line=="") continue; |
|
|
|
//$rs = $dsql->ExecuteNoneQuery($line); |
|
|
|
//var_dump($line); |
|
|
|
$rs = mysqli_query($conn, $line); |
|
|
|
if($rs) $oknum++; |
|
|
|
} |
|
|
|
fclose($fp); |
|
|
|
} |
|
|
|
if($delfile==1) |
|
|
|
{ |
|
|
|
@unlink("$bkdir/$nowfile"); |
|
|
|
} |
|
|
|
if($bakfilesTmp=="") |
|
|
|
{ |
|
|
|
ShowMsgV6('成功转化所有数据,下面进行DedeCMSV6升级……', 'index.php?step=3'); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
$tmsg = "成功转化{$nowfile}的{$oknum}条记录<br/><br/>正在准备转化其它数据..."; |
|
|
|
$doneForm = "<form name='gonext' method='post' action='index.php'> |
|
|
|
PutInfo($tmsg, $doneForm); |
|
|
|
exit(); |
|
|
|
} else { |
|
|
|
$nowfile = $bakfiles[0]; |
|
|
|
$bakfilesTmp = preg_replace("#" . $nowfile . "[,]{0,1}#", "", $bakfilesTmp); |
|
|
|
$oknum = 0; |
|
|
|
if (filesize("$bkdir/$nowfile") > 0) { |
|
|
|
$fp = fopen("$bkdir/$nowfile", 'r'); |
|
|
|
while (!feof($fp)) { |
|
|
|
$line = trim(fgets($fp, 512 * 1024)); |
|
|
|
if ($line == "") continue; |
|
|
|
//$rs = $dsql->ExecuteNoneQuery($line); |
|
|
|
//var_dump($line); |
|
|
|
$rs = mysqli_query($conn, $line); |
|
|
|
if ($rs) $oknum++; |
|
|
|
} |
|
|
|
fclose($fp); |
|
|
|
} |
|
|
|
if ($delfile == 1) { |
|
|
|
@unlink("$bkdir/$nowfile"); |
|
|
|
} |
|
|
|
if ($bakfilesTmp == "") { |
|
|
|
ShowMsgV6('成功转化所有数据,下面进行DedeCMSV6升级……', 'index.php?step=3'); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
$tmsg = "成功转化{$nowfile}的{$oknum}条记录<br/><br/>正在准备转化其它数据..."; |
|
|
|
$doneForm = "<form name='gonext' method='post' action='index.php'> |
|
|
|
<input type='hidden' name='step' value='2' /> |
|
|
|
<input type='hidden' name='startgo' value='1' /> |
|
|
|
<input type='hidden' name='delfile' value='$delfile' /> |
|
|
|
<input type='hidden' name='bakfiles' value='$bakfilesTmp' /> |
|
|
|
</form>\r\n{$dojs}\r\n"; |
|
|
|
PutInfo($tmsg, $doneForm); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
PutInfo($tmsg, $doneForm); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
} else { |
|
|
|
ShowMsgV6('当前系统就是UTF8程序,无需数据库编码转换,继续DedeCMSV6升级……', 'index?step=3'); |
|
|
|
exit(); |
|
|
|
ShowMsgV6('当前系统就是UTF8程序,无需数据库编码转换,继续DedeCMSV6升级……', 'index.php?step=3'); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// 执行DedeCMSV6增量SQL |
|
|
|
else if ( $step == 3 ) |
|
|
|
{ |
|
|
|
else if ($step == 3) { |
|
|
|
@list($dbhost, $dbport) = explode(':', $GLOBALS['cfg_dbhost']); |
|
|
|
!$dbport && $dbport = 3306; |
|
|
|
$conn = mysqli_init(); |
|
|
|
mysqli_real_connect($conn, $dbhost, $GLOBALS['cfg_dbuser'], $GLOBALS['cfg_dbpwd'], false, $dbport) or die("无法连接数据库"); |
|
|
|
mysqli_query($conn, "SET character_set_connection=utf8,character_set_results=utf8,character_set_client=binary"); |
|
|
|
mysqli_select_db($conn, $GLOBALS['cfg_dbname']); |
|
|
|
|
|
|
|
|
|
|
|
$querys = explode(';', $v6sql); |
|
|
|
|
|
|
|
foreach( $querys as $key => $q ) |
|
|
|
{ |
|
|
|
$prefix="#@__"; |
|
|
|
$q = str_replace($prefix, $GLOBALS['cfg_dbprefix']."v6_", $q); |
|
|
|
foreach ($querys as $key => $q) { |
|
|
|
$prefix = "#@__"; |
|
|
|
$q = str_replace($prefix, $GLOBALS['cfg_dbprefix'] . "v6_", $q); |
|
|
|
$q = str_replace("TYPE=MyISAM", "ENGINE=MyISAM", $q); |
|
|
|
$rs = mysqli_query($conn, trim($q).';'); |
|
|
|
if ( !$rs ) |
|
|
|
{ |
|
|
|
// $str = mysqli_error($conn); |
|
|
|
// var_dump($str); |
|
|
|
} |
|
|
|
$rs = mysqli_query($conn, trim($q) . ';'); |
|
|
|
if (!$rs) { |
|
|
|
// $str = mysqli_error($conn); |
|
|
|
// var_dump($str); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 重写配置 |
|
|
|
ReWriteConfig($conn); |
|
|
|
|
|
|
|
// 数据库连接文件 |
|
|
|
$sqlconn = file_get_contents(dirname(__FILE__)."/common.inc.txt"); |
|
|
|
$sqlconn = str_replace("~dbtype~","mysql",$sqlconn); |
|
|
|
$sqlconn = str_replace("~dbhost~",$GLOBALS['cfg_dbhost'],$sqlconn); |
|
|
|
$sqlconn = str_replace("~dbname~",$GLOBALS['cfg_dbname'],$sqlconn); |
|
|
|
$sqlconn = str_replace("~dbuser~",$GLOBALS['cfg_dbuser'],$sqlconn); |
|
|
|
$sqlconn = str_replace("~dbpwd~",$GLOBALS['cfg_dbpwd'],$sqlconn); |
|
|
|
$sqlconn = str_replace("~dbprefix~",$GLOBALS['cfg_dbprefix']."v6_",$sqlconn); |
|
|
|
$sqlconn = str_replace("~dblang~","utf8",$sqlconn); |
|
|
|
$sqlconn = file_get_contents(dirname(__FILE__) . "/common.inc.txt"); |
|
|
|
$sqlconn = str_replace("~dbtype~", "mysql", $sqlconn); |
|
|
|
$sqlconn = str_replace("~dbhost~", $GLOBALS['cfg_dbhost'], $sqlconn); |
|
|
|
$sqlconn = str_replace("~dbname~", $GLOBALS['cfg_dbname'], $sqlconn); |
|
|
|
$sqlconn = str_replace("~dbuser~", $GLOBALS['cfg_dbuser'], $sqlconn); |
|
|
|
$sqlconn = str_replace("~dbpwd~", $GLOBALS['cfg_dbpwd'], $sqlconn); |
|
|
|
$sqlconn = str_replace("~dbprefix~", $GLOBALS['cfg_dbprefix'] . "v6_", $sqlconn); |
|
|
|
$sqlconn = str_replace("~dblang~", "utf8", $sqlconn); |
|
|
|
|
|
|
|
file_put_contents(DEDEDATA."/common.inc.php", $sqlconn); |
|
|
|
file_put_contents(DEDEDATA . "/common.inc.php", $sqlconn); |
|
|
|
|
|
|
|
file_put_contents(TOV6LOCK, "www.dedebiz.com"); |
|
|
|
|
|
|
|
// rename(dirname(__FILE__)."/index.php",dirname(__FILE__)."/index.php.bak"); |
|
|
|
|
|
|
|
|
|
|
|
ShowMsgV6('完成系统数据库转换升级,下载DedeCMSV6系统,解压后将<code>./src</code>目录下的文件选择性替换即可完成升级。<br><a class=\'btn btn-success\' target=\'_blank\' href=\'https://www.dedebiz.com/download\'>下载DedeCMSV6</a> ', 'javascript:;'); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
?> |