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

Revision 5651, 7.2 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 = "../../test/bkup/";
20    }
21}
22
23$objPage = new LC_Page();
24$objView = new SC_AdminView();
25$objQuery = new SC_Query();
26
27// ¥»¥Ã¥·¥ç¥ó¥¯¥é¥¹
28$objSess = new SC_Session();
29// ǧ¾Ú²ÄÈݤÎȽÄê
30sfIsSuccess($objSess);
31
32switch($_POST['mode']) {
33// ¥Ð¥Ã¥¯¥¢¥Ã¥×¤òºîÀ®¤¹¤ë
34case 'bkup':
35    // ÆþÎÏʸ»úÎó¤ÎÊÑ´¹
36    $arrData = lfConvertParam($_POST);
37
38    // ¥¨¥é¡¼¥Á¥§¥Ã¥¯
39    $arrErr = lfCheckError($arrData);
40
41    // ¥¨¥é¡¼¤¬¤Ê¤±¤ì¤Ð¥Ð¥Ã¥¯¥¢¥Ã¥×½èÍý¤ò¹Ô¤¦   
42    if (count($arrErr) <= 0) {
43        // ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ëºîÀ®
44        $arrErr = lfCreateBkupData($arrData['bkup_name']);
45       
46        // DB¤Ë¥Ç¡¼¥¿¹¹¿·
47        if (count($arrErr) <= 0) {
48            lfUpdBkupData($arrData);
49        }else{
50            $arrForm = $arrData;
51        }
52    }else{
53        $arrForm = $arrData;
54    }
55
56    break;
57   
58// ¥ê¥¹¥È¥¢
59case 'restore':
60    lfRestore($_POST['list_name']);
61
62    break;
63   
64// ºï½ü
65case 'del':
66    // ¥Õ¥¡¥¤¥ë¤Îºï½ü
67    unlink($objPage->bkup_dir.$_POST['list_name'] . ".tar.gz");
68
69    // DB¤«¤éºï½ü
70    $delsql = "DELETE FROM dtb_bkup WHERE bkup_name = ?";
71    $objQuery->query($delsql, array($_POST['list_name']));
72
73    break;
74default:
75    break;
76}
77
78// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥ê¥¹¥È¤ò¼èÆÀ¤¹¤ë
79$arrBkupList = lfGetBkupData("ORDER BY create_date DESC");
80
81// ¥Æ¥ó¥×¥ì¡¼¥È¥Õ¥¡¥¤¥ë¤ËÅϤ¹¥Ç¡¼¥¿¤ò¥»¥Ã¥È
82$objPage->arrErr = $arrErr;
83$objPage->arrForm = $arrForm;
84$objPage->arrBkupList = $arrBkupList;
85
86$objView->assignobj($objPage);      //ÊÑ¿ô¤ò¥Æ¥ó¥×¥ì¡¼¥È¤Ë¥¢¥µ¥¤¥ó¤¹¤ë
87$objView->display(MAIN_FRAME);      //¥Æ¥ó¥×¥ì¡¼¥È¤Î½ÐÎÏ
88
89//-------------------------------------------------------------------------------------------------------
90/* ¼èÆÀʸ»úÎó¤ÎÊÑ´¹ */
91function lfConvertParam($array) {
92    /*
93     *  ʸ»úÎó¤ÎÊÑ´¹
94     *  K :  ¡ÖȾ³Ñ(ŽÊŽÝ޶ޏ)ÊÒ²¾Ì¾¡×¤ò¡ÖÁ´³ÑÊÒ²¾Ì¾¡×¤ËÊÑ´¹
95     *  C :  ¡ÖÁ´³Ñ¤Ò¤é²¾Ì¾¡×¤ò¡ÖÁ´³Ñ¤«¤¿²¾Ì¾¡×¤ËÊÑ´¹
96     *  V :  ÂùÅÀÉÕ¤­¤Îʸ»ú¤ò°ìʸ»ú¤ËÊÑ´¹¡£"K","H"¤È¶¦¤Ë»ÈÍѤ·¤Þ¤¹ 
97     *  n :  ¡ÖÁ´³Ñ¡×¿ô»ú¤ò¡ÖȾ³Ñ(ŽÊŽÝ޶ޏ)¡×¤ËÊÑ´¹
98     *  a :  Á´³Ñ±Ñ¿ô»ú¤òȾ³Ñ±Ñ¿ô»ú¤ËÊÑ´¹¤¹¤ë
99     */
100    $arrConvList['bkup_name'] = "a";
101    $arrConvList['bkup_memo'] = "KVa";
102   
103    // ʸ»úÊÑ´¹
104    foreach ($arrConvList as $key => $val) {
105        // POST¤µ¤ì¤Æ¤­¤¿ÃͤΤßÊÑ´¹¤¹¤ë¡£
106        if(isset($array[$key])) {
107            $array[$key] = mb_convert_kana($array[$key] ,$val);
108        }
109    }
110    return $array;
111}
112
113// ¥¨¥é¡¼¥Á¥§¥Ã¥¯
114function lfCheckError($array){
115    $objErr = new SC_CheckError($array);
116   
117    $objErr->doFunc(array("¥Ð¥Ã¥¯¥¢¥Ã¥×̾", "bkup_name", STEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK","NO_SPTAB","ALNUM_CHECK"));
118    $objErr->doFunc(array("¥Ð¥Ã¥¯¥¢¥Ã¥×¥á¥â", "bkup_memo", MTEXT_LEN), array("MAX_LENGTH_CHECK"));
119   
120    // ½ÅÊ£¥Á¥§¥Ã¥¯
121    $ret = lfGetBkupData("WHERE bkup_name = ?", array($array['bkup_name']));
122    if (count($ret) > 0) {
123        $objErr->arrErr['bkup_name'] = "¥Ð¥Ã¥¯¥¢¥Ã¥×̾¤¬½ÅÊ£¤·¤Æ¤¤¤Þ¤¹¡£ÊÌ̾¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£";
124    }
125
126    return $objErr->arrErr;
127}
128
129// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ëºîÀ®
130function lfCreateBkupData($bkup_name){
131    global $objPage;
132    $objQuery = new SC_Query();
133    $csv_data = "";
134    $err = true;
135   
136    $bkup_dir = $objPage->bkup_dir;
137    $bkup_dir = $bkup_dir . $bkup_name . "/";
138
139    // Á´¥Æ¡¼¥Ö¥ë¼èÆÀ
140    $arrTableList = lfGetTableList();
141   
142    // ³Æ¥Æ¡¼¥Ö¥ë¾ðÊó¤ò¼èÆÀ¤¹¤ë
143    foreach($arrTableList as $key => $val){
144       
145        if ($val != "dtb_bkup") {
146            // ¥Æ¡¼¥Ö¥ë¹½À®¤ò¼èÆÀ
147            $arrColumnList = lfGetColumnList($val);
148           
149            // Á´¥Ç¡¼¥¿¤ò¼èÆÀ
150            $arrData = $objQuery->getAll("SELECT * FROM $val");
151   
152            // CSV¥Ç¡¼¥¿À¸À®
153            if (count($arrData) > 0) {
154               
155                // ¥«¥é¥à¤òCSV·Á¼°¤ËÀ°¤¨¤ë
156                $arrKyes = sfGetCommaList(array_keys($arrData[0]), false);
157               
158                // ¥Ç¡¼¥¿¤òCSV·Á¼°¤ËÀ°¤¨¤ë
159                $data = "";
160                foreach($arrData as $data_key => $data_val){
161                    $data .= sfGetCSVList($arrData[$data_key]);
162                }
163               
164                // CSV½ÐÎϥǡ¼¥¿À¸À®
165                $csv_data .= $val . "\n";
166                $csv_data .= $arrKyes . "\n";
167                $csv_data .= $data;
168                $csv_data .= "\n";
169            }   
170        }
171    }
172
173    $csv_file = $bkup_dir . "bkup_data.csv";
174    // CSV½ÐÎÏ
175    // ¥Ç¥£¥ì¥¯¥È¥ê¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤ÐºîÀ®¤¹¤ë     
176    if (!is_dir(dirname($csv_file))) {
177        $err = mkdir(dirname($csv_file));
178    }
179    if ($err) {
180        $fp = fopen($csv_file,"w");
181        if($fp) {
182            $err = fwrite($fp, $csv_data);
183            fclose($fp);
184        }
185    }
186
187    // ¾¦ÉʲèÁü¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼
188    if ($err) {
189        $copy_mess = "";
190        $copy_mess = sfCopyDir("../../upload/save_image/", $bkup_dir, $copy_mess);
191
192        //°µ½Ì¥Õ¥é¥°TRUE¤Ïgzip°µ½Ì¤ò¤ª¤³¤Ê¤¦
193        $tar = new Archive_Tar($objPage->bkup_dir . $bkup_name.".tar.gz", TRUE);
194
195        //bkup¥Õ¥©¥ë¥À¤Ë°Üư¤¹¤ë
196//      chdir($bkup_dir);
197       
198        //°µ½Ì¤ò¤ª¤³¤Ê¤¦
199//      $zip = $tar->create("./" . $bkup_name . "/");
200        $zip = $tar->create($bkup_dir);
201       
202        sfprintr($zip);
203        sfprintr($tar);
204
205        // ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Ç¡¼¥¿¤Îºï½ü
206        if ($zip) sfDelFile($bkup_dir);
207    }
208
209    if (!$err) {
210        $arrErr['bkup_name'] = "¥Ð¥Ã¥¯¥¢¥Ã¥×¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£";
211    }
212   
213    return $arrErr;
214}
215
216// Á´¥Æ¡¼¥Ö¥ë¥ê¥¹¥È¤ò¼èÆÀ¤¹¤ë
217function lfGetTableList(){
218    $objQuery = new SC_Query();
219   
220    if(DB_TYPE == "pgsql"){
221        $sql = "SELECT tablename FROM pg_tables WHERE tableowner = ? ORDER BY tablename ; ";
222        $arrRet = $objQuery->getAll($sql, array(DB_USER));
223        $arrRet = sfSwapArray($arrRet);
224        $arrRet = $arrRet['tablename'];
225    }else if(DB_TYPE == "mysql"){
226       
227    }
228   
229    return $arrRet;
230}
231
232// ¥Æ¡¼¥Ö¥ë¹½À®¤ò¼èÆÀ¤¹¤ë
233function lfGetColumnList($table_name){
234    $objQuery = new SC_Query();
235
236    if(DB_TYPE == "pgsql"){
237        $sql = "SELECT
238                    a.attname, t.typname, a.attnotnull, d.adsrc as defval, a.atttypmod, a.attnum as fldnum, e.description
239                FROM
240                    pg_class c,
241                    pg_type t,
242                    pg_attribute a left join pg_attrdef d on (a.attrelid=d.adrelid and a.attnum=d.adnum)
243                                   left join pg_description e on (a.attrelid=e.objoid and a.attnum=e.objsubid)
244                WHERE (c.relname=?) AND (c.oid=a.attrelid) AND (a.atttypid=t.oid) AND a.attnum > 0
245                ORDER BY fldnum";
246        $arrRet = $objQuery->getAll($sql, array($table_name));
247    }
248   
249    return sfswaparray($arrRet);
250
251}
252
253// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Æ¡¼¥Ö¥ë¤Ë¥Ç¡¼¥¿¤ò¹¹¿·¤¹¤ë
254function lfUpdBkupData($data){
255    $objQuery = new SC_Query();
256   
257    $sql = "INSERT INTO dtb_bkup (bkup_name,bkup_memo,create_date) values (?,?,now())";
258    $objQuery->query($sql, array($data['bkup_name'],$data['bkup_memo']));
259}
260
261// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Æ¡¼¥Ö¥ë¤«¤é¥Ç¡¼¥¿¤ò¼èÆÀ¤¹¤ë
262function lfGetBkupData($where = "", $data = array()){
263    $objQuery = new SC_Query();
264   
265    $sql = "SELECT bkup_name, bkup_memo, create_date FROM dtb_bkup ";
266    if ($where != "")   $sql .= $where;
267   
268    $ret = $objQuery->getall($sql,$data);
269   
270    return $ret;
271}
272
273// ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤ò¥ê¥¹¥È¥¢¤¹¤ë
274function lfRestore($bkup_name){
275   
276    //file¥Õ¥©¥ë¥À¤Ë°Üư¤¹¤ë
277    chdir("file");
278   
279    //ÊÑ¿ô$key¤ËÁ°²èÌ̤ǻØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë̾¤ò³ÊǼ¤¹¤ë
280    $key = $HTTP_POST_VARS["compck"];
281   
282    //²òÅàÀè¤Î¥Õ¥©¥ë¥À̾¤ò$fname¤Ë³ÊǼ¤¹¤ë
283    //¥Õ¥©¥ë¥À̾¤Ï¡Ö¥Õ¥¡¥¤¥ë̾.tar.tz¡×¤è¤ê¡Ö.tar.tz¡×¤ò¼è¤ê½ü¤¯
284    //substr(ʸ»úÎó,³«»Ï°ÌÃÖ,ʸ»ú¿ô¡Ë¤Ïʸ»úÎó¤Î³«»Ï°ÌÃÖ¤«¤éʸ»ú¿ôʬ¤ò¼è¤ê½Ð¤¹´Ø¿ô
285    //strlen(ʸ»úÎó¡Ë¤Ïʸ»úÎó¤ÎŤµ¤òÊÖ¤¹´Ø¿ô
286    $fname = substr($key,0,strlen($key) - 7);
287   
288    //¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤¹¤ë
289    //new Archive_Tar(¥Õ¥¡¥¤¥ë̾,°µ½Ì¥Õ¥é¥°);
290    //°µ½Ì¥Õ¥é¥°TRUE¤Ïgzip²òÅà¤ò¤ª¤³¤Ê¤¦
291    $tar = new Archive_Tar($key, TRUE);
292   
293    //»ØÄꤵ¤ì¤¿¥Õ¥©¥ë¥ÀÆâ¤Ë²òÅह¤ë
294    $tar->extract("./" . $fname);
295}
296
297
298
299?>
Note: See TracBrowser for help on using the repository browser.