DiscuzX/utility/convert/include/do_convert.inc.php

79 lines
2.7 KiB
PHP

<?php
$config = loadconfig();
$db_source = new db_mysql($config['source']);
$db_source->connect();
$db_target = new db_mysql($config['target']);
$db_target->connect();
$db_uc = new db_mysql($config['ucenter']);
if($setting['config']['ucenter']) {
$db_uc->connect();
}
$process = load_process('main');
if(empty($process)) {
showmessage("请首先选择转换程序", "index.php?action=select&source=$source");
}
$prg = getgpc('prg');
$prg_dir['tables'] = DISCUZ_ROOT.'./source/'.$source.'/table/';
$prg_dir['start'] = DISCUZ_ROOT.'./source/'.$source.'/';
$prg_dir['steps'] = DISCUZ_ROOT.'./source/'.$source.'/';
$prg_done = 0;
$prg_next = '';
$prg_total = $prg_total = count($process['tables']) + count($process['start']) + count($process['steps']);
foreach (array('start', 'tables', 'steps') as $program) {
if(!empty($process[$program]) && !$process[$program.'_is_end']) {
foreach ($process[$program] as $k => $v) {
if($v) {
$prg_done ++;
} elseif ($prg_next == '') {
$prg_next = $k;
}
}
if($prg_next) {
if(empty($prg) || !file_exists($prg_dir[$program].$prg)) {
$prg = $prg_next;
}
$prg_done ++;
list($rday, $rhour, $rmin, $rsec) = remaintime(time() - $process['timestart']);
$stime = gmdate('Y-m-d H:i:s', $process['timestart'] + 3600* 8);
$timetodo = "升级开始时间:<strong>$stime</strong>, 升级程序已经执行了 <strong>$rday</strong>天 <strong>$rhour</strong>小时 <strong>$rmin</strong>分 <strong>$rsec</strong>秒";
$timetodo .= "<br><br>目前正在执行转换程序( $prg_done / $prg_total ) <strong>$prg</strong>,转换过程中需要多次跳转,请勿关闭浏览器。";
$timetodo .= "<br><br>如果程序中断或者需要重新开始当前程序,请点击 (<a href=\"index.php?a=convert&source=$source&prg=$prg\">重新开始</a>)";
showtips($timetodo);
if(file_exists($prg_dir[$program].$prg)) {
define('PROGRAM_TYPE', $program);
require $prg_dir[$program].$prg;
save_process_main($prg);
showmessage("转换程序 $prg 执行完毕, 现在跳转到下一个程序", "index.php?a=convert&source=$source", null, 500);
} else {
showmessage('数据转换中断! 无法找到转换程序 '.$prg);
}
} else {
$process[$program.'_is_end'] = 1;
save_process('main', $process);
}
} else {
$prg_done = $prg_done + count($process[$program]);
}
}
showmessage('转换程序全部运行完毕', "index.php?action=finish&source=$source");
function save_process_main($prg = '') {
global $process;
if(defined('PROGRAM_TYPE')) {
$prg = empty($prg) ? $GLOBALS['prg'] : $prg;
$process[PROGRAM_TYPE][$prg] = 1;
}
save_process('main', $process);
}
?>