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

Revision 6081, 14.5 KB checked in by naka, 20 years ago (diff)

* empty log message *

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