diff --git a/index.php b/index.php index f444aad..1dd351a 100644 --- a/index.php +++ b/index.php @@ -1,4 +1,5 @@ $gotojs"; -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("

已经成功执行升级程序,无需重复执行。

如果您需要获取升级服务,可以联系官方协助升级。

","javascript:;"); + ShowMsgV6("

已经成功执行升级程序,无需重复执行。

如果您需要获取升级服务,可以联系官方协助升级。

", "javascript:;"); } if ($step == 0) { - ShowMsgV6("

执行升级程序之前,您需要备份站点数据库及文件,如果已经完成备份,可以点击下面“开始升级到V6”进行升级!
升级文档 开始升级到V6

如果您需要获取升级服务,也可以联系官方协助升级。

","javascript:;"); + ShowMsgV6("

执行升级程序之前,您需要备份站点数据库及文件,如果已经完成备份,可以点击下面“开始升级到V6”进行升级!
升级文档 开始升级到V6

如果您需要获取升级服务,也可以联系官方协助升级。

", "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编码系统,需要进行数据库转码...
"; - - 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 .= "转化数据表结构信息完成...
"; - } - $tmsg .= "正在进行数据转化的初始化工作,请稍后..."; - $doneForm = "
+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编码系统,需要进行数据库转码...
"; + + 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 .= "转化数据表结构信息完成...
"; + } + $tmsg .= "正在进行数据转化的初始化工作,请稍后..."; + $doneForm = " @@ -155,52 +135,47 @@ else if ( $step == 1 ) \r\n
\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 = "完成到{$m}条记录的转化,继续转化{$nowtable}..."; - $doneForm = "
+ 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 = "完成到{$m}条记录的转化,继续转化{$nowtable}..."; + $doneForm = " @@ -209,222 +184,189 @@ else if ( $step == 1 ) \r\n
\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; $iExecuteNoneQuery(trim($q).';'); - } - if($delfile==1) - { - @unlink("$bkdir/$structfile"); - } - $tmsg = "完成数据表编码,准备转化数据..."; - $doneForm = "
+ $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 = "完成数据表编码,准备转化数据..."; + $doneForm = "
\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}条记录

正在准备转化其它数据..."; - $doneForm = "
+ 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}条记录

正在准备转化其它数据..."; + $doneForm = "
\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系统,解压后将./src目录下的文件选择性替换即可完成升级。
下载DedeCMSV6 ', 'javascript:;'); exit(); } - - - - -?> \ No newline at end of file