Changeset 20363 for branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Bkup.php
- Timestamp:
- 2011/02/24 00:20:09 (11 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
r20345 r20363 52 52 $this->bkup_dir = DATA_REALDIR . "downloads/backup/"; 53 53 $this->bkup_ext = '.tar.gz'; 54 55 54 } 56 55 … … 71 70 */ 72 71 function action() { 73 $objQuery = new SC_Query(); 72 $objQuery =& SC_Query::getSingletonInstance(); 73 74 75 $objFormParam = new SC_FormParam; 76 77 // パラメータの初期化 78 $this->initParam($objFormParam, $_POST); 79 80 $arrErr = array(); 81 $arrForm = array(); 74 82 75 83 switch($this->getMode()) { 76 // バックアップを作成する 84 85 // バックアップを作成する 77 86 case 'bkup': 78 // 入力文字列の変換 79 $arrData = $this->lfConvertParam($_POST); 80 81 // エラーチェック 82 $arrErr = $this->lfCheckError($arrData); 87 88 // データ型エラーチェック 89 $arrErr[1] = $objFormParam->checkError(); 90 91 // データ型に問題がない場合 92 if(SC_Utils_Ex::isBlank($arrErr[1])) { 93 // データ型以外のエラーチェック 94 $arrErr[2] = $this->lfCheckError($objFormParam->getHashArray()); 95 } 83 96 84 97 // エラーがなければバックアップ処理を行う 85 if (count($arrErr) <= 0) { 98 if (SC_Utils_Ex::isBlank($arrErr[1]) && SC_Utils_Ex::isBlank($arrErr[2])) { 99 100 $arrData = $objFormParam->getHashArray(); 101 86 102 // バックアップファイル作成 87 $arrErr = $this->lfCreateBkupData($arrData['bkup_name']);103 $arrErr[3] = $this->lfCreateBkupData($arrData['bkup_name'], $this->bkup_dir); 88 104 89 105 // DBにデータ更新 90 if ( count($arrErr) <= 0) {106 if (SC_Utils_Ex::isBlank($arrErr[3])) { 91 107 $this->lfUpdBkupData($arrData); 92 108 }else{ … … 96 112 $this->tpl_onload = "alert('バックアップ完了しました');"; 97 113 }else{ 98 $arrForm = $ arrData;114 $arrForm = $objFormParam->getHashArray(); 99 115 } 100 116 101 117 break; 102 118 103 119 // リストア 104 120 case 'restore_config': 105 121 $this->mode = "restore_config"; 122 106 123 case 'restore': 107 $this->lfRestore($_POST['list_name'] );124 $this->lfRestore($_POST['list_name'], $this->bkup_dir, $this->bkup_ext, $this->mode); 108 125 break; 109 126 110 127 // 削除 111 128 case 'delete': 112 129 $del_file = $this->bkup_dir.$_POST['list_name'] . $this->bkup_ext; … … 156 173 } 157 174 158 /* 取得文字列の変換 */ 159 function lfConvertParam($array) { 160 /* 161 * 文字列の変換 162 * K : 「半角(ハンカク)片仮名」を「全角片仮名」に変換 163 * C : 「全角ひら仮名」を「全角かた仮名」に変換 164 * V : 濁点付きの文字を一文字に変換。"K","H"と共に使用します 165 * n : 「全角」数字を「半角(ハンカク)」に変換 166 * a : 全角英数字を半角英数字に変換する 167 */ 168 $arrConvList['bkup_name'] = "a"; 169 $arrConvList['bkup_memo'] = "KVa"; 170 171 // 文字変換 172 foreach ($arrConvList as $key => $val) { 173 // POSTされてきた値のみ変換する。 174 if(isset($array[$key])) { 175 $array[$key] = mb_convert_kana($array[$key] ,$val); 176 } 177 } 178 return $array; 179 } 180 181 // エラーチェック 182 function lfCheckError($array){ 183 $objErr = new SC_CheckError($array); 184 185 $objErr->doFunc(array("バックアップ名", "bkup_name", STEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK","NO_SPTAB","ALNUM_CHECK")); 186 $objErr->doFunc(array("バックアップメモ", "bkup_memo", MTEXT_LEN), array("MAX_LENGTH_CHECK")); 175 176 /** 177 * パラメータ初期化. 178 * 179 * @param object $objFormParam 180 * @param array $arrParams $_POST値 181 * @return void 182 */ 183 function initParam(&$objFormParam, &$arrParams) { 184 185 $objFormParam->addParam('バックアップ名', 'bkup_name', STEXT_LEN, 'a', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NO_SPTAB', 'ALNUM_CHECK')); 186 $objFormParam->addParam('バックアップメモ', 'bkup_memo', MTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK')); 187 $objFormParam->setParam($arrParams); 188 $objFormParam->convParam(); 189 190 } 191 192 /** 193 * データ型以外のエラーチェック. 194 * 195 * @param array $arrForm 196 * @return $arrErr 197 */ 198 function lfCheckError(&$arrForm){ 187 199 188 200 // 重複チェック 189 $ret = $this->lfGetBkupData("WHERE bkup_name = ?", array($arr ay['bkup_name']));201 $ret = $this->lfGetBkupData("WHERE bkup_name = ?", array($arrForm['bkup_name'])); 190 202 if (count($ret) > 0) { 191 $objErr->arrErr['bkup_name'] = "バックアップ名が重複しています。別名を入力してください。"; 192 } 193 194 return $objErr->arrErr; 195 } 196 197 // バックアップファイル作成 198 function lfCreateBkupData($bkup_name){ 203 $arrErr['bkup_name'] = "バックアップ名が重複しています。別名を入力してください。"; 204 } 205 206 return $arrErr; 207 } 208 209 /** 210 * バックアップファイル作成. 211 * 212 * @param string $bkup_name 213 * @return array $arrErr 214 */ 215 function lfCreateBkupData($bkup_name, $bkup_dir){ 199 216 // 実行時間を制限しない 200 217 set_time_limit(0); 201 218 202 $objQuery = new SC_Query();219 $objQuery =& SC_Query::getSingletonInstance(); 203 220 $csv_data = ""; 204 221 $csv_autoinc = ""; 222 $arrData = array(); 205 223 $success = true; 206 224 207 $bkup_dir = $this->bkup_dir;208 225 if (!is_dir(dirname($bkup_dir))) $success = mkdir(dirname($bkup_dir)); 209 226 $bkup_dir = $bkup_dir . $bkup_name . "/"; … … 233 250 $data = ""; 234 251 foreach($arrData as $data_key => $data_val){ 235 //$val = str_replace("\"", "\\\"", $val);236 252 $data .= $this->lfGetCSVList($arrData[$data_key]); 237 238 253 } 239 254 // CSV出力データ生成 … … 324 339 * 325 340 * @return string シーケンス一覧の文字列 341 * @return string $ret 326 342 */ 327 343 function lfGetAutoIncrement() { 328 $objQuery = new SC_Query();344 $objQuery =& SC_Query::getSingletonInstance(); 329 345 $arrSequences = $objQuery->listSequences(); 330 $result = "";331 346 332 347 foreach($arrSequences as $val){ … … 342 357 // バックアップテーブルにデータを更新する 343 358 function lfUpdBkupData($data){ 344 $objQuery = new SC_Query();359 $objQuery =& SC_Query::getSingletonInstance(); 345 360 346 361 $sql = "INSERT INTO dtb_bkup (bkup_name,bkup_memo,create_date) values (?,?,now())"; … … 350 365 // バックアップテーブルからデータを取得する 351 366 function lfGetBkupData($where = "", $data = array()){ 352 $objQuery = new SC_Query();367 $objQuery =& SC_Query::getSingletonInstance(); 353 368 354 369 $sql = "SELECT bkup_name, bkup_memo, create_date FROM dtb_bkup "; … … 360 375 } 361 376 362 // バックアップファイルをリストアする 363 function lfRestore($bkup_name){ 377 /** 378 * バックアップファイルをリストアする 379 * 380 * @param string $bkup_name 381 * @param string $bkup_dir 382 * @param string $bkup_ext 383 * @return void 384 */ 385 function lfRestore($bkup_name, $bkup_dir, $bkup_ext, $mode){ 364 386 // 実行時間を制限しない 365 387 set_time_limit(0); 366 388 367 $objQuery = new SC_Query("", false);389 $objQuery =& SC_Query::getSingletonInstance(); 368 390 $csv_data = ""; 369 391 $success = true; 370 392 371 $bkup_dir = $ this->bkup_dir . $bkup_name . "/";393 $bkup_dir = $bkup_dir . $bkup_name . "/"; 372 394 373 395 //バックアップフォルダに移動する 374 chdir($ this->bkup_dir);396 chdir($bkup_dir); 375 397 376 398 //圧縮フラグTRUEはgzip解凍をおこなう 377 $tar = new Archive_Tar($bkup_name . $ this->bkup_ext, TRUE);399 $tar = new Archive_Tar($bkup_name . $bkup_ext, TRUE); 378 400 379 401 //指定されたフォルダ内に解凍する … … 390 412 391 413 // INSERT実行 392 if ($success) $success = $this->lfExeInsertSQL($objQuery, $bkup_dir . "bkup_data.csv" );414 if ($success) $success = $this->lfExeInsertSQL($objQuery, $bkup_dir . "bkup_data.csv", $mode); 393 415 394 416 // 自動採番の値をセット … … 409 431 } 410 432 411 // CSVファイルからインサート実行 412 function lfExeInsertSQL(&$objQuery, $csv){ 433 /** 434 * CSVファイルからインサート実行. 435 * 436 * @param object $objQuery 437 * @param string $csv 438 * @param string $mode 439 * @return void 440 */ 441 function lfExeInsertSQL(&$objQuery, $csv, $mode){ 413 442 414 443 $sql = ""; … … 418 447 $ret = true; 419 448 $pagelayout_flg = false; 420 $mode = $this->mode;421 449 422 450 // csvファイルからデータの取得 … … 475 503 if ($pagelayout_flg) { 476 504 // dtb_pagelayoutの場合には最初のデータはpage_id = 0にする 477 $ sql = "UPDATE dtb_pagelayout SET page_id = '0'";478 $objQuery-> query($sql);505 $arrVal['page_id'] = '0'; 506 $objQuery->update("dtb_pagelayout", $arrVal); 479 507 $pagelayout_flg = false; 480 508 } … … 509 537 // バックアップテーブルは削除しない 510 538 if ($val != "dtb_bkup") { 511 $trun_sql = "DELETE FROM $val"; 512 $ret = $objQuery->query($trun_sql); 539 $ret = $objQuery->delete($val); 513 540 if (PEAR::isError($ret)) return false; 514 541 } 515 542 } 516 517 543 return true; 518 544 }
Note: See TracChangeset
for help on using the changeset viewer.