Page
[ class tree: Page ] [ index: Page ] [ all elements ]

Source for file LC_Page_Admin_System_Bkup.php

Documentation is available at LC_Page_Admin_System_Bkup.php

  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.lockon.co.jp/
  8.  *
  9.  * This program is free software; you can redistribute it and/or
  10.  * modify it under the terms of the GNU General Public License
  11.  * as published by the Free Software Foundation; either version 2
  12.  * of the License, or (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  22.  */
  23.  
  24. // {{{ requires
  25. require_once(CLASS_PATH "pages/LC_Page.php");
  26. require_once(DATA_PATH"module/Tar.php");
  27. /**
  28.  * バックアップ のページクラス.
  29.  *
  30.  * @package Page
  31.  * @author LOCKON CO.,LTD.
  32.  * @version $Id: LC_Page_Admin_System_Bkup.php 18735 2010-06-22 08:53:31Z nanasess $
  33.  */
  34.  
  35.     // }}}
  36.     // {{{ functions
  37.  
  38.     /**
  39.      * Page を初期化する.
  40.      *
  41.      * @return void 
  42.      */
  43.     function init({
  44.         parent::init();
  45.         $this->tpl_mainpage = 'system/bkup.tpl';
  46.         $this->tpl_subnavi 'system/subnavi.tpl';
  47.         $this->tpl_mainno = 'system';
  48.         $this->tpl_subno 'bkup';
  49.         $this->tpl_subtitle 'バックアップ管理';
  50.  
  51.         $this->bkup_dir DATA_PATH "downloads/backup/";
  52.  
  53.     }
  54.  
  55.     /**
  56.      * Page のプロセス.
  57.      *
  58.      * @return void 
  59.      */
  60.     function process({
  61.         $objView new SC_AdminView();
  62.         $objQuery new SC_Query();
  63.  
  64.         // セッションクラス
  65.         $objSess new SC_Session();
  66.         // 認証可否の判定
  67.         SC_Utils_Ex::sfIsSuccess($objSess);
  68.  
  69.         // バックアップテーブルがなければ作成する
  70.         $this->lfCreateBkupTable();
  71.  
  72.         if (!isset($_POST['mode'])) $_POST['mode'"";
  73.  
  74.         switch($_POST['mode']{
  75.             // バックアップを作成する
  76.         case 'bkup':
  77.             // 入力文字列の変換
  78.             $arrData $this->lfConvertParam($_POST);
  79.  
  80.             // エラーチェック
  81.             $arrErr $this->lfCheckError($arrData);
  82.  
  83.             // エラーがなければバックアップ処理を行う
  84.             if (count($arrErr<= 0{
  85.                 // バックアップファイル作成
  86.                 $arrErr $this->lfCreateBkupData($arrData['bkup_name']);
  87.  
  88.                 // DBにデータ更新
  89.                 if (count($arrErr<= 0{
  90.                     $this->lfUpdBkupData($arrData);
  91.                 }else{
  92.                     $arrForm $arrData;
  93.                 }
  94.  
  95.                 $this->tpl_onload = "alert('バックアップ完了しました');";
  96.             }else{
  97.                 $arrForm $arrData;
  98.             }
  99.  
  100.             break;
  101.  
  102.             // リストア
  103.         case 'restore':
  104.         case 'restore_config':
  105.             if ($_POST['mode'== 'restore_config'{
  106.                 $this->mode "restore_config";
  107.             }
  108.  
  109.             $this->lfRestore($_POST['list_name']);
  110.  
  111.             break;
  112.  
  113.             // 削除
  114.         case 'delete':
  115.             $del_file $this->bkup_dir.$_POST['list_name'".tar.gz";
  116.             // ファイルの削除
  117.             if(is_file($del_file)){
  118.                 $ret unlink($del_file);
  119.             }
  120.  
  121.             // DBから削除
  122.             $delsql "DELETE FROM dtb_bkup WHERE bkup_name = ?";
  123.             $objQuery->query($delsqlarray($_POST['list_name']));
  124.  
  125.             break;
  126.  
  127.             // ダウンロード
  128.         case 'download' :
  129.             $filename $_POST['list_name'".tar.gz";
  130.             $dl_file $this->bkup_dir.$_POST['list_name'".tar.gz";
  131.  
  132.             // ダウンロード開始
  133.             Header("Content-disposition: attachment; filename=${filename}");
  134.             Header("Content-type: application/octet-stream; name=${filename}");
  135.             header("Content-Length: " .filesize($dl_file));
  136.             readfile ($dl_file);
  137.             exit();
  138.             break;
  139.  
  140.         default:
  141.             break;
  142.         }
  143.  
  144.         // バックアップリストを取得する
  145.         $arrBkupList $this->lfGetBkupData("ORDER BY create_date DESC");
  146.         // テンプレートファイルに渡すデータをセット
  147.         $this->arrErr = isset($arrErr$arrErr "";
  148.         $this->arrForm = isset($arrForm$arrForm "";
  149.         $this->arrBkupList $arrBkupList;
  150.  
  151.         $objView->assignobj($this);        //変数をテンプレートにアサインする
  152.         $objView->display(MAIN_FRAME);        //テンプレートの出力
  153.     }
  154.  
  155.     /**
  156.      * デストラクタ.
  157.      *
  158.      * @return void 
  159.      */
  160.     function destroy({
  161.         parent::destroy();
  162.     }
  163.  
  164.     /* 取得文字列の変換 */
  165.     function lfConvertParam($array{
  166.         /*
  167.          *    文字列の変換
  168.          *    K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
  169.          *    C :  「全角ひら仮名」を「全角かた仮名」に変換
  170.          *    V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
  171.          *    n :  「全角」数字を「半角(ハンカク)」に変換
  172.          *  a :  全角英数字を半角英数字に変換する
  173.          */
  174.         $arrConvList['bkup_name'"a";
  175.         $arrConvList['bkup_memo'"KVa";
  176.  
  177.         // 文字変換
  178.         foreach ($arrConvList as $key => $val{
  179.             // POSTされてきた値のみ変換する。
  180.             if(isset($array[$key])) {
  181.                 $array[$keymb_convert_kana($array[$key,$val);
  182.             }
  183.         }
  184.         return $array;
  185.     }
  186.  
  187.     // エラーチェック
  188.     function lfCheckError($array){
  189.         $objErr new SC_CheckError($array);
  190.  
  191.         $objErr->doFunc(array("バックアップ名""bkup_name"STEXT_LEN)array("EXIST_CHECK","MAX_LENGTH_CHECK","NO_SPTAB","ALNUM_CHECK"));
  192.         $objErr->doFunc(array("バックアップメモ""bkup_memo"MTEXT_LEN)array("MAX_LENGTH_CHECK"));
  193.  
  194.         // 重複チェック
  195.         $ret $this->lfGetBkupData("WHERE bkup_name = ?"array($array['bkup_name']));
  196.         if (count($ret0{
  197.             $objErr->arrErr['bkup_name'"バックアップ名が重複しています。別名を入力してください。";
  198.         }
  199.  
  200.         return $objErr->arrErr;
  201.     }
  202.  
  203.     // バックアップファイル作成
  204.     function lfCreateBkupData($bkup_name){
  205.         $objQuery new SC_Query();
  206.         $csv_data "";
  207.         $csv_autoinc "";
  208.         $err true;
  209.  
  210.         $bkup_dir $this->bkup_dir;
  211.         if (!is_dir(dirname($bkup_dir))) $err mkdir(dirname($bkup_dir));
  212.         $bkup_dir $bkup_dir $bkup_name "/";
  213.  
  214.         // 全テーブル取得
  215.         $arrTableList $this->lfGetTableList();
  216.  
  217.         // 各テーブル情報を取得する
  218.         foreach($arrTableList as $key => $val){
  219.  
  220.             if (!($val == "dtb_bkup" || $val == "mtb_zip")) {
  221.  
  222.                 // 自動採番型の構成を取得する
  223.                 $csv_autoinc .= $this->lfGetAutoIncrement($val);
  224.  
  225.                 // 全データを取得
  226.                 if ($val == "dtb_pagelayout"){
  227.                     $arrData $objQuery->getAll("SELECT * FROM $val ORDER BY page_id");
  228.                 }else{
  229.                     $arrData $objQuery->getAll("SELECT * FROM $val");
  230.                 }
  231.  
  232.                 // CSVデータ生成
  233.                 if (count($arrData0{
  234.  
  235.                     // カラムをCSV形式に整える
  236.                     $arrKyes SC_Utils_Ex::sfGetCommaList(array_keys($arrData[0])false);
  237.  
  238.                     // データをCSV形式に整える
  239.                     $data "";
  240.                     foreach($arrData as $data_key => $data_val){
  241.                         $data .= $this->lfGetCSVList($arrData[$data_key]);
  242.  
  243.                     }
  244.                     // CSV出力データ生成
  245.                     $csv_data .= $val "\r\n";
  246.                     $csv_data .= $arrKyes "\r\n";
  247.                     $csv_data .= $data;
  248.                     $csv_data .= "\r\n";
  249.                 }
  250.  
  251.                 // タイムアウトを防ぐ
  252.                 SC_Utils_Ex::sfFlush();
  253.             }
  254.         }
  255.  
  256.         $csv_file $bkup_dir "bkup_data.csv";
  257.         $csv_autoinc_file $bkup_dir "autoinc_data.csv";
  258.         mb_internal_encoding(CHAR_CODE);
  259.         // CSV出力
  260.         // ディレクトリが存在していなければ作成する
  261.         if (!is_dir(dirname($csv_file))) {
  262.             $err mkdir(dirname($csv_file));
  263.         }
  264.         if ($err{
  265.             // dataをCSV出力
  266.             $fp fopen($csv_file,"w");
  267.             if($fp{
  268.                 if($csv_data != ""){
  269.                     $err fwrite($fp$csv_data);
  270.                 }
  271.                 fclose($fp);
  272.             }
  273.  
  274.             // 自動採番をCSV出力
  275.             $fp fopen($csv_autoinc_file,"w");
  276.             if($fp{
  277.                 if($csv_autoinc != ""){
  278.                     $err fwrite($fp$csv_autoinc);
  279.                 }
  280.                 fclose($fp);
  281.             }
  282.         }
  283.  
  284.         // 各種ファイルコピー
  285.         if ($err{
  286.             /**
  287.             // 商品画像ファイルをコピー
  288.             // ディレクトリが存在していなければ作成する
  289.             $image_dir = $bkup_dir . "save_image/";
  290.             if (!is_dir(dirname($image_dir))) $err = mkdir(dirname($image_dir));
  291.             $copy_mess = "";
  292.             $copy_mess = SC_Utils_Ex::sfCopyDir("../../upload/save_image/",$image_dir, $copy_mess);
  293.  
  294.             // テンプレートファイルをコピー
  295.             // ディレクトリが存在していなければ作成する
  296.             $templates_dir = $bkup_dir . "templates/";
  297.             if (!is_dir(dirname($templates_dir))) $err = mkdir(dirname($templates_dir));
  298.             $copy_mess = "";
  299.             $copy_mess = SC_Utils_Ex::sfCopyDir("../../user_data/templates/",$templates_dir, $copy_mess);
  300.  
  301.             // インクルードファイルをコピー
  302.             // ディレクトリが存在していなければ作成する
  303.             $inc_dir = $bkup_dir . "include/";
  304.             if (!is_dir(dirname($inc_dir))) $err = mkdir(dirname($inc_dir));
  305.             $copy_mess = "";
  306.             $copy_mess = SC_Utils_Ex::sfCopyDir("../../user_data/include/",$inc_dir, $copy_mess);
  307.  
  308.             // CSSファイルをコピー
  309.             // ディレクトリが存在していなければ作成する
  310.             $css_dir = $bkup_dir . "css/";
  311.             if (!is_dir(dirname($css_dir))) $err = mkdir(dirname($css_dir));
  312.             $copy_mess = "";
  313.             $copy_mess = SC_Utils_Ex::sfCopyDir("../../user_data/css/",$css_dir, $copy_mess);
  314.             **/
  315.             //圧縮フラグTRUEはgzip圧縮をおこなう
  316.             $tar new Archive_Tar($this->bkup_dir $bkup_name.".tar.gz"TRUE);
  317.  
  318.             //bkupフォルダに移動する
  319.             chdir($this->bkup_dir);
  320.  
  321.             //圧縮をおこなう
  322.             $zip $tar->create("./" $bkup_name "/");
  323.  
  324.             // バックアップデータの削除
  325.             if ($zipSC_Utils_Ex::sfDelFile($bkup_dir);
  326.         }
  327.  
  328.         if (!$err{
  329.             $arrErr['bkup_name'"バックアップに失敗しました。";
  330.             // バックアップデータの削除
  331.             SC_Utils_Ex::sfDelFile($bkup_dir);
  332.         }
  333.  
  334.         return isset($arrErr$arrErr array();
  335.     }
  336.  
  337.     /* 配列の要素をCSVフォーマットで出力する。*/
  338.     function lfGetCSVList($array{
  339.         $line '';
  340.         if (count($array0{
  341.             foreach($array as $key => $val{
  342.                 $val mb_convert_encoding($valCHAR_CODECHAR_CODE);
  343.                 $val str_replace("\"""\"\""$val);
  344.                 $line .= "\"".$val."\",";
  345.             }
  346.             $line ereg_replace(",$""\r\n"$line);
  347.         }else{
  348.             return false;
  349.         }
  350.         return $line;
  351.     }
  352.  
  353.     // 全テーブルリストを取得する
  354.     function lfGetTableList(){
  355.         $objQuery new SC_Query();
  356.  
  357.         if(DB_TYPE == "pgsql"){
  358.             $sql "SELECT tablename FROM pg_tables WHERE tableowner = ? ORDER BY tablename ; ";
  359.             $arrRet $objQuery->getAll($sqlarray(DB_USER));
  360.             $arrRet SC_Utils_Ex::sfSwapArray($arrRet);
  361.             $arrRet $arrRet['tablename'];
  362.         }else if(DB_TYPE == "mysql"){
  363.             $sql "SHOW TABLES;";
  364.             $arrRet $objQuery->getAll($sql);
  365.             $arrRet SC_Utils_Ex::sfSwapArray($arrRet);
  366.  
  367.             // キーを取得
  368.             $arrKey array_keys($arrRet);
  369.  
  370.             $arrRet $arrRet[$arrKey[0]];
  371.         }
  372.         return $arrRet;
  373.     }
  374.  
  375.     // 自動採番型をCSV出力形式に変換する
  376.     function lfGetAutoIncrement($table_name){
  377.         $arrColList $this->lfGetColumnList($table_name);
  378.         $ret "";
  379.  
  380.         if(DB_TYPE == "pgsql"){
  381.             $match 'nextval(\'';
  382.         }else if(DB_TYPE == "mysql"){
  383.             $match "auto_incr";
  384.         }
  385.  
  386.         foreach($arrColList['col_def'as $key => $val){
  387.  
  388.             if (substr($val,0,9== $match{
  389.                 $col $arrColList['col_name'][$key];
  390.                 $autoVal $this->lfGetAutoIncrementVal($table_name$col);
  391.                 $ret .= "$table_name,$col,$autoVal\n";
  392.             }
  393.         }
  394.  
  395.         return $ret;
  396.     }
  397.  
  398.     // テーブル構成を取得する
  399.     Function LfgetColumnlist($table_name){
  400.         $objQuery new SC_Query();
  401.  
  402.         if(DB_TYPE == "pgsql"){
  403.             $sql "SELECT
  404.                     a.attname, t.typname, a.attnotnull, d.adsrc as defval, a.atttypmod, a.attnum as fldnum, e.description
  405.                 FROM
  406.                     pg_class c,
  407.                     pg_type t,
  408.                     pg_attribute a left join pg_attrdef d on (a.attrelid=d.adrelid and a.attnum=d.adnum)
  409.                                    left join pg_description e on (a.attrelid=e.objoid and a.attnum=e.objsubid)
  410.                 WHERE (c.relname=?) AND (c.oid=a.attrelid) AND (a.atttypid=t.oid) AND a.attnum > 0
  411.                 ORDER BY fldnum";
  412.             $arrColList $objQuery->getAll($sqlarray($table_name));
  413.             $arrColList SC_Utils_Ex::sfSwapArray($arrColList);
  414.  
  415.             $arrRet['col_def'$arrColList['defval'];
  416.             $arrRet['col_name'$arrColList['attname'];
  417.         }else if(DB_TYPE == "mysql"){
  418.             $sql "SHOW COLUMNS FROM $table_name";
  419.             $arrColList $objQuery->getAll($sql);
  420.             $arrColList SC_Utils_Ex::sfSwapArray($arrColList);
  421.  
  422.             $arrRet['col_def'$arrColList['Extra'];
  423.             $arrRet['col_name'$arrColList['Field'];
  424.         }
  425.         return $arrRet;
  426.     }
  427.  
  428.     // 自動採番型の値を取得する
  429.     function lfGetAutoIncrementVal($table_name $colname ""){
  430.         $objQuery new SC_Query();
  431.         $ret "";
  432.  
  433.         if(DB_TYPE == "pgsql"){
  434.             $ret $objQuery->nextval($table_name$colname1;
  435.         }else if(DB_TYPE == "mysql"){
  436.             $sql "SHOW TABLE STATUS LIKE ?";
  437.             $arrData $objQuery->getAll($sqlarray($table_name));
  438.             $ret $arrData[0]['Auto_increment'];
  439.         }
  440.         return $ret;
  441.     }
  442.  
  443.     // バックアップテーブルにデータを更新する
  444.     function lfUpdBkupData($data){
  445.         $objQuery new SC_Query();
  446.  
  447.         $sql "INSERT INTO dtb_bkup (bkup_name,bkup_memo,create_date) values (?,?,now())";
  448.         $objQuery->query($sqlarray($data['bkup_name'],$data['bkup_memo']));
  449.     }
  450.  
  451.     // バックアップテーブルからデータを取得する
  452.     function lfGetBkupData($where ""$data array()){
  453.         $objQuery new SC_Query();
  454.  
  455.         $sql "SELECT bkup_name, bkup_memo, create_date FROM dtb_bkup ";
  456.         if ($where != "")    $sql .= $where;
  457.  
  458.         $ret $objQuery->getAll($sql,$data);
  459.  
  460.         return $ret;
  461.     }
  462.  
  463.     // バックアップファイルをリストアする
  464.     function lfRestore($bkup_name){
  465.         $objQuery new SC_Query(""false);
  466.         $csv_data "";
  467.         $err true;
  468.  
  469.         $bkup_dir $this->bkup_dir $bkup_name "/";
  470.  
  471.         //バックアップフォルダに移動する
  472.         chdir($this->bkup_dir);
  473.  
  474.         //圧縮フラグTRUEはgzip解凍をおこなう
  475.         $tar new Archive_Tar($bkup_name ".tar.gz"TRUE);
  476.  
  477.         //指定されたフォルダ内に解凍する
  478.         $err $tar->extract("./");
  479.  
  480.         // 無事解凍できれば、リストアを行う
  481.         if ($err{
  482.  
  483.             // トランザクション開始
  484.             $objQuery->begin();
  485.  
  486.             // DBをクリア
  487.             $err $this->lfDeleteAll($objQuery);
  488.  
  489.             // INSERT実行
  490.             if ($err$err $this->lfExeInsertSQL($objQuery$bkup_dir "bkup_data.csv");
  491.  
  492.             // 自動採番の値をセット
  493.             if ($err$this->lfSetAutoInc($objQuery$bkup_dir "autoinc_data.csv");
  494.  
  495.             // 各種ファイルのコピー
  496.             /**
  497.             if ($err) {
  498.                 // 画像のコピー
  499.                 $image_dir = $bkup_dir . "save_image/";
  500.                 $copy_mess = "";
  501.                 $copy_mess = SC_Utils_Ex::sfCopyDir($image_dir, "../../upload/save_image/", $copy_mess, true);
  502.  
  503.                 // テンプレートのコピー
  504.                 $tmp_dir = $bkup_dir . "templates/";
  505.                 $copy_mess = "";
  506.                 $copy_mess = SC_Utils_Ex::sfCopyDir($tmp_dir, "../../user_data/templates/", $copy_mess, true);
  507.  
  508.                 // インクルードファイルのコピー
  509.                 $inc_dir = $bkup_dir . "include/";
  510.                 $copy_mess = "";
  511.                 $copy_mess = SC_Utils_Ex::sfCopyDir($inc_dir, "../../user_data/include/", $copy_mess, true);
  512.  
  513.                 // CSSのコピー
  514.                 $css_dir = $bkup_dir . "css/";
  515.                 $copy_mess = "";
  516.                 $copy_mess = SC_Utils_Ex::sfCopyDir($css_dir, "../../user_data/css/", $copy_mess, true);
  517.  
  518.                 // バックアップデータの削除
  519.                 SC_Utils_Ex::sfDelFile($bkup_dir);
  520.             }**/
  521.  
  522.             // リストア成功ならコミット失敗ならロールバック
  523.             if ($err{
  524.                 $objQuery->commit();
  525.                 $this->restore_msg "リストア終了しました。";
  526.                 $this->restore_err true;
  527.             }else{
  528.                 $objQuery->rollback();
  529.                 $this->restore_msg "リストアに失敗しました。";
  530.                 $this->restore_name $bkup_name;
  531.                 $this->restore_err false;
  532.             }
  533.         }
  534.     }
  535.  
  536.     // CSVファイルからインサート実行
  537.     function lfExeInsertSQL($objQuery$csv){
  538.  
  539.         $sql "";
  540.         $base_sql "";
  541.         $tbl_flg false;
  542.         $col_flg false;
  543.         $ret true;
  544.         $pagelayout_flg false;
  545.         $mode $this->mode;
  546.  
  547.         // csvファイルからデータの取得
  548.         $fp fopen($csv"r");
  549.         while (!feof($fp)) {
  550.             $data fgetcsv($fp1000000);
  551.  
  552.             //空白行のときはテーブル変更
  553.             if (count($data<= and $data[0== ""{
  554.                 $base_sql "";
  555.                 $tbl_flg false;
  556.                 $col_flg false;
  557.                 continue;
  558.             }
  559.  
  560.             // テーブルフラグがたっていない場合にはテーブル名セット
  561.             if (!$tbl_flg{
  562.                 $base_sql "INSERT INTO $data[0] ";
  563.                 $tbl_flg true;
  564.  
  565.                 if($data[0== "dtb_pagelayout"){
  566.                     $pagelayout_flg true;
  567.                 }
  568.  
  569.                 continue;
  570.             }
  571.  
  572.             // カラムフラグがたっていない場合にはカラムセット
  573.             if (!$col_flg{
  574.                 if ($mode != "restore_config"){
  575.                     $base_sql .= " ( $data[0] ";
  576.                     for($i 1$i count($data)$i++){
  577.                         $base_sql .= "," $data[$i];
  578.                     }
  579.                     $base_sql .= " ) ";
  580.                 }
  581.                 $col_flg true;
  582.                 continue;
  583.             }
  584.  
  585.             // インサートする値をセット
  586.             $sql $base_sql "VALUES ( ? ";
  587.             for($i 1$i count($data)$i++){
  588.                 $sql .= ", ?";
  589.             }
  590.             $sql .= " );";
  591.             $err $objQuery->query($sql$data);
  592.  
  593.             // エラーがあれば終了
  594.             if ($err->message != ""){
  595.                 SC_Utils_Ex::sfErrorHeader(">> " $objQuery->getlastquery(false));
  596.                 return false;
  597.             }
  598.  
  599.             if ($pagelayout_flg{
  600.                 // dtb_pagelayoutの場合には最初のデータはpage_id = 0にする
  601.                 $sql "UPDATE dtb_pagelayout SET page_id = '0'";
  602.                 $objQuery->query($sql);
  603.                 $pagelayout_flg false;
  604.             }
  605.  
  606.             // タイムアウトを防ぐ
  607.             SC_Utils_Ex::sfFlush();
  608.         }
  609.         fclose($fp);
  610.  
  611.         return $ret;
  612.     }
  613.  
  614.     // 自動採番をセット
  615.     function lfSetAutoInc($objQuery$csv){
  616.         // csvファイルからデータの取得
  617.         $arrCsvData file($csv);
  618.  
  619.         foreach($arrCsvData as $key => $val){
  620.             $arrData split(","trim($val));
  621.  
  622.             if ($arrData[2== 0)    $arrData[21;
  623.             $objQuery->setval($arrData[0]$arrData[1]$arrData[2]);
  624.         }
  625.     }
  626.  
  627.     // DBを全てクリアする
  628.     function lfDeleteAll($objQuery){
  629.         $ret true;
  630.  
  631.         $arrTableList $this->lfGetTableList();
  632.  
  633.         foreach($arrTableList as $key => $val){
  634.             // バックアップテーブルは削除しない
  635.             if ($val != "dtb_bkup"{
  636.                 $trun_sql "DELETE FROM $val;";
  637.                 $ret $objQuery->query($trun_sql);
  638.  
  639.                 if (!$retreturn $ret;
  640.             }
  641.         }
  642.  
  643.         return $ret;
  644.     }
  645.  
  646.     // バックアップテーブルを作成する
  647.     function lfCreateBkupTable(){
  648.         $objQuery new SC_Query();
  649.  
  650.         // テーブルの存在チェック
  651.         $arrTableList $this->lfGetTableList();
  652.  
  653.         if(!in_array("dtb_bkup"$arrTableList)){
  654.             // 存在していなければ作成
  655.             $cre_sql "
  656.             create table dtb_bkup
  657.             (
  658.                 bkup_name   text,
  659.                 bkup_memo   text,
  660.                 create_date timestamp
  661.             );
  662.         ";
  663.  
  664.             $objQuery->query($cre_sql);
  665.         }
  666.     }
  667. }
  668. ?>

Documentation generated on Fri, 24 Feb 2012 13:59:09 +0900 by Seasoft