diff --git a/upload/source/admincp/admincp_db.php b/upload/source/admincp/admincp_db.php
index d204a6396d77a40ef2877c0ade5ba680f05a6db4..4ceb6a0e81997560ab0c1a1282fc71ef574b6ac8 100644
--- a/upload/source/admincp/admincp_db.php
+++ b/upload/source/admincp/admincp_db.php
@@ -96,7 +96,7 @@ if($operation == 'export') {
showtagfooter('tbody');
showtagheader('tbody', 'advanceoption');
- showsetting('db_export_method', '', '', '
');
+ showsetting('db_export_method', '', '', '');
showtitle('db_export_options');
showsetting('db_export_options_extended_insert', 'extendins', 0, 'radio');
showsetting('db_export_options_sql_compatible', array('sqlcompat', array(
@@ -389,8 +389,9 @@ if($operation == 'export') {
);
$exportsize[$key] += $filesize;
} elseif(preg_match("/\.zip$/i", $entry)) {
+ $key = preg_replace('/^(.+?)(\-\d+)\.zip$/i', '\\1', basename($entry));
$filesize = filesize($entry);
- $exportziplog[] = array(
+ $exportziplog[$key] = array(
'type' => 'zip',
'filename' => $entry,
'size' => filesize($entry),
@@ -464,13 +465,15 @@ if($operation == 'export') {
}
foreach($exportziplog as $info) {
+ sort($val);//修改 确保-1.zip排前面,才会自动解压-2.zip
+ $info = $val[0];
$info['dateline'] = is_int($info['dateline']) ? dgmdate($info['dateline']) : $lang['unknown'];
$info['size'] = sizecount($info['size']);
$info['method'] = $info['method'] == 'multivol' ? $lang['db_multivol'] : $lang['db_zip'];
$datafile_server = '.'.$info['filename'];
showtablerow('', '', array(
"",
- "".substr(strrchr($info['filename'], "/"), 1)."",
+ "".substr(strrchr($info['filename'], "/"), 1)."",
'',
$info['dateline'],
$lang['db_export_'.$info['type']],
@@ -478,7 +481,23 @@ if($operation == 'export') {
$info['method'],
'',
"$lang[db_import_unzip]"
- ));
+ ));
+ echo '';
+ foreach($val as $info) {
+ $info['dateline'] = is_int($info['dateline']) ? dgmdate($info['dateline']) : $lang['unknown'];
+ $info['size'] = sizecount($info['size']);
+ showtablerow('', '', array(
+ '',
+ "".substr(strrchr($info['filename'], "/"), 1)."",
+ $info['version'],
+ $info['dateline'],
+ '',
+ $info['size'],
+ '',
+ "",
+ ''
+ ));
+
}
showsubmit('deletesubmit', 'submit', 'del');
@@ -489,13 +508,18 @@ if($operation == 'export') {
} else {
if(is_array($_GET['delete'])) {
foreach($_GET['delete'] as $filename) {
+ $type = ".sql";
+ if(strpos($filename, '-1.zip') !== FALSE) {
+ $type = ".zip";
+ $filename = str_replace('-1.zip', '', $filename);
+ }
$file_path = './data/'.$backupdir.'/'.str_replace(array('/', '\\'), '', $filename);
if(is_file($file_path)) {
@unlink($file_path);
} else {
$i = 1;
while(1) {
- $file_path = './data/'.$backupdir.'/'.str_replace(array('/', '\\'), '', $filename.'-'.$i.'.sql');
+ $file_path = './data/'.$backupdir.'/'.str_replace(array('/', '\\'), '', $filename.'-'.$i.$type);
if(is_file($file_path)) {
@unlink($file_path);
$i++;
@@ -677,7 +701,9 @@ if($operation == 'export') {
if(!C::t('common_setting')->fetch_all_field()) {
cpmsg('dbcheck_permissions_invalid', '', 'error');
}
-
+ $installSqlPath = DISCUZ_ROOT.'./install/install.sql';
+ if(!file_exists($installSqlPath))
+ $installSqlPath = DISCUZ_ROOT.'./install/data/install.sql';
$step = max(1, intval($_GET['step']));
if($step == 3) {
@@ -702,7 +728,7 @@ if($operation == 'export') {
$except = array('threads' => array('sgid'));
foreach(C::t('common_member_profile_setting')->range() as $profilefields) {
- $except['memberfields'][] = 'field_'.$profilefields[$fieldid];
+ $except['memberfields'][] = 'field_'.$profilefields['fieldid'];
}
if(submitcheck('repairsubmit') && (!empty($repair) || !empty($setting) || !empty($repairtable) || !empty($missingtable))) {
@@ -712,8 +738,8 @@ if($operation == 'export') {
foreach($missingtable as $value) {
if(!isset($installdata)) {
- $fp = fopen(DISCUZ_ROOT.'./install/install.sql', "rb");
- $installdata = fread($fp, filesize(DISCUZ_ROOT.'./install/install.sql'));
+ $fp = fopen($installSqlPath, "rb");
+ $installdata = fread($fp, filesize($installSqlPath));
fclose($fp);
}
preg_match("/CREATE TABLE ".DB::table($value)."\s+\(.+?;/is", $installdata, $a);
@@ -802,7 +828,7 @@ if($operation == 'export') {
}
}
- $installexists = file_exists(DISCUZ_ROOT.'./install/install.sql');
+ $installexists = file_exists($installSqlPath);
$discuzdbnew = $deltables = $excepttables = $missingtables = $charseterror = array();
foreach($discuzdb as $dbtable => $fields) {
if($fieldsquery = DB::query("SHOW FIELDS FROM ".DB::table($dbtable), 'SILENT')) {