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

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