Changeset 20363


Ignore:
Timestamp:
2011/02/24 00:20:09 (10 years ago)
Author:
homan
Message:

#974 [管理画面]システム設定 バックアップのコミット(仮)
僕の環境でそもそもバックアップがうまく作動しないので、
大河内先生に診てもらうためのコミット・・(’’

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  
    5252        $this->bkup_dir = DATA_REALDIR . "downloads/backup/"; 
    5353        $this->bkup_ext = '.tar.gz'; 
    54  
    5554    } 
    5655 
     
    7170     */ 
    7271    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(); 
    7482 
    7583        switch($this->getMode()) { 
    76             // バックアップを作成する 
     84 
     85        // バックアップを作成する 
    7786        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            } 
    8396 
    8497            // エラーがなければバックアップ処理を行う 
    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             
    86102                // バックアップファイル作成 
    87                 $arrErr = $this->lfCreateBkupData($arrData['bkup_name']); 
     103                $arrErr[3] = $this->lfCreateBkupData($arrData['bkup_name'], $this->bkup_dir); 
    88104 
    89105                // DBにデータ更新 
    90                 if (count($arrErr) <= 0) { 
     106                if (SC_Utils_Ex::isBlank($arrErr[3])) { 
    91107                    $this->lfUpdBkupData($arrData); 
    92108                }else{ 
     
    96112                $this->tpl_onload = "alert('バックアップ完了しました');"; 
    97113            }else{ 
    98                 $arrForm = $arrData; 
     114                $arrForm = $objFormParam->getHashArray(); 
    99115            } 
    100116 
    101117            break; 
    102118 
    103             // リストア 
     119        // リストア 
    104120        case 'restore_config': 
    105121            $this->mode = "restore_config"; 
     122 
    106123        case 'restore': 
    107             $this->lfRestore($_POST['list_name']); 
     124            $this->lfRestore($_POST['list_name'], $this->bkup_dir, $this->bkup_ext, $this->mode); 
    108125            break; 
    109126 
    110             // 削除 
     127        // 削除 
    111128        case 'delete': 
    112129            $del_file = $this->bkup_dir.$_POST['list_name'] . $this->bkup_ext; 
     
    156173    } 
    157174 
    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){ 
    187199 
    188200        // 重複チェック 
    189         $ret = $this->lfGetBkupData("WHERE bkup_name = ?", array($array['bkup_name'])); 
     201        $ret = $this->lfGetBkupData("WHERE bkup_name = ?", array($arrForm['bkup_name'])); 
    190202        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){ 
    199216        // 実行時間を制限しない 
    200217        set_time_limit(0); 
    201218 
    202         $objQuery = new SC_Query(); 
     219        $objQuery =& SC_Query::getSingletonInstance(); 
    203220        $csv_data = ""; 
    204221        $csv_autoinc = ""; 
     222        $arrData = array(); 
    205223        $success = true; 
    206224 
    207         $bkup_dir = $this->bkup_dir; 
    208225        if (!is_dir(dirname($bkup_dir))) $success = mkdir(dirname($bkup_dir)); 
    209226        $bkup_dir = $bkup_dir . $bkup_name . "/"; 
     
    233250                    $data = ""; 
    234251                    foreach($arrData as $data_key => $data_val){ 
    235                         //$val = str_replace("\"", "\\\"", $val); 
    236252                        $data .= $this->lfGetCSVList($arrData[$data_key]); 
    237  
    238253                    } 
    239254                    // CSV出力データ生成 
     
    324339     * 
    325340     * @return string シーケンス一覧の文字列 
     341     * @return string $ret 
    326342     */ 
    327343    function lfGetAutoIncrement() { 
    328         $objQuery = new SC_Query(); 
     344        $objQuery =& SC_Query::getSingletonInstance(); 
    329345        $arrSequences = $objQuery->listSequences(); 
    330         $result = ""; 
    331346 
    332347        foreach($arrSequences as $val){ 
     
    342357    // バックアップテーブルにデータを更新する 
    343358    function lfUpdBkupData($data){ 
    344         $objQuery = new SC_Query(); 
     359        $objQuery =& SC_Query::getSingletonInstance(); 
    345360 
    346361        $sql = "INSERT INTO dtb_bkup (bkup_name,bkup_memo,create_date) values (?,?,now())"; 
     
    350365    // バックアップテーブルからデータを取得する 
    351366    function lfGetBkupData($where = "", $data = array()){ 
    352         $objQuery = new SC_Query(); 
     367        $objQuery =& SC_Query::getSingletonInstance(); 
    353368 
    354369        $sql = "SELECT bkup_name, bkup_memo, create_date FROM dtb_bkup "; 
     
    360375    } 
    361376 
    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){ 
    364386        // 実行時間を制限しない 
    365387        set_time_limit(0); 
    366388 
    367         $objQuery = new SC_Query("", false); 
     389        $objQuery =& SC_Query::getSingletonInstance(); 
    368390        $csv_data = ""; 
    369391        $success = true; 
    370392 
    371         $bkup_dir = $this->bkup_dir . $bkup_name . "/"; 
     393        $bkup_dir = $bkup_dir . $bkup_name . "/"; 
    372394 
    373395        //バックアップフォルダに移動する 
    374         chdir($this->bkup_dir); 
     396        chdir($bkup_dir); 
    375397 
    376398        //圧縮フラグTRUEはgzip解凍をおこなう 
    377         $tar = new Archive_Tar($bkup_name . $this->bkup_ext, TRUE); 
     399        $tar = new Archive_Tar($bkup_name . $bkup_ext, TRUE); 
    378400 
    379401        //指定されたフォルダ内に解凍する 
     
    390412 
    391413            // 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); 
    393415 
    394416            // 自動採番の値をセット 
     
    409431    } 
    410432 
    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){ 
    413442 
    414443        $sql = ""; 
     
    418447        $ret = true; 
    419448        $pagelayout_flg = false; 
    420         $mode = $this->mode; 
    421449 
    422450        // csvファイルからデータの取得 
     
    475503            if ($pagelayout_flg) { 
    476504                // 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); 
    479507                $pagelayout_flg = false; 
    480508            } 
     
    509537            // バックアップテーブルは削除しない 
    510538            if ($val != "dtb_bkup") { 
    511                 $trun_sql = "DELETE FROM $val"; 
    512                 $ret = $objQuery->query($trun_sql); 
     539                $ret = $objQuery->delete($val); 
    513540                if (PEAR::isError($ret)) return false; 
    514541            } 
    515542        } 
    516  
    517543        return true; 
    518544    } 
Note: See TracChangeset for help on using the changeset viewer.