Changeset 21540 for branches/version-2_12-dev
- Timestamp:
- 2012/02/19 13:53:22 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_12-dev/data/class/pages/admin/system/LC_Page_Admin_System_Bkup.php
r21527 r21540 420 420 */ 421 421 function lfRestore($bkup_name, $bkup_dir, $bkup_ext, $mode) { 422 $objQuery =& SC_Query_Ex::getSingletonInstance(); 423 422 424 // 実行時間を制限しない 425 // FIXME ファイル展開時に限定すべき 423 426 set_time_limit(0); 424 427 425 $objQuery =& SC_Query_Ex::getSingletonInstance(); 426 $success = true; 427 428 $bkup_filepath = $bkup_dir . $bkup_name . $bkup_ext; 428 429 $work_dir = $bkup_dir . $bkup_name . '/'; 429 430 430 431 //圧縮フラグTRUEはgzip解凍をおこなう 431 $tar = new Archive_Tar($ work_dir . $bkup_name . $bkup_ext, TRUE);432 $tar = new Archive_Tar($bkup_filepath, TRUE); 432 433 433 434 //指定されたフォルダ内に解凍する 434 $success = $tar->extract($work_dir . $bkup_name); 435 436 // 無事解凍できれば、リストアを行う 435 $success = $tar->extract($work_dir); 436 437 if (!$success) { 438 $msg = 'バックアップファイルの展開に失敗しました。' . "\n"; 439 $msg .= '展開元: ' . $bkup_filepath . "\n"; 440 $msg .= '展開先: ' . $work_dir; 441 SC_Utils_Ex::sfDispException($msg); 442 } 443 444 // トランザクション開始 445 $objQuery->begin(); 446 447 // INSERT実行 448 $success = $this->lfExeInsertSQL($objQuery, $work_dir, $mode); 449 450 // 自動採番の値をセット 451 if ($success) $this->lfSetAutoInc($objQuery, $work_dir . 'autoinc_data.csv'); 452 453 // リストア成功ならコミット失敗ならロールバック 437 454 if ($success) { 438 439 // トランザクション開始 440 $objQuery->begin(); 441 442 // DBをクリア 443 $success = $this->lfDeleteAll($objQuery); 444 445 // INSERT実行 446 if ($success) $success = $this->lfExeInsertSQL($objQuery, $work_dir, $mode); 447 448 // 自動採番の値をセット 449 if ($success) $this->lfSetAutoInc($objQuery, $work_dir . 'autoinc_data.csv'); 450 451 // リストア成功ならコミット失敗ならロールバック 452 if ($success) { 453 $objQuery->commit(); 454 $this->restore_msg = 'リストア終了しました。'; 455 $this->restore_err = true; 456 } else { 457 $objQuery->rollback(); 458 $this->restore_msg = 'リストアに失敗しました。'; 459 $this->restore_name = $bkup_name; 460 $this->restore_err = false; 461 } 462 } 455 $objQuery->commit(); 456 $this->restore_msg = 'リストア終了しました。'; 457 $this->restore_err = true; 458 } else { 459 $objQuery->rollback(); 460 $this->restore_msg = 'リストアに失敗しました。'; 461 $this->restore_name = $bkup_name; 462 $this->restore_err = false; 463 } 464 GC_Utils_Ex::gfPrintLog($this->restore_msg); 463 465 464 466 // FIXME この辺りで、バックアップ時と同等の一時ファイルの削除を実行すべきでは? … … 488 490 continue; 489 491 } 490 var_dump($matches);491 492 $file_path = $dir . $file_name; 492 493 $table = $matches[1]; … … 506 507 } 507 508 509 GC_Utils_Ex::gfPrintLog('リストア実行: ' . $table); 510 $objQuery->delete($table); 511 508 512 $line = 0; 513 $arrColName = array(); 509 514 while (!feof($fp)) { 510 515 $line++; … … 517 522 } 518 523 524 // 空行を無視 525 // false との比較は PHP 5.2.x Windows バグ対応 526 // 参考: http://www.php.net/manual/ja/function.fgetcsv.php#98502 527 if ($arrCsvLine === array(null) || $arrCsvLine === false) { 528 continue; 529 } 530 519 531 $arrVal = array_combine($arrColName, $arrCsvLine); 520 532 $objQuery->insert($table, $arrVal); … … 541 553 } 542 554 543 // DBを全てクリアする544 function lfDeleteAll(&$objQuery) {545 $ret = true;546 547 $arrTableList = $objQuery->listTables();548 549 foreach ($arrTableList as $val) {550 // バックアップテーブルは削除しない551 // XXX mtb_zip も削除不要では?552 if ($val != 'dtb_bkup') {553 $ret = $objQuery->delete($val);554 if (PEAR::isError($ret)) return false;555 }556 }557 return true;558 }559 560 555 // 選択したバックアップをDBから削除 561 556 function lfDeleteBackUp(&$arrForm, $bkup_dir, $bkup_ext) {
Note: See TracChangeset
for help on using the changeset viewer.