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

Revision 8876, 14.7 KB checked in by kakinaka, 20 years ago (diff)

blank

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