source: temp/trunk/html/admin/system/bkup.php @ 6454

Revision 6454, 14.6 KB checked in by kakinaka, 20 years ago (diff)

* empty log message *

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
RevLine 
[5337]1<?php
[5814]2/*
[5934]3 * Copyright(c) 2000-2006 LOCKON CO.,LTD. All Rights Reserved.
[5814]4 *
5 * http://www.lockon.co.jp/
6 */
[5337]7require_once("../require.php");
[6089]8require_once(DATA_PATH. "module/Tar.php");
[5337]9
[5916]10define("DB_TYPE", "pgsql");
11
[5337]12//¥Ú¡¼¥¸´ÉÍý¥¯¥é¥¹
13class LC_Page {
14    //¥³¥ó¥¹¥È¥é¥¯¥¿
15    function LC_Page() {
16        //¥á¥¤¥ó¥Æ¥ó¥×¥ì¡¼¥È¤Î»ØÄê
[5341]17        $this->tpl_mainpage = 'system/bkup.tpl';
[5337]18        $this->tpl_subnavi = 'system/subnavi.tpl';
19        $this->tpl_mainno = 'system';       
[5340]20        $this->tpl_subno = 'bkup';
[5342]21        $this->tpl_subtitle = '¥Ð¥Ã¥¯¥¢¥Ã¥×´ÉÍý';
[5506]22       
[6081]23        $this->bkup_dir = USER_PATH . "bkup/";
[5337]24    }
25}
26
27$objPage = new LC_Page();
28$objView = new SC_AdminView();
29$objQuery = new SC_Query();
30
31// ¥»¥Ã¥·¥ç¥ó¥¯¥é¥¹
32$objSess = new SC_Session();
33// ǧ¾Ú²ÄÈݤÎȽÄê
34sfIsSuccess($objSess);
35
[5708]36// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Æ¡¼¥Ö¥ë¤¬¤Ê¤±¤ì¤ÐºîÀ®¤¹¤ë
37lfCreateBkupTable();
38
[5337]39switch($_POST['mode']) {
[5450]40// ¥Ð¥Ã¥¯¥¢¥Ã¥×¤òºîÀ®¤¹¤ë
41case 'bkup':
[5563]42    // ÆþÎÏʸ»úÎó¤ÎÊÑ´¹
43    $arrData = lfConvertParam($_POST);
44
[5452]45    // ¥¨¥é¡¼¥Á¥§¥Ã¥¯
[5563]46    $arrErr = lfCheckError($arrData);
[5452]47
48    // ¥¨¥é¡¼¤¬¤Ê¤±¤ì¤Ð¥Ð¥Ã¥¯¥¢¥Ã¥×½èÍý¤ò¹Ô¤¦   
49    if (count($arrErr) <= 0) {
50        // ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ëºîÀ®
[5566]51        $arrErr = lfCreateBkupData($arrData['bkup_name']);
[5452]52       
53        // DB¤Ë¥Ç¡¼¥¿¹¹¿·
[5607]54        if (count($arrErr) <= 0) {
55            lfUpdBkupData($arrData);
56        }else{
57            $arrForm = $arrData;
58        }
[5817]59       
[5818]60        $objPage->tpl_onload = "alert('¥Ð¥Ã¥¯¥¢¥Ã¥×´°Î»¤·¤Þ¤·¤¿');";
[5564]61    }else{
62        $arrForm = $arrData;
[5452]63    }
64
[5337]65    break;
[5452]66   
[5645]67// ¥ê¥¹¥È¥¢
[5746]68case 'restore':
[5747]69case 'restore_config':
[5752]70    if ($_POST['mode'] == 'restore_config') {
71        $objPage->mode = "restore_config";
72    }
73
[5645]74    lfRestore($_POST['list_name']);
75
[5337]76    break;
[5591]77   
78// ºï½ü
[5870]79case 'delete':
[5925]80    $del_file = $objPage->bkup_dir.$_POST['list_name'] . ".tar.gz";
[5592]81    // ¥Õ¥¡¥¤¥ë¤Îºï½ü
[5925]82    if(is_file($del_file)){
83        unlink($del_file);
84    }
[5592]85
86    // DB¤«¤éºï½ü
[5591]87    $delsql = "DELETE FROM dtb_bkup WHERE bkup_name = ?";
88    $objQuery->query($delsql, array($_POST['list_name']));
89
[5337]90    break;
91default:
92    break;
93}
94
[5570]95// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥ê¥¹¥È¤ò¼èÆÀ¤¹¤ë
[5574]96$arrBkupList = lfGetBkupData("ORDER BY create_date DESC");
[5452]97// ¥Æ¥ó¥×¥ì¡¼¥È¥Õ¥¡¥¤¥ë¤ËÅϤ¹¥Ç¡¼¥¿¤ò¥»¥Ã¥È
98$objPage->arrErr = $arrErr;
[5564]99$objPage->arrForm = $arrForm;
[5575]100$objPage->arrBkupList = $arrBkupList;
[5337]101
102$objView->assignobj($objPage);      //ÊÑ¿ô¤ò¥Æ¥ó¥×¥ì¡¼¥È¤Ë¥¢¥µ¥¤¥ó¤¹¤ë
103$objView->display(MAIN_FRAME);      //¥Æ¥ó¥×¥ì¡¼¥È¤Î½ÐÎÏ
[5452]104
[5337]105//-------------------------------------------------------------------------------------------------------
[5563]106/* ¼èÆÀʸ»úÎó¤ÎÊÑ´¹ */
107function lfConvertParam($array) {
108    /*
109     *  ʸ»úÎó¤ÎÊÑ´¹
110     *  K :  ¡ÖȾ³Ñ(ŽÊŽÝ޶ޏ)ÊÒ²¾Ì¾¡×¤ò¡ÖÁ´³ÑÊÒ²¾Ì¾¡×¤ËÊÑ´¹
111     *  C :  ¡ÖÁ´³Ñ¤Ò¤é²¾Ì¾¡×¤ò¡ÖÁ´³Ñ¤«¤¿²¾Ì¾¡×¤ËÊÑ´¹
112     *  V :  ÂùÅÀÉÕ¤­¤Îʸ»ú¤ò°ìʸ»ú¤ËÊÑ´¹¡£"K","H"¤È¶¦¤Ë»ÈÍѤ·¤Þ¤¹ 
113     *  n :  ¡ÖÁ´³Ñ¡×¿ô»ú¤ò¡ÖȾ³Ñ(ŽÊŽÝ޶ޏ)¡×¤ËÊÑ´¹
114     *  a :  Á´³Ñ±Ñ¿ô»ú¤òȾ³Ñ±Ñ¿ô»ú¤ËÊÑ´¹¤¹¤ë
115     */
116    $arrConvList['bkup_name'] = "a";
[5565]117    $arrConvList['bkup_memo'] = "KVa";
[5563]118   
119    // ʸ»úÊÑ´¹
120    foreach ($arrConvList as $key => $val) {
121        // POST¤µ¤ì¤Æ¤­¤¿ÃͤΤßÊÑ´¹¤¹¤ë¡£
122        if(isset($array[$key])) {
123            $array[$key] = mb_convert_kana($array[$key] ,$val);
124        }
125    }
126    return $array;
127}
128
[5452]129// ¥¨¥é¡¼¥Á¥§¥Ã¥¯
130function lfCheckError($array){
131    $objErr = new SC_CheckError($array);
132   
[5563]133    $objErr->doFunc(array("¥Ð¥Ã¥¯¥¢¥Ã¥×̾", "bkup_name", STEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK","NO_SPTAB","ALNUM_CHECK"));
134    $objErr->doFunc(array("¥Ð¥Ã¥¯¥¢¥Ã¥×¥á¥â", "bkup_memo", MTEXT_LEN), array("MAX_LENGTH_CHECK"));
[5568]135   
136    // ½ÅÊ£¥Á¥§¥Ã¥¯
[5570]137    $ret = lfGetBkupData("WHERE bkup_name = ?", array($array['bkup_name']));
[5568]138    if (count($ret) > 0) {
139        $objErr->arrErr['bkup_name'] = "¥Ð¥Ã¥¯¥¢¥Ã¥×̾¤¬½ÅÊ£¤·¤Æ¤¤¤Þ¤¹¡£ÊÌ̾¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£";
140    }
[5563]141
[5452]142    return $objErr->arrErr;
143}
144
145// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ëºîÀ®
[5566]146function lfCreateBkupData($bkup_name){
[5506]147    global $objPage;
[5465]148    $objQuery = new SC_Query();
[5471]149    $csv_data = "";
[5692]150    $csv_autoinc = "";
[5550]151    $err = true;
[5452]152   
[5566]153    $bkup_dir = $objPage->bkup_dir;
[5925]154    if (!is_dir(dirname($bkup_dir))) $err = mkdir(dirname($bkup_dir));     
[5603]155    $bkup_dir = $bkup_dir . $bkup_name . "/";
[5592]156
[5452]157    // Á´¥Æ¡¼¥Ö¥ë¼èÆÀ
[5457]158    $arrTableList = lfGetTableList();
[5452]159   
[5462]160    // ³Æ¥Æ¡¼¥Ö¥ë¾ðÊó¤ò¼èÆÀ¤¹¤ë
161    foreach($arrTableList as $key => $val){
162       
[5551]163        if ($val != "dtb_bkup") {
[5489]164           
[5678]165            // ¼«Æ°ºÎÈÖ·¿¤Î¹½À®¤ò¼èÆÀ¤¹¤ë
[5692]166            $csv_autoinc .= lfGetAutoIncrement($val);
[5676]167           
[5551]168            // Á´¥Ç¡¼¥¿¤ò¼èÆÀ
[5819]169            if ($val == "dtb_pagelayout"){
170                $arrData = $objQuery->getAll("SELECT * FROM $val ORDER BY page_id");
171            }else{
172                $arrData = $objQuery->getAll("SELECT * FROM $val");
173            }
174           
[5551]175            // CSV¥Ç¡¼¥¿À¸À®
176            if (count($arrData) > 0) {
177               
178                // ¥«¥é¥à¤òCSV·Á¼°¤ËÀ°¤¨¤ë
179                $arrKyes = sfGetCommaList(array_keys($arrData[0]), false);
180               
181                // ¥Ç¡¼¥¿¤òCSV·Á¼°¤ËÀ°¤¨¤ë
182                $data = "";
183                foreach($arrData as $data_key => $data_val){
[5881]184                    $data .= sfGetCSVList($arrData[$data_key]);
[5551]185                }
186                // CSV½ÐÎϥǡ¼¥¿À¸À®
187                $csv_data .= $val . "\n";
188                $csv_data .= $arrKyes . "\n";
189                $csv_data .= $data;
190                $csv_data .= "\n";
191            }   
[5959]192           
193            // ¥¿¥¤¥à¥¢¥¦¥È¤òËɤ°
194            sfFlush();
[5551]195        }
[5462]196    }
[5542]197
[5603]198    $csv_file = $bkup_dir . "bkup_data.csv";
[5693]199    $csv_autoinc_file = $bkup_dir . "autoinc_data.csv";
[5881]200    mb_internal_encoding('EUC-JP');
[5506]201    // CSV½ÐÎÏ
[5509]202    // ¥Ç¥£¥ì¥¯¥È¥ê¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤ÐºîÀ®¤¹¤ë     
[5609]203    if (!is_dir(dirname($csv_file))) {
204        $err = mkdir(dirname($csv_file));
[5516]205    }
[5542]206    if ($err) {
[5693]207        // data¤òCSV½ÐÎÏ
[5599]208        $fp = fopen($csv_file,"w");
[5542]209        if($fp) {
[5794]210            if($csv_data != ""){
211                $err = fwrite($fp, $csv_data);
212            }
[5542]213            fclose($fp);
[5532]214        }
[5693]215       
216        // ¼«Æ°ºÎÈÖ¤òCSV½ÐÎÏ
217        $fp = fopen($csv_autoinc_file,"w");
218        if($fp) {
[5793]219            if($csv_autoinc != ""){
220                $err = fwrite($fp, $csv_autoinc);
221            }
[5693]222            fclose($fp);
223        }
[5528]224    }
[5543]225
[5820]226    // ³Æ¼ï¥Õ¥¡¥¤¥ë¥³¥Ô¡¼
[5602]227    if ($err) {
[5820]228        // ¾¦ÉʲèÁü¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼
[5719]229        // ¥Ç¥£¥ì¥¯¥È¥ê¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤ÐºîÀ®¤¹¤ë     
230        $image_dir = $bkup_dir . "save_image/";
231        if (!is_dir(dirname($image_dir))) $err = mkdir(dirname($image_dir));       
[5597]232        $copy_mess = "";
[5719]233        $copy_mess = sfCopyDir("../../upload/save_image/",$image_dir, $copy_mess);
[5820]234       
235        // ¥Æ¥ó¥×¥ì¡¼¥È¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼
236        // ¥Ç¥£¥ì¥¯¥È¥ê¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤ÐºîÀ®¤¹¤ë     
237        $templates_dir = $bkup_dir . "templates/";
238        if (!is_dir(dirname($templates_dir))) $err = mkdir(dirname($templates_dir));       
239        $copy_mess = "";
240        $copy_mess = sfCopyDir("../../user_data/templates/",$templates_dir, $copy_mess);
241       
242        // ¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼
243        // ¥Ç¥£¥ì¥¯¥È¥ê¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤ÐºîÀ®¤¹¤ë     
[5822]244        $inc_dir = $bkup_dir . "include/";
245        if (!is_dir(dirname($inc_dir))) $err = mkdir(dirname($inc_dir));       
[5820]246        $copy_mess = "";
[5822]247        $copy_mess = sfCopyDir("../../user_data/include/",$inc_dir, $copy_mess);
[5820]248   
249        // CSS¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼
250        // ¥Ç¥£¥ì¥¯¥È¥ê¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤ÐºîÀ®¤¹¤ë     
[5822]251        $css_dir = $bkup_dir . "css/";
252        if (!is_dir(dirname($css_dir))) $err = mkdir(dirname($css_dir));       
[5820]253        $copy_mess = "";
[5825]254        $copy_mess = sfCopyDir("../../user_data/css/",$css_dir, $copy_mess);
[5633]255
256        //°µ½Ì¥Õ¥é¥°TRUE¤Ïgzip°µ½Ì¤ò¤ª¤³¤Ê¤¦
257        $tar = new Archive_Tar($objPage->bkup_dir . $bkup_name.".tar.gz", TRUE);
[5645]258
259        //bkup¥Õ¥©¥ë¥À¤Ë°Üư¤¹¤ë
[5657]260        chdir($objPage->bkup_dir);
261
[5633]262        //°µ½Ì¤ò¤ª¤³¤Ê¤¦
[5653]263        $zip = $tar->create("./" . $bkup_name . "/");
[5652]264
[5634]265        // ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Ç¡¼¥¿¤Îºï½ü
[5826]266        if ($zip) sfDelFile($bkup_dir);
[5595]267    }
[5610]268
[5595]269    if (!$err) {
[5547]270        $arrErr['bkup_name'] = "¥Ð¥Ã¥¯¥¢¥Ã¥×¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£";
[5791]271        // ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Ç¡¼¥¿¤Îºï½ü
272        sfDelFile($bkup_dir);
[5542]273    }
[5547]274   
275    return $arrErr;
[5452]276}
277
[5670]278/* ÇÛÎó¤ÎÍ×ÁǤòCSV¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç½ÐÎϤ¹¤ë¡£*/
279function lfGetCSVList($array) {
280    if (count($array) > 0) {
281        foreach($array as $key => $val) {
[5672]282            if ($val == "") {
[5864]283                $line .= "NULL,";
[5670]284            }else{
[5868]285                $data = str_replace("'", "\'", $val);
[5864]286                $line .= "'".$data."',";
[5670]287            }
288        }
289        $line = ereg_replace(",$", "\n", $line);
290        return $line;
291    }else{
292        return false;
293    }
294}
295
[5457]296// Á´¥Æ¡¼¥Ö¥ë¥ê¥¹¥È¤ò¼èÆÀ¤¹¤ë
297function lfGetTableList(){
298    $objQuery = new SC_Query();
299   
300    if(DB_TYPE == "pgsql"){
[5551]301        $sql = "SELECT tablename FROM pg_tables WHERE tableowner = ? ORDER BY tablename ; ";
[5457]302        $arrRet = $objQuery->getAll($sql, array(DB_USER));
[5461]303        $arrRet = sfSwapArray($arrRet);
304        $arrRet = $arrRet['tablename'];
[5457]305    }else if(DB_TYPE == "mysql"){
[5767]306        $sql = "SHOW TABLES;";
307        $arrRet = $objQuery->getAll($sql);
[5769]308        $arrRet = sfSwapArray($arrRet);
[6453]309       
310        // ¥­¡¼¤ò¼èÆÀ
311        $arrKey = array_keys($arrRet);
312        $arrRet = $arrRet[$arrKey[0]];
[5457]313    }
[5461]314    return $arrRet;
[5457]315}
[5452]316
[5678]317// ¼«Æ°ºÎÈÖ·¿¤òCSV½ÐÎÏ·Á¼°¤ËÊÑ´¹¤¹¤ë
[5677]318function lfGetAutoIncrement($table_name){
[5678]319    $arrColList = lfGetColumnList($table_name);
[5683]320    $ret = "";
[5776]321   
[5797]322    if(DB_TYPE == "pgsql"){
[5799]323        $match = 'nextval(\'';
324    }else if(DB_TYPE == "mysql"){
[5798]325        $match = "auto_incr";
[5797]326    }
327
[5776]328    foreach($arrColList['col_def'] as $key => $val){
[5800]329       
[5797]330        if (substr($val,0,9) == $match) {
[5776]331            $col = $arrColList['col_name'][$key];
[5763]332            $autoVal = lfGetAutoIncrementVal($table_name, $col);
333            $ret .= "$table_name,$col,$autoVal\n";
[5683]334        }
[5679]335    }
[5678]336   
[5683]337    return $ret;
[5678]338}
339
340// ¥Æ¡¼¥Ö¥ë¹½À®¤ò¼èÆÀ¤¹¤ë
341function lfGetColumnList($table_name){
[5462]342    $objQuery = new SC_Query();
[5452]343
[5462]344    if(DB_TYPE == "pgsql"){
[5678]345        $sql = "SELECT
346                    a.attname, t.typname, a.attnotnull, d.adsrc as defval, a.atttypmod, a.attnum as fldnum, e.description
347                FROM
348                    pg_class c,
349                    pg_type t,
350                    pg_attribute a left join pg_attrdef d on (a.attrelid=d.adrelid and a.attnum=d.adnum)
351                                   left join pg_description e on (a.attrelid=e.objoid and a.attnum=e.objsubid)
352                WHERE (c.relname=?) AND (c.oid=a.attrelid) AND (a.atttypid=t.oid) AND a.attnum > 0
353                ORDER BY fldnum";
[5783]354        $arrColList = $objQuery->getAll($sql, array($table_name));
[5788]355        $arrColList = sfSwapArray($arrColList);
[5778]356       
[5776]357        $arrRet['col_def'] = $arrColList['defval'];
358        $arrRet['col_name'] = $arrColList['attname'];
[5774]359    }else if(DB_TYPE == "mysql"){
[5775]360        $sql = "SHOW COLUMNS FROM $table_name";
[5783]361        $arrColList = $objQuery->getAll($sql);
[5788]362        $arrColList = sfSwapArray($arrColList);
[5778]363       
[5801]364        $arrRet['col_def'] = $arrColList['Extra'];
365        $arrRet['col_name'] = $arrColList['Field'];
[5678]366    }
[5781]367    return $arrRet;
[5678]368}
369
370// ¼«Æ°ºÎÈÖ·¿¤ÎÃͤò¼èÆÀ¤¹¤ë
[5687]371function lfGetAutoIncrementVal($table_name , $colname = ""){
[5678]372    $objQuery = new SC_Query();
[5684]373    $ret = "";
[5678]374
375    if(DB_TYPE == "pgsql"){
[5929]376        $ret = $objQuery->nextval($table_name, $colname) - 1;
[5795]377    }else if(DB_TYPE == "mysql"){
378        $sql = "SHOW TABLE STATUS LIKE ?";
[5808]379        $arrData = $objQuery->getAll($sql, array($table_name));
380        $ret = $arrData[0]['Auto_increment'];
[5462]381    }
[5684]382    return $ret;
[5462]383}
[5452]384
[5551]385// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Æ¡¼¥Ö¥ë¤Ë¥Ç¡¼¥¿¤ò¹¹¿·¤¹¤ë
386function lfUpdBkupData($data){
387    $objQuery = new SC_Query();
388   
[5569]389    $sql = "INSERT INTO dtb_bkup (bkup_name,bkup_memo,create_date) values (?,?,now())";
390    $objQuery->query($sql, array($data['bkup_name'],$data['bkup_memo']));
[5551]391}
[5452]392
[5570]393// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Æ¡¼¥Ö¥ë¤«¤é¥Ç¡¼¥¿¤ò¼èÆÀ¤¹¤ë
394function lfGetBkupData($where = "", $data = array()){
395    $objQuery = new SC_Query();
396   
[5571]397    $sql = "SELECT bkup_name, bkup_memo, create_date FROM dtb_bkup ";
[5570]398    if ($where != "")   $sql .= $where;
399   
400    $ret = $objQuery->getall($sql,$data);
401   
402    return $ret;
403}
[5452]404
[5645]405// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤ò¥ê¥¹¥È¥¢¤¹¤ë
406function lfRestore($bkup_name){
[5658]407    global $objPage;
[5729]408    $objQuery = new SC_Query("", false);
[5658]409    $csv_data = "";
410    $err = true;
[5645]411   
[5717]412    $bkup_dir = $objPage->bkup_dir . $bkup_name . "/";
[5658]413   
[5828]414    //¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥©¥ë¥À¤Ë°Üư¤¹¤ë
[5718]415    chdir($objPage->bkup_dir);
[5645]416   
417    //°µ½Ì¥Õ¥é¥°TRUE¤Ïgzip²òÅà¤ò¤ª¤³¤Ê¤¦
[5660]418    $tar = new Archive_Tar($bkup_name . ".tar.gz", TRUE);
[5645]419   
420    //»ØÄꤵ¤ì¤¿¥Õ¥©¥ë¥ÀÆâ¤Ë²òÅह¤ë
[5661]421    $err = $tar->extract("./");
[5659]422   
[5661]423    // ̵»ö²òÅà¤Ç¤­¤ì¤Ð¡¢¥ê¥¹¥È¥¢¤ò¹Ô¤¦
424    if ($err) {
[5722]425       
[5811]426        // ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó³«»Ï
[5812]427        $objQuery->begin();
[5724]428       
[5727]429        // DB¤ò¥¯¥ê¥¢
[5729]430        $err = lfDeleteAll($objQuery);
[5974]431       
[5727]432        // INSERT¼Â¹Ô
433        if ($err) $err = lfExeInsertSQL($objQuery, $bkup_dir . "bkup_data.csv");
434
[5760]435        // ¼«Æ°ºÎÈÖ¤ÎÃͤò¥»¥Ã¥È
[5766]436        if ($err) lfSetAutoInc($objQuery, $bkup_dir . "autoinc_data.csv");
[5760]437
[5827]438        // ³Æ¼ï¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼
[5727]439        if ($err) {
440            // ²èÁü¤Î¥³¥Ô¡¼
441            $image_dir = $bkup_dir . "save_image/";
442            $copy_mess = "";
[5832]443            $copy_mess = sfCopyDir($image_dir, "../../upload/save_image/", $copy_mess, true);       
[5726]444   
[5827]445            // ¥Æ¥ó¥×¥ì¡¼¥È¤Î¥³¥Ô¡¼
[5830]446            $tmp_dir = $bkup_dir . "templates/";
[5827]447            $copy_mess = "";
[5832]448            $copy_mess = sfCopyDir($tmp_dir, "../../user_data/templates/", $copy_mess, true);       
[5827]449           
450            // ¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼
451            $inc_dir = $bkup_dir . "include/";
452            $copy_mess = "";
[5832]453            $copy_mess = sfCopyDir($inc_dir, "../../user_data/include/", $copy_mess, true);     
[5827]454           
455            // CSS¤Î¥³¥Ô¡¼
456            $css_dir = $bkup_dir . "css/";
457            $copy_mess = "";
[5832]458            $copy_mess = sfCopyDir($css_dir, "../../user_data/css/", $copy_mess, true);     
[5827]459
[5727]460            // ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Ç¡¼¥¿¤Îºï½ü
461            sfDelFile($bkup_dir);
[5725]462        }
[5812]463
[5724]464        // ¥ê¥¹¥È¥¢À®¸ù¤Ê¤é¥³¥ß¥Ã¥È¼ºÇԤʤé¥í¡¼¥ë¥Ð¥Ã¥¯
465        if ($err) {
[5812]466            $objQuery->commit();
[5725]467            $objPage->restore_msg = "¥ê¥¹¥È¥¢½ªÎ»¤·¤Þ¤·¤¿¡£";
[5742]468            $objPage->restore_err = true;
[5724]469        }else{
[5812]470            $objQuery->rollback();
[5725]471            $objPage->restore_msg = "¥ê¥¹¥È¥¢¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£";
[5750]472            $objPage->restore_name = $bkup_name;
[5742]473            $objPage->restore_err = false;
[5724]474        }
[5661]475    }
[5645]476}
477
[5702]478// CSV¥Õ¥¡¥¤¥ë¤«¤é¥¤¥ó¥µ¡¼¥È¼Â¹Ô
[5722]479function lfExeInsertSQL($objQuery, $csv){
[5752]480    global $objPage;
[5701]481
[5665]482    $sql = "";
[5669]483    $base_sql = "";
[5665]484    $tbl_flg = false;
485    $col_flg = false;
[5724]486    $ret = true;
[5819]487    $pagelayout_flg = false;
[5752]488    $mode = $objPage->mode;
[5881]489   
490    // csv¥Õ¥¡¥¤¥ë¤«¤é¥Ç¡¼¥¿¤Î¼èÆÀ
491    $fp = fopen($csv, "r");
[5892]492    while (!feof($fp)) {
493        $data = fgetcsv($fp, 1000000);
494       
[5668]495        //¶õÇò¹Ô¤Î¤È¤­¤Ï¥Æ¡¼¥Ö¥ëÊѹ¹
[5896]496        if (count($data) <= 1 and $data[0] == "") {
[5669]497            $base_sql = "";
[5665]498            $tbl_flg = false;
499            $col_flg = false;
500            continue;
[5663]501        }
[5665]502       
[5668]503        // ¥Æ¡¼¥Ö¥ë¥Õ¥é¥°¤¬¤¿¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¥Æ¡¼¥Ö¥ë̾¥»¥Ã¥È
[5665]504        if (!$tbl_flg) {
[5890]505            $base_sql = "INSERT INTO $data[0]";
[5665]506            $tbl_flg = true;
[5819]507           
[6347]508            if($data[0] == "dtb_pagelayout"){
[5819]509                $pagelayout_flg = true;
510            }
511           
[5665]512            continue;
513        }
514       
[5668]515        // ¥«¥é¥à¥Õ¥é¥°¤¬¤¿¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¥«¥é¥à¥»¥Ã¥È
[5754]516        if (!$col_flg) {
517            if ($mode != "restore_config"){
[5881]518                $base_sql .= " ( $data[0] ";
519                for($i = 1; $i < count($data); $i++){
520                    $base_sql .= "," . $data[$i];
521                }
522                $base_sql .= " ) ";
[5754]523            }
[5665]524            $col_flg = true;
525            continue;
526        }
[5753]527
[5668]528        // ¥¤¥ó¥µ¡¼¥È¤¹¤ëÃͤò¥»¥Ã¥È
[5882]529        $sql = $base_sql . "VALUES ( ? ";
[5881]530        for($i = 1; $i < count($data); $i++){
[5882]531            $sql .= ", ?";
[5881]532        }
533        $sql .= " );";
[5882]534        $err = $objQuery->query($sql, $data);
[5863]535
[5737]536        // ¥¨¥é¡¼¤¬¤¢¤ì¤Ð½ªÎ»
[5758]537        if ($err->message != ""){
[5737]538            return false;
539        }
[5819]540       
541        if ($pagelayout_flg) {
542            // dtb_pagelayout¤Î¾ì¹ç¤Ë¤ÏºÇ½é¤Î¥Ç¡¼¥¿¤Ïpage_id = 0¤Ë¤¹¤ë
[5977]543            $sql = "UPDATE dtb_pagelayout SET page_id = '0'";
[5819]544            $objQuery->query($sql);
545            $pagelayout_flg = false;
546        }
[6347]547
[5957]548        // ¥¿¥¤¥à¥¢¥¦¥È¤òËɤ°
[5981]549        sfFlush();
[5663]550    }
[5892]551    fclose($fp);
[5964]552   
[5724]553    return $ret;
[5663]554}
[5645]555
[5760]556// ¼«Æ°ºÎÈÖ¤ò¥»¥Ã¥È
557function lfSetAutoInc($objQuery, $csv){
558    // csv¥Õ¥¡¥¤¥ë¤«¤é¥Ç¡¼¥¿¤Î¼èÆÀ
559    $arrCsvData = file($csv);
[5810]560
[5760]561    foreach($arrCsvData as $key => $val){
[5761]562        $arrData = split(",", trim($val));
[5981]563       
[5982]564        if ($arrData[2] == 0)   $arrData[2] = 1;
[5762]565        $objQuery->setval($arrData[0], $arrData[1], $arrData[2]);
[5760]566    }
567}
568
[5702]569// DB¤òÁ´¤Æ¥¯¥ê¥¢¤¹¤ë
[5722]570function lfDeleteAll($objQuery){
[5724]571    $ret = true;
[5703]572
[5702]573    $arrTableList = lfGetTableList();
574   
[5703]575    foreach($arrTableList as $key => $val){
[5711]576        // ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Æ¡¼¥Ö¥ë¤Ïºï½ü¤·¤Ê¤¤
577        if ($val != "dtb_bkup") {
[5721]578            $trun_sql = "DELETE FROM $val;";
[5724]579            $ret = $objQuery->query($trun_sql);
580           
581            if (!$ret) return $ret;
[5711]582        }
[5703]583    }
[5724]584   
585    return $ret;
[5702]586}
[5645]587
[5706]588// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Æ¡¼¥Ö¥ë¤òºîÀ®¤¹¤ë
[5708]589function lfCreateBkupTable(){
[5706]590    $objQuery = new SC_Query();
591   
592    // ¥Æ¡¼¥Ö¥ë¤Î¸ºß¥Á¥§¥Ã¥¯
593    $arrTableList = lfGetTableList();
[5916]594
[5772]595    if(!in_array("dtb_bkup", $arrTableList)){
[5706]596        // ¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤ÐºîÀ®
597        $cre_sql = "
598            create table dtb_bkup
599            (
600                bkup_name   text,
601                bkup_memo   text,
602                create_date timestamp
603            );
604        ";
605       
606        $objQuery->query($cre_sql);
607    }
608}
[5663]609
[5819]610?>
Note: See TracBrowser for help on using the repository browser.