Changeset 20431 for branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Bkup.php
- Timestamp:
- 2011/02/28 03:40:47 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Bkup.php
r20428 r20431 70 70 */ 71 71 function action() { 72 $objQuery =& SC_Query::getSingletonInstance();73 74 72 75 73 $objFormParam = new SC_FormParam; … … 78 76 $this->initParam($objFormParam, $_POST); 79 77 80 $arrErr = array();78 $arrErrTmp = array(); 81 79 $arrForm = array(); 82 80 … … 87 85 88 86 // データ型エラーチェック 89 $arrErr [1] = $objFormParam->checkError();87 $arrErrTmp[1] = $objFormParam->checkError(); 90 88 91 89 // データ型に問題がない場合 92 if(SC_Utils_Ex::isBlank($arrErr [1])) {90 if(SC_Utils_Ex::isBlank($arrErrTmp[1])) { 93 91 // データ型以外のエラーチェック 94 $arrErr [2] = $this->lfCheckError($objFormParam->getHashArray());92 $arrErrTmp[2] = $this->lfCheckError($objFormParam->getHashArray(), $this->getMode()); 95 93 } 96 94 97 95 // エラーがなければバックアップ処理を行う 98 if (SC_Utils_Ex::isBlank($arrErr [1]) && SC_Utils_Ex::isBlank($arrErr[2])) {96 if (SC_Utils_Ex::isBlank($arrErrTmp[1]) && SC_Utils_Ex::isBlank($arrErrTmp[2])) { 99 97 100 98 $arrData = $objFormParam->getHashArray(); 101 99 102 100 // バックアップファイル作成 103 $arrErr [3] = $this->lfCreateBkupData($arrData['bkup_name'], $this->bkup_dir);101 $arrErrTmp[3] = $this->lfCreateBkupData($arrData['bkup_name'], $this->bkup_dir); 104 102 105 103 // DBにデータ更新 106 if (SC_Utils_Ex::isBlank($arrErr [3])) {104 if (SC_Utils_Ex::isBlank($arrErrTmp[3])) { 107 105 $this->lfUpdBkupData($arrData); 108 106 }else{ 109 107 $arrForm = $arrData; 108 $arrErr = $arrErrTmp[3]; 110 109 } 111 110 112 111 $this->tpl_onload = "alert('バックアップ完了しました');"; 113 } else{112 } else { 114 113 $arrForm = $objFormParam->getHashArray(); 115 }116 114 $arrErr = array_merge((array)$arrErrTmp[1],(array)$arrErrTmp[2]); 115 } 117 116 break; 118 117 … … 122 121 123 122 case 'restore': 124 $this->lfRestore($_POST['list_name'], $this->bkup_dir, $this->bkup_ext, $this->mode); 123 // データベースに存在するかどうかチェック 124 $arrErr = $this->lfCheckError($objFormParam->getHashArray(), $this->getMode()); 125 126 // エラーがなければリストア処理を行う 127 if (SC_Utils_Ex::isBlank($arrErr)) { 128 $arrData = $objFormParam->getHashArray(); 129 $this->lfRestore($arrData['list_name'], $this->bkup_dir, $this->bkup_ext, $this->mode); 130 } 125 131 break; 126 132 127 133 // 削除 128 134 case 'delete': 129 $del_file = $this->bkup_dir.$_POST['list_name'] . $this->bkup_ext; 130 // ファイルの削除 131 if(is_file($del_file)){ 132 $ret = unlink($del_file); 133 } 134 135 // DBから削除 136 $delsql = "DELETE FROM dtb_bkup WHERE bkup_name = ?"; 137 $objQuery->query($delsql, array($_POST['list_name'])); 135 136 // データベースに存在するかどうかチェック 137 $arrErr = $this->lfCheckError($objFormParam->getHashArray(), $this->getMode()); 138 139 // エラーがなければリストア処理を行う 140 if (SC_Utils_Ex::isBlank($arrErr)) { 141 142 $arrData = $objFormParam->getHashArray(); 143 144 // DBとファイルを削除 145 $this->lfDeleteBackUp($arrData, $this->bkup_dir, $this->bkup_ext); 146 } 138 147 139 148 break; … … 141 150 // ダウンロード 142 151 case 'download' : 143 $filename = $_POST['list_name'] . $this->bkup_ext; 144 $dl_file = $this->bkup_dir.$_POST['list_name'] . $this->bkup_ext; 145 146 // ダウンロード開始 147 Header("Content-disposition: attachment; filename=${filename}"); 148 Header("Content-type: application/octet-stream; name=${filename}"); 149 header("Content-Length: " .filesize($dl_file)); 150 readfile ($dl_file); 151 exit(); 152 break; 152 153 // データベースに存在するかどうかチェック 154 $arrErr = $this->lfCheckError($objFormParam->getHashArray(), $this->getMode()); 155 156 // エラーがなければダウンロード処理を行う 157 if (SC_Utils_Ex::isBlank($arrErr)) { 158 159 $arrData = $objFormParam->getHashArray(); 160 161 $filename = $arrData['list_name'] . $this->bkup_ext; 162 $dl_file = $this->bkup_dir.$arrData['list_name'] . $this->bkup_ext; 163 164 // ダウンロード開始 165 Header("Content-disposition: attachment; filename=${filename}"); 166 Header("Content-type: application/octet-stream; name=${filename}"); 167 header("Content-Length: " .filesize($dl_file)); 168 readfile ($dl_file); 169 exit(); 170 break; 171 } 153 172 154 173 default: 155 174 break; 156 175 } 176 177 // 不要になった変数を解放 178 unset($arrErrTmp); 157 179 158 180 // バックアップリストを取得する … … 185 207 $objFormParam->addParam('バックアップ名', 'bkup_name', STEXT_LEN, 'a', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NO_SPTAB', 'ALNUM_CHECK')); 186 208 $objFormParam->addParam('バックアップメモ', 'bkup_memo', MTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK')); 209 $objFormParam->addParam('バックアップ名(リスト)', 'list_name', STEXT_LEN, 'a', array('MAX_LENGTH_CHECK', 'NO_SPTAB', 'ALNUM_CHECK')); 187 210 $objFormParam->setParam($arrParams); 188 211 $objFormParam->convParam(); … … 193 216 * データ型以外のエラーチェック. 194 217 * 195 * @param array $arrForm 218 * @param array $arrForm 219 * @param string $mode 196 220 * @return $arrErr 197 221 */ 198 function lfCheckError(&$arrForm){ 199 200 // 重複チェック 201 $ret = $this->lfGetBkupData("WHERE bkup_name = ?", array($arrForm['bkup_name'])); 202 if (count($ret) > 0) { 222 function lfCheckError(&$arrForm, $mode){ 223 224 $arrVal = array(); 225 226 switch($mode) { 227 case 'bkup': 228 $arrVal[] = $arrFrom['bkup_name']; 229 break; 230 231 case 'restore_config': 232 case 'restore': 233 case 'download': 234 case 'delete': 235 $arrVal[] = $arrForm['list_name']; 236 break; 237 238 default: 239 break; 240 241 } 242 243 // 重複・存在チェック 244 $ret = $this->lfGetBkupData("WHERE bkup_name = ?", $arrVal); 245 if (count($ret) > 0 && $mode == 'bkup') { 203 246 $arrErr['bkup_name'] = "バックアップ名が重複しています。別名を入力してください。"; 247 } elseif (count($ret) <= 0 && $mode != 'bkup') { 248 $arrErr['list_name'] = "選択されたデータがみつかりませんでした。既に削除されている可能性があります。"; 204 249 } 205 250 … … 359 404 $objQuery =& SC_Query::getSingletonInstance(); 360 405 361 $sql = "INSERT INTO dtb_bkup (bkup_name,bkup_memo,create_date) values (?,?,now())"; 362 $objQuery->query($sql, array($data['bkup_name'],$data['bkup_memo'])); 406 $arrVal = array(); 407 $arrVal['bkup_name'] = $data['bkup_name']; 408 $arrVal['bkup_memo'] = $data['bkup_memo']; 409 $arrVal['create_date'] = "now()"; 410 411 $objQuery->insert('dtb_bkup', $arrVal); 363 412 } 364 413 … … 391 440 $success = true; 392 441 393 $bkup_dir = $bkup_dir . $bkup_name . "/";442 //$bkup_dir = $bkup_dir . $bkup_name . "/"; 394 443 395 444 //バックアップフォルダに移動する … … 401 450 //指定されたフォルダ内に解凍する 402 451 $success = $tar->extract("./"); 452 453 //バックアップフォルダに移動する 454 chdir($bkup_dir . $bkup_name . "/"); 403 455 404 456 // 無事解凍できれば、リストアを行う … … 429 481 } 430 482 } 483 431 484 } 432 485 … … 441 494 function lfExeInsertSQL(&$objQuery, $csv, $mode){ 442 495 443 $sql = "";444 $base_sql = "";445 496 $tbl_flg = false; 446 497 $col_flg = false; 447 498 $ret = true; 448 499 $pagelayout_flg = false; 500 $table_name = ""; 501 $arrVal = array(); 502 $arrCol = array(); 449 503 450 504 // csvファイルからデータの取得 … … 455 509 //空白行のときはテーブル変更 456 510 if (count($data) <= 1 and $data[0] == "") { 457 $base_sql = "";458 511 $tbl_flg = false; 459 512 $col_flg = false; 513 $table_name = ""; 514 $arrVal = array(); 515 $arrCol = array(); 516 460 517 continue; 461 518 } … … 463 520 // テーブルフラグがたっていない場合にはテーブル名セット 464 521 if (!$tbl_flg) { 465 $ base_sql = "INSERT INTO $data[0] ";522 $table_name = $data[0]; 466 523 $tbl_flg = true; 467 524 468 if($ data[0]== "dtb_pagelayout"){525 if($table_name == "dtb_pagelayout"){ 469 526 $pagelayout_flg = true; 470 527 } … … 476 533 if (!$col_flg) { 477 534 if ($mode != "restore_config"){ 478 $base_sql .= " ( $data[0] "; 479 for($i = 1; $i < count($data); $i++){ 480 $base_sql .= "," . $data[$i]; 535 for($i = 0; $i <= count($data); $i++){ 536 $arrCol[$i] = $data[$i]; 481 537 } 482 $base_sql .= " ) ";483 538 } 484 539 $col_flg = true; … … 486 541 } 487 542 488 // インサートする値をセット 489 $sql = $base_sql . "VALUES ( ? "; 490 for($i = 1; $i < count($data); $i++){ 491 $sql .= ", ?"; 492 } 493 $sql .= " );"; 494 $data = str_replace("\\\"", "\"", $data); 495 $err = $objQuery->query($sql, $data); 543 for($i = 0; $i <= count($data); $i++) { 544 $arrVal[$arrCol[$i]] = $data[$i]; 545 } 546 547 $err = $objQuery->insert($table_name, $arrVal); 548 496 549 497 550 // エラーがあれば終了 … … 543 596 return true; 544 597 } 598 599 // 選択したバックアップをDBから削除 600 function lfDeleteBackUp(&$arrForm, $bkup_dir, $bkup_ext) { 601 602 $objQuery =& SC_Query::getSingletonInstance(); 603 604 $del_file = $bkup_dir.$arrForm['list_name'] . $bkup_ext; 605 // ファイルの削除 606 if(is_file($del_file)){ 607 $ret = unlink($del_file); 608 } 609 610 $delsql = "DELETE FROM dtb_bkup WHERE bkup_name = ?"; 611 $objQuery->delete("dtb_bkup", "bkup_name = ?", array($arrForm['list_name'])); 612 613 } 614 545 615 } 546 616 ?>
Note: See TracChangeset
for help on using the changeset viewer.