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

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