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

Revision 5696, 9.0 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
3require_once("../require.php");
4require_once("../../../data/module/Tar.php");
5//require_once("./Tar.php");
6
7//¥Ú¡¼¥¸´ÉÍý¥¯¥é¥¹
8class LC_Page {
9    //¥³¥ó¥¹¥È¥é¥¯¥¿
10    function LC_Page() {
11        //¥á¥¤¥ó¥Æ¥ó¥×¥ì¡¼¥È¤Î»ØÄê
12        $this->tpl_mainpage = 'system/bkup.tpl';
13        $this->tpl_subnavi = 'system/subnavi.tpl';
14        $this->tpl_mainno = 'system';       
15        $this->tpl_subno = 'bkup';
16        $this->tpl_subtitle = '¥Ð¥Ã¥¯¥¢¥Ã¥×´ÉÍý';
17       
18//      $this->bkup_dir = ROOT_DIR . USER_DIR . "bkup/";
19        $this->bkup_dir = ROOT_DIR . "html/test/" . "bkup/";
20//      $this->bkup_dir = "../../test/bkup/";
21    }
22}
23
24$objPage = new LC_Page();
25$objView = new SC_AdminView();
26$objQuery = new SC_Query();
27
28// ¥»¥Ã¥·¥ç¥ó¥¯¥é¥¹
29$objSess = new SC_Session();
30// ǧ¾Ú²ÄÈݤÎȽÄê
31sfIsSuccess($objSess);
32
33switch($_POST['mode']) {
34// ¥Ð¥Ã¥¯¥¢¥Ã¥×¤òºîÀ®¤¹¤ë
35case 'bkup':
36    // ÆþÎÏʸ»úÎó¤ÎÊÑ´¹
37    $arrData = lfConvertParam($_POST);
38
39    // ¥¨¥é¡¼¥Á¥§¥Ã¥¯
40    $arrErr = lfCheckError($arrData);
41
42    // ¥¨¥é¡¼¤¬¤Ê¤±¤ì¤Ð¥Ð¥Ã¥¯¥¢¥Ã¥×½èÍý¤ò¹Ô¤¦   
43    if (count($arrErr) <= 0) {
44        // ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ëºîÀ®
45        $arrErr = lfCreateBkupData($arrData['bkup_name']);
46       
47        // DB¤Ë¥Ç¡¼¥¿¹¹¿·
48        if (count($arrErr) <= 0) {
49            lfUpdBkupData($arrData);
50        }else{
51            $arrForm = $arrData;
52        }
53    }else{
54        $arrForm = $arrData;
55    }
56
57    break;
58   
59// ¥ê¥¹¥È¥¢
60case 'restore':
61    lfRestore($_POST['list_name']);
62
63    break;
64   
65// ºï½ü
66case 'del':
67    // ¥Õ¥¡¥¤¥ë¤Îºï½ü
68    unlink($objPage->bkup_dir.$_POST['list_name'] . ".tar.gz");
69
70    // DB¤«¤éºï½ü
71    $delsql = "DELETE FROM dtb_bkup WHERE bkup_name = ?";
72    $objQuery->query($delsql, array($_POST['list_name']));
73
74    break;
75default:
76    break;
77}
78
79// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥ê¥¹¥È¤ò¼èÆÀ¤¹¤ë
80$arrBkupList = lfGetBkupData("ORDER BY create_date DESC");
81
82// ¥Æ¥ó¥×¥ì¡¼¥È¥Õ¥¡¥¤¥ë¤ËÅϤ¹¥Ç¡¼¥¿¤ò¥»¥Ã¥È
83$objPage->arrErr = $arrErr;
84$objPage->arrForm = $arrForm;
85$objPage->arrBkupList = $arrBkupList;
86
87$objView->assignobj($objPage);      //ÊÑ¿ô¤ò¥Æ¥ó¥×¥ì¡¼¥È¤Ë¥¢¥µ¥¤¥ó¤¹¤ë
88$objView->display(MAIN_FRAME);      //¥Æ¥ó¥×¥ì¡¼¥È¤Î½ÐÎÏ
89
90//-------------------------------------------------------------------------------------------------------
91/* ¼èÆÀʸ»úÎó¤ÎÊÑ´¹ */
92function lfConvertParam($array) {
93    /*
94     *  ʸ»úÎó¤ÎÊÑ´¹
95     *  K :  ¡ÖȾ³Ñ(ŽÊŽÝ޶ޏ)ÊÒ²¾Ì¾¡×¤ò¡ÖÁ´³ÑÊÒ²¾Ì¾¡×¤ËÊÑ´¹
96     *  C :  ¡ÖÁ´³Ñ¤Ò¤é²¾Ì¾¡×¤ò¡ÖÁ´³Ñ¤«¤¿²¾Ì¾¡×¤ËÊÑ´¹
97     *  V :  ÂùÅÀÉÕ¤­¤Îʸ»ú¤ò°ìʸ»ú¤ËÊÑ´¹¡£"K","H"¤È¶¦¤Ë»ÈÍѤ·¤Þ¤¹ 
98     *  n :  ¡ÖÁ´³Ñ¡×¿ô»ú¤ò¡ÖȾ³Ñ(ŽÊŽÝ޶ޏ)¡×¤ËÊÑ´¹
99     *  a :  Á´³Ñ±Ñ¿ô»ú¤òȾ³Ñ±Ñ¿ô»ú¤ËÊÑ´¹¤¹¤ë
100     */
101    $arrConvList['bkup_name'] = "a";
102    $arrConvList['bkup_memo'] = "KVa";
103   
104    // ʸ»úÊÑ´¹
105    foreach ($arrConvList as $key => $val) {
106        // POST¤µ¤ì¤Æ¤­¤¿ÃͤΤßÊÑ´¹¤¹¤ë¡£
107        if(isset($array[$key])) {
108            $array[$key] = mb_convert_kana($array[$key] ,$val);
109        }
110    }
111    return $array;
112}
113
114// ¥¨¥é¡¼¥Á¥§¥Ã¥¯
115function lfCheckError($array){
116    $objErr = new SC_CheckError($array);
117   
118    $objErr->doFunc(array("¥Ð¥Ã¥¯¥¢¥Ã¥×̾", "bkup_name", STEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK","NO_SPTAB","ALNUM_CHECK"));
119    $objErr->doFunc(array("¥Ð¥Ã¥¯¥¢¥Ã¥×¥á¥â", "bkup_memo", MTEXT_LEN), array("MAX_LENGTH_CHECK"));
120   
121    // ½ÅÊ£¥Á¥§¥Ã¥¯
122    $ret = lfGetBkupData("WHERE bkup_name = ?", array($array['bkup_name']));
123    if (count($ret) > 0) {
124        $objErr->arrErr['bkup_name'] = "¥Ð¥Ã¥¯¥¢¥Ã¥×̾¤¬½ÅÊ£¤·¤Æ¤¤¤Þ¤¹¡£ÊÌ̾¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£";
125    }
126
127    return $objErr->arrErr;
128}
129
130// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ëºîÀ®
131function lfCreateBkupData($bkup_name){
132    global $objPage;
133    $objQuery = new SC_Query();
134    $csv_data = "";
135    $csv_autoinc = "";
136    $err = true;
137   
138    $bkup_dir = $objPage->bkup_dir;
139    $bkup_dir = $bkup_dir . $bkup_name . "/";
140
141    // Á´¥Æ¡¼¥Ö¥ë¼èÆÀ
142    $arrTableList = lfGetTableList();
143   
144    // ³Æ¥Æ¡¼¥Ö¥ë¾ðÊó¤ò¼èÆÀ¤¹¤ë
145    foreach($arrTableList as $key => $val){
146       
147        if ($val != "dtb_bkup") {
148           
149            // ¼«Æ°ºÎÈÖ·¿¤Î¹½À®¤ò¼èÆÀ¤¹¤ë
150            $csv_autoinc .= lfGetAutoIncrement($val);
151           
152            //sfprintr($csv_autoinc);
153           
154            // Á´¥Ç¡¼¥¿¤ò¼èÆÀ
155            $arrData = $objQuery->getAll("SELECT * FROM $val");
156   
157            // CSV¥Ç¡¼¥¿À¸À®
158            if (count($arrData) > 0) {
159               
160                // ¥«¥é¥à¤òCSV·Á¼°¤ËÀ°¤¨¤ë
161                $arrKyes = sfGetCommaList(array_keys($arrData[0]), false);
162               
163                // ¥Ç¡¼¥¿¤òCSV·Á¼°¤ËÀ°¤¨¤ë
164                $data = "";
165                foreach($arrData as $data_key => $data_val){
166                    $data .= lfGetCSVList($arrData[$data_key]);
167                }
168               
169                // CSV½ÐÎϥǡ¼¥¿À¸À®
170                $csv_data .= $val . "\n";
171                $csv_data .= $arrKyes . "\n";
172                $csv_data .= $data;
173                $csv_data .= "\n";
174            }   
175        }
176    }
177
178    $csv_file = $bkup_dir . "bkup_data.csv";
179    $csv_autoinc_file = $bkup_dir . "autoinc_data.csv";
180    // CSV½ÐÎÏ
181    // ¥Ç¥£¥ì¥¯¥È¥ê¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤ÐºîÀ®¤¹¤ë     
182    if (!is_dir(dirname($csv_file))) {
183        $err = mkdir(dirname($csv_file));
184    }
185    if ($err) {
186        // data¤òCSV½ÐÎÏ
187        $fp = fopen($csv_file,"w");
188        if($fp) {
189            $err = fwrite($fp, $csv_data);
190            fclose($fp);
191        }
192       
193        // ¼«Æ°ºÎÈÖ¤òCSV½ÐÎÏ
194        $fp = fopen($csv_autoinc_file,"w");
195        if($fp) {
196            $err = fwrite($fp, $csv_autoinc);
197            fclose($fp);
198        }
199    }
200
201    // ¾¦ÉʲèÁü¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼
202    if ($err) {
203        $copy_mess = "";
204        $copy_mess = sfCopyDir("../../upload/save_image/", $bkup_dir, $copy_mess);
205
206        //°µ½Ì¥Õ¥é¥°TRUE¤Ïgzip°µ½Ì¤ò¤ª¤³¤Ê¤¦
207        $tar = new Archive_Tar($objPage->bkup_dir . $bkup_name.".tar.gz", TRUE);
208
209        //bkup¥Õ¥©¥ë¥À¤Ë°Üư¤¹¤ë
210        chdir($objPage->bkup_dir);
211
212        //°µ½Ì¤ò¤ª¤³¤Ê¤¦
213        $zip = $tar->create("./" . $bkup_name . "/");
214
215        // ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Ç¡¼¥¿¤Îºï½ü
216        if ($zip) sfDelFile($bkup_dir);
217    }
218
219    if (!$err) {
220        $arrErr['bkup_name'] = "¥Ð¥Ã¥¯¥¢¥Ã¥×¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£";
221    }
222   
223    return $arrErr;
224}
225
226/* ÇÛÎó¤ÎÍ×ÁǤòCSV¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç½ÐÎϤ¹¤ë¡£*/
227function lfGetCSVList($array) {
228    if (count($array) > 0) {
229        foreach($array as $key => $val) {
230            if ($val == "") {
231                $line .= "NULL,";
232            }else{
233                $line .= "'".$val."',";
234            }
235        }
236        $line = ereg_replace(",$", "\n", $line);
237        return $line;
238    }else{
239        return false;
240    }
241}
242
243// Á´¥Æ¡¼¥Ö¥ë¥ê¥¹¥È¤ò¼èÆÀ¤¹¤ë
244function lfGetTableList(){
245    $objQuery = new SC_Query();
246   
247    if(DB_TYPE == "pgsql"){
248        $sql = "SELECT tablename FROM pg_tables WHERE tableowner = ? ORDER BY tablename ; ";
249        $arrRet = $objQuery->getAll($sql, array(DB_USER));
250        $arrRet = sfSwapArray($arrRet);
251        $arrRet = $arrRet['tablename'];
252    }else if(DB_TYPE == "mysql"){
253       
254    }
255   
256    return $arrRet;
257}
258
259// ¼«Æ°ºÎÈÖ·¿¤òCSV½ÐÎÏ·Á¼°¤ËÊÑ´¹¤¹¤ë
260function lfGetAutoIncrement($table_name){
261    $arrColList = lfGetColumnList($table_name);
262    $ret = "";
263    foreach($arrColList['defval'] as $key => $val){
264        if (substr($val,0,9) == 'nextval(\'') {
265            $autoVal = lfGetAutoIncrementVal($table_name, $arrColList['attname'][$key]);
266            $ret .= "$table_name,$autoVal\n";
267        }
268    }
269   
270    return $ret;
271}
272
273// ¥Æ¡¼¥Ö¥ë¹½À®¤ò¼èÆÀ¤¹¤ë
274function lfGetColumnList($table_name){
275    $objQuery = new SC_Query();
276
277    if(DB_TYPE == "pgsql"){
278        $sql = "SELECT
279                    a.attname, t.typname, a.attnotnull, d.adsrc as defval, a.atttypmod, a.attnum as fldnum, e.description
280                FROM
281                    pg_class c,
282                    pg_type t,
283                    pg_attribute a left join pg_attrdef d on (a.attrelid=d.adrelid and a.attnum=d.adnum)
284                                   left join pg_description e on (a.attrelid=e.objoid and a.attnum=e.objsubid)
285                WHERE (c.relname=?) AND (c.oid=a.attrelid) AND (a.atttypid=t.oid) AND a.attnum > 0
286                ORDER BY fldnum";
287        $arrRet = $objQuery->getAll($sql, array($table_name));
288    }
289   
290    return sfSwapArray($arrRet);
291}
292
293// ¼«Æ°ºÎÈÖ·¿¤ÎÃͤò¼èÆÀ¤¹¤ë
294function lfGetAutoIncrementVal($table_name , $colname = ""){
295    $objQuery = new SC_Query();
296    $ret = "";
297
298    if(DB_TYPE == "pgsql"){
299        $ret = $objQuery->nextval($table_name, $colname);
300    }
301    return $ret;
302}
303
304// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Æ¡¼¥Ö¥ë¤Ë¥Ç¡¼¥¿¤ò¹¹¿·¤¹¤ë
305function lfUpdBkupData($data){
306    $objQuery = new SC_Query();
307   
308    $sql = "INSERT INTO dtb_bkup (bkup_name,bkup_memo,create_date) values (?,?,now())";
309    $objQuery->query($sql, array($data['bkup_name'],$data['bkup_memo']));
310}
311
312// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Æ¡¼¥Ö¥ë¤«¤é¥Ç¡¼¥¿¤ò¼èÆÀ¤¹¤ë
313function lfGetBkupData($where = "", $data = array()){
314    $objQuery = new SC_Query();
315   
316    $sql = "SELECT bkup_name, bkup_memo, create_date FROM dtb_bkup ";
317    if ($where != "")   $sql .= $where;
318   
319    $ret = $objQuery->getall($sql,$data);
320   
321    return $ret;
322}
323
324// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤ò¥ê¥¹¥È¥¢¤¹¤ë
325function lfRestore($bkup_name){
326    global $objPage;
327    $objQuery = new SC_Query();
328    $csv_data = "";
329    $err = true;
330   
331    $bkup_dir = $objPage->bkup_dir;
332   
333    //file¥Õ¥©¥ë¥À¤Ë°Üư¤¹¤ë
334    chdir($bkup_dir);
335   
336    //°µ½Ì¥Õ¥é¥°TRUE¤Ïgzip²òÅà¤ò¤ª¤³¤Ê¤¦
337    $tar = new Archive_Tar($bkup_name . ".tar.gz", TRUE);
338   
339    //»ØÄꤵ¤ì¤¿¥Õ¥©¥ë¥ÀÆâ¤Ë²òÅह¤ë
340    $err = $tar->extract("./");
341   
342    // ̵»ö²òÅà¤Ç¤­¤ì¤Ð¡¢¥ê¥¹¥È¥¢¤ò¹Ô¤¦
343    if ($err) {
344        // INSERTʸºîÀ®
345        $ins_sql = lfCreateInsertSQL($bkup_dir . $bkup_name . "/bkup_data.csv");
346    }
347   
348    sfprintr(split(";", $ins_sql));
349   
350}
351
352// CSV¥Õ¥¡¥¤¥ë¤«¤é¥¤¥ó¥µ¡¼¥ÈʸºîÀ®
353function lfCreateInsertSQL($csv){
354    // csv¥Õ¥¡¥¤¥ë¤«¤é¥Ç¡¼¥¿¤Î¼èÆÀ
355    $arrCsvData = file($csv);
356   
357    $sql = "";
358    $base_sql = "";
359    $tbl_flg = false;
360    $col_flg = false;
361   
362    foreach($arrCsvData as $key => $val){
363        $data = trim($val);
364        //¶õÇò¹Ô¤Î¤È¤­¤Ï¥Æ¡¼¥Ö¥ëÊѹ¹
365        if ($data == "") {
366            $base_sql = "";
367            $tbl_flg = false;
368            $col_flg = false;
369            continue;
370        }
371       
372        // ¥Æ¡¼¥Ö¥ë¥Õ¥é¥°¤¬¤¿¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¥Æ¡¼¥Ö¥ë̾¥»¥Ã¥È
373        if (!$tbl_flg) {
374            $base_sql = "INSERT INTO $data ";
375            $tbl_flg = true;
376            continue;
377        }
378       
379        // ¥«¥é¥à¥Õ¥é¥°¤¬¤¿¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¥«¥é¥à¥»¥Ã¥È
380        if (!$col_flg) {
381            $base_sql .= " ($data) VALUES ";
382            $col_flg = true;
383            continue;
384        }
385       
386        // ¥¤¥ó¥µ¡¼¥È¤¹¤ëÃͤò¥»¥Ã¥È
387        $sql .= $base_sql . " ($data);";
388    }
389   
390    return $sql;
391}
392
393
394
395?>
Note: See TracBrowser for help on using the repository browser.