[Svn-src-all:1471] [version-2_5-dev 20363] #974 [管理画面]システム設定 バックアップのコミット(仮)

homan admin @ mail.ec-cube.net
2011年 2月 24日 (木) 00:20:09 JST


Subversion committed to /home/svn/open 20363
http://svn.ec-cube.net/open_trac/changeset/20363
┌────────────────────────────┐
│更新者 :  homan                                        │
│更新日時:  2011-02-24 00:20:09 +0900 (木, 24  2月 2011)│
└────────────────────────────┘

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

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Bkup.php

変更: branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Bkup.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Bkup.php	2011-02-23 15:12:13 UTC (rev 20362)
+++ branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Bkup.php	2011-02-23 15:20:09 UTC (rev 20363)
@@ -51,7 +51,6 @@
 
         $this->bkup_dir = DATA_REALDIR . "downloads/backup/";
         $this->bkup_ext = '.tar.gz';
-
     }
 
     /**
@@ -70,24 +69,41 @@
      * @return void
      */
     function action() {
-        $objQuery = new SC_Query();
+        $objQuery =& SC_Query::getSingletonInstance();
 
+
+        $objFormParam = new SC_FormParam;
+
+        // パラメータの初期化
+        $this->initParam($objFormParam, $_POST);
+
+        $arrErr  = array();
+        $arrForm = array();
+
         switch($this->getMode()) {
-            // バックアップを作成する
+
+        // バックアップを作成する
         case 'bkup':
-            // 入力文字列の変換
-            $arrData = $this->lfConvertParam($_POST);
 
-            // エラーチェック
-            $arrErr = $this->lfCheckError($arrData);
+            // データ型エラーチェック
+            $arrErr[1] = $objFormParam->checkError();
 
+            // データ型に問題がない場合
+            if(SC_Utils_Ex::isBlank($arrErr[1])) {
+                // データ型以外のエラーチェック
+                $arrErr[2] = $this->lfCheckError($objFormParam->getHashArray());
+            }
+
             // エラーがなければバックアップ処理を行う
-            if (count($arrErr) <= 0) {
+            if (SC_Utils_Ex::isBlank($arrErr[1]) && SC_Utils_Ex::isBlank($arrErr[2])) {
+            
+                $arrData = $objFormParam->getHashArray();
+            
                 // バックアップファイル作成
-                $arrErr = $this->lfCreateBkupData($arrData['bkup_name']);
+                $arrErr[3] = $this->lfCreateBkupData($arrData['bkup_name'], $this->bkup_dir);
 
                 // DBにデータ更新
-                if (count($arrErr) <= 0) {
+                if (SC_Utils_Ex::isBlank($arrErr[3])) {
                     $this->lfUpdBkupData($arrData);
                 }else{
                     $arrForm = $arrData;
@@ -95,19 +111,20 @@
 
                 $this->tpl_onload = "alert('バックアップ完了しました');";
             }else{
-                $arrForm = $arrData;
+                $arrForm = $objFormParam->getHashArray();
             }
 
             break;
 
-            // リストア
+        // リストア
         case 'restore_config':
         	$this->mode = "restore_config";
+
         case 'restore':
-            $this->lfRestore($_POST['list_name']);
+            $this->lfRestore($_POST['list_name'], $this->bkup_dir, $this->bkup_ext, $this->mode);
             break;
 
-            // 削除
+        // 削除
         case 'delete':
             $del_file = $this->bkup_dir.$_POST['list_name'] . $this->bkup_ext;
             // ファイルの削除
@@ -155,56 +172,56 @@
         parent::destroy();
     }
 
-    /* 取得文字列の変換 */
-    function lfConvertParam($array) {
-        /*
-         *	文字列の変換
-         *	K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
-         *	C :  「全角ひら仮名」を「全角かた仮名」に変換
-         *	V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
-         *	n :  「全角」数字を「半角(ハンカク)」に変換
-         *  a :  全角英数字を半角英数字に変換する
-         */
-        $arrConvList['bkup_name'] = "a";
-        $arrConvList['bkup_memo'] = "KVa";
 
-        // 文字変換
-        foreach ($arrConvList as $key => $val) {
-            // POSTされてきた値のみ変換する。
-            if(isset($array[$key])) {
-                $array[$key] = mb_convert_kana($array[$key] ,$val);
-            }
-        }
-        return $array;
+    /**
+     * パラメータ初期化.
+     *
+     * @param object $objFormParam
+     * @param array  $arrParams  $_POST値
+     * @return void
+     */
+    function initParam(&$objFormParam, &$arrParams) {
+
+        $objFormParam->addParam('バックアップ名', 'bkup_name', STEXT_LEN, 'a', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NO_SPTAB', 'ALNUM_CHECK'));
+        $objFormParam->addParam('バックアップメモ', 'bkup_memo', MTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK'));
+        $objFormParam->setParam($arrParams);
+        $objFormParam->convParam();
+
     }
 
-    // エラーチェック
-    function lfCheckError($array){
-        $objErr = new SC_CheckError($array);
+    /**
+     * データ型以外のエラーチェック.
+     *
+     * @param array $arrForm
+     * @return $arrErr
+     */
+    function lfCheckError(&$arrForm){
 
-        $objErr->doFunc(array("バックアップ名", "bkup_name", STEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK","NO_SPTAB","ALNUM_CHECK"));
-        $objErr->doFunc(array("バックアップメモ", "bkup_memo", MTEXT_LEN), array("MAX_LENGTH_CHECK"));
-
         // 重複チェック
-        $ret = $this->lfGetBkupData("WHERE bkup_name = ?", array($array['bkup_name']));
+        $ret = $this->lfGetBkupData("WHERE bkup_name = ?", array($arrForm['bkup_name']));
         if (count($ret) > 0) {
-            $objErr->arrErr['bkup_name'] = "バックアップ名が重複しています。別名を入力してください。";
+            $arrErr['bkup_name'] = "バックアップ名が重複しています。別名を入力してください。";
         }
 
-        return $objErr->arrErr;
+        return $arrErr;
     }
 
-    // バックアップファイル作成
-    function lfCreateBkupData($bkup_name){
+    /**
+     * バックアップファイル作成.
+     *
+     * @param string $bkup_name
+     * @return array $arrErr
+     */
+    function lfCreateBkupData($bkup_name, $bkup_dir){
         // 実行時間を制限しない
         set_time_limit(0);
 
-        $objQuery = new SC_Query();
+        $objQuery =& SC_Query::getSingletonInstance();
         $csv_data = "";
         $csv_autoinc = "";
+        $arrData = array();
         $success = true;
 
-        $bkup_dir = $this->bkup_dir;
         if (!is_dir(dirname($bkup_dir))) $success = mkdir(dirname($bkup_dir));
         $bkup_dir = $bkup_dir . $bkup_name . "/";
 
@@ -232,9 +249,7 @@
                     // データをCSV形式に整える
                     $data = "";
                     foreach($arrData as $data_key => $data_val){
-                        //$val = str_replace("\"", "\\\"", $val);
                         $data .= $this->lfGetCSVList($arrData[$data_key]);
-
                     }
                     // CSV出力データ生成
                     $csv_data .= $val . "\r\n";
@@ -323,11 +338,11 @@
      * シーケンス名,シーケンス値 の形式に出力する.
      *
      * @return string シーケンス一覧の文字列
+     * @return string $ret
      */
     function lfGetAutoIncrement() {
-        $objQuery = new SC_Query();
+        $objQuery =& SC_Query::getSingletonInstance();
         $arrSequences = $objQuery->listSequences();
-        $result = "";
 
         foreach($arrSequences as $val){
             $seq = $objQuery->currVal($val);
@@ -341,7 +356,7 @@
 
     // バックアップテーブルにデータを更新する
     function lfUpdBkupData($data){
-        $objQuery = new SC_Query();
+        $objQuery =& SC_Query::getSingletonInstance();
 
         $sql = "INSERT INTO dtb_bkup (bkup_name,bkup_memo,create_date) values (?,?,now())";
         $objQuery->query($sql, array($data['bkup_name'],$data['bkup_memo']));
@@ -349,7 +364,7 @@
 
     // バックアップテーブルからデータを取得する
     function lfGetBkupData($where = "", $data = array()){
-        $objQuery = new SC_Query();
+        $objQuery =& SC_Query::getSingletonInstance();
 
         $sql = "SELECT bkup_name, bkup_memo, create_date FROM dtb_bkup ";
         if ($where != "")	$sql .= $where;
@@ -359,22 +374,29 @@
         return $ret;
     }
 
-    // バックアップファイルをリストアする
-    function lfRestore($bkup_name){
+    /**
+     * バックアップファイルをリストアする
+     *
+     * @param string $bkup_name
+     * @param string $bkup_dir
+     * @param string $bkup_ext
+     * @return void
+     */
+    function lfRestore($bkup_name, $bkup_dir, $bkup_ext, $mode){
         // 実行時間を制限しない
         set_time_limit(0);
 
-        $objQuery = new SC_Query("", false);
+        $objQuery =& SC_Query::getSingletonInstance();
         $csv_data = "";
         $success = true;
 
-        $bkup_dir = $this->bkup_dir . $bkup_name . "/";
+        $bkup_dir = $bkup_dir . $bkup_name . "/";
 
         //バックアップフォルダに移動する
-        chdir($this->bkup_dir);
+        chdir($bkup_dir);
 
         //圧縮フラグTRUEはgzip解凍をおこなう
-        $tar = new Archive_Tar($bkup_name . $this->bkup_ext, TRUE);
+        $tar = new Archive_Tar($bkup_name . $bkup_ext, TRUE);
 
         //指定されたフォルダ内に解凍する
         $success = $tar->extract("./");
@@ -389,7 +411,7 @@
             $success = $this->lfDeleteAll($objQuery);
 
             // INSERT実行
-            if ($success) $success = $this->lfExeInsertSQL($objQuery, $bkup_dir . "bkup_data.csv");
+            if ($success) $success = $this->lfExeInsertSQL($objQuery, $bkup_dir . "bkup_data.csv", $mode);
 
             // 自動採番の値をセット
             if ($success) $this->lfSetAutoInc($objQuery, $bkup_dir . "autoinc_data.csv");
@@ -408,8 +430,15 @@
         }
     }
 
-    // CSVファイルからインサート実行
-    function lfExeInsertSQL(&$objQuery, $csv){
+    /**
+     * CSVファイルからインサート実行.
+     *
+     * @param object $objQuery
+     * @param string $csv
+     * @param string $mode
+     * @return void
+     */
+    function lfExeInsertSQL(&$objQuery, $csv, $mode){
 
         $sql = "";
         $base_sql = "";
@@ -417,7 +446,6 @@
         $col_flg = false;
         $ret = true;
         $pagelayout_flg = false;
-        $mode = $this->mode;
 
         // csvファイルからデータの取得
         $fp = fopen($csv, "r");
@@ -474,8 +502,8 @@
 
             if ($pagelayout_flg) {
                 // dtb_pagelayoutの場合には最初のデータはpage_id = 0にする
-                $sql = "UPDATE dtb_pagelayout SET page_id = '0'";
-                $objQuery->query($sql);
+                $arrVal['page_id'] = '0';
+                $objQuery->update("dtb_pagelayout", $arrVal);
                 $pagelayout_flg = false;
             }
 
@@ -508,12 +536,10 @@
         foreach($arrTableList as $val){
             // バックアップテーブルは削除しない
             if ($val != "dtb_bkup") {
-                $trun_sql = "DELETE FROM $val";
-                $ret = $objQuery->query($trun_sql);
+                $ret = $objQuery->delete($val);
                 if (PEAR::isError($ret)) return false;
             }
         }
-
         return true;
     }
 }




Svn-src-all メーリングリストの案内