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

Revision 5342, 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
2require_once("../require.php");
3
4//¥Ú¡¼¥¸´ÉÍý¥¯¥é¥¹
5class LC_Page {
6    //¥³¥ó¥¹¥È¥é¥¯¥¿
7    function LC_Page() {
8        //¥á¥¤¥ó¥Æ¥ó¥×¥ì¡¼¥È¤Î»ØÄê
9        $this->tpl_mainpage = 'system/bkup.tpl';
10        $this->tpl_subnavi = 'system/subnavi.tpl';
11        $this->tpl_mainno = 'system';       
12        $this->tpl_subno = 'bkup';
13        $this->tpl_subtitle = '¥Ð¥Ã¥¯¥¢¥Ã¥×´ÉÍý';
14    }
15}
16
17$objPage = new LC_Page();
18$objView = new SC_AdminView();
19$objQuery = new SC_Query();
20
21// ¥»¥Ã¥·¥ç¥ó¥¯¥é¥¹
22$objSess = new SC_Session();
23// ǧ¾Ú²ÄÈݤÎȽÄê
24sfIsSuccess($objSess);
25
26switch($_POST['mode']) {
27// ¥¢¥Ã¥×¥Ç¡¼¥È¾ðÊó¥Õ¥¡¥¤¥ë¤ò¼èÆÀ
28case 'edit':
29    // ¹¹¿·¾ðÊó¤òºÇ¿·¤Ë¤¹¤ë
30    lfLoadUpdateList();
31    break;
32// ¥¤¥ó¥¹¥È¡¼¥ë
33case 'install':
34    // ¹¹¿·¾ðÊó¤òºÇ¿·¤Ë¤¹¤ë
35    lfLoadUpdateList();
36    // ¥â¥¸¥å¡¼¥ë·´¤Î¥¤¥ó¥¹¥È¡¼¥ë
37    lfInstallModule();
38    break;
39// ¥¢¥ó¥¤¥ó¥¹¥È¡¼¥ë
40case 'uninstall':
41    // ¹¹¿·¾ðÊó¤òºÇ¿·¤Ë¤¹¤ë
42    lfLoadUpdateList();
43    // ¥â¥¸¥å¡¼¥ë·´¤Î¥¤¥ó¥¹¥È¡¼¥ë   
44    lfUninstallModule();
45    break;
46default:
47    break;
48}
49
50$col = "module_id, module_name, now_version, latest_version, module_explain, create_date, release_date";
51$objQuery->setorder("module_id");
52$objPage->arrUpdate = $objQuery->select($col, "dtb_update");
53
54$objView->assignobj($objPage);      //ÊÑ¿ô¤ò¥Æ¥ó¥×¥ì¡¼¥È¤Ë¥¢¥µ¥¤¥ó¤¹¤ë
55$objView->display(MAIN_FRAME);      //¥Æ¥ó¥×¥ì¡¼¥È¤Î½ÐÎÏ
56//-------------------------------------------------------------------------------------------------------
57// ¹¹¿·¥Õ¥¡¥¤¥ë¤Î¼èÆÀ
58function lfCopyUpdateFile($val) {
59    global $objPage;
60   
61    $src_path = sfRmDupSlash(UPDATE_HTTP . $val . ".txt");
62    $dst_path = sfRmDupSlash(ROOT_DIR . $val);
63    $flg_ok = true; // ½èÍý¤ÎÀ®¸ùȽÄê
64   
65    $src_fp = @fopen($src_path, "rb");
66   
67    if(!$src_fp) {
68        sfErrorHeader(">> " . $src_path . "¤Î¼èÆÀ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£");
69        $flg_ok = false;
70    } else {
71        // ¥Õ¥¡¥¤¥ë¤ò¤¹¤Ù¤ÆÆÉ¤ß¹þ¤à
72        $contents = '';
73        while (!feof($src_fp)) {
74            $contents .= fread($src_fp, 1024);
75        }
76        fclose($src_fp);
77       
78        // ¥Ç¥£¥ì¥¯¥È¥êºîÀ®¤ò»î¤ß¤ë
79        lfMakeDirectory($dst_path);
80        // ¥Õ¥¡¥¤¥ë½ñ¹þ¤ß       
81        $dst_fp = @fopen($dst_path, "wb");
82        if(!$dst_fp) {
83            sfErrorHeader(">> " . $dst_path . "¤ò¥ª¡¼¥×¥ó¤Ç¤­¤Þ¤»¤ó¡£");
84            $flg_ok = false;
85        } else {
86            fwrite($dst_fp, $contents);
87            fclose($dst_fp);
88        }
89    }
90   
91    if($flg_ok) {
92        $objPage->update_mess.= ">> " . $dst_path . "¡§¥³¥Ô¡¼À®¸ù<br>";
93    } else {
94        $objPage->update_mess.= ">> " . $dst_path . "¡§¥³¥Ô¡¼¼ºÇÔ<br>";     
95    }
96   
97    return $flg_ok;
98}
99
100// ¤¹¤Ù¤Æ¤Î¥Ñ¥¹¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤¹¤ë
101function lfMakeDirectory($path) {
102    $pos = 0;
103    $cnt = 0;               // ̵¸Â¥ë¡¼¥×Âкö
104    $len = strlen($path);   // ̵¸Â¥ë¡¼¥×Âкö
105   
106    while($cnt <= $len) {
107        $pos = strpos($path, "/", $pos);
108        // ¤³¤³¤Ç¤ÎȽÄê¤Ï¡¢Åù¹æ3¤Ä¤ò»ÈÍÑ
109        if($pos === false) {
110            // ¥¹¥é¥Ã¥·¥å¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¤Ï¥ë¡¼¥×¤«¤éÈ´¤±¤ë
111            break;
112        }
113        $pos++; // ʸ»úȯ¸«°ÌÃÖ¤ò°ìʸ»ú¿Ê¤á¤ë
114        $dir = substr($path, 0, $pos);
115       
116        // ¤¹¤Ç¤Ë¸ºß¤¹¤ë¤«¤É¤¦¤«Ä´¤Ù¤ë
117        if(!file_exists($dir)) {
118            mkdir($dir);
119        }
120        $cnt++; // ̵¸Â¥ë¡¼¥×Âкö
121    }
122}
123
124// ¹¹¿·¾ðÊó¤òºÇ¿·¤Ë¤¹¤ë
125function lfLoadUpdateList() {
126    $objQuery = new SC_Query();
127    $path = UPDATE_HTTP . "update.txt";
128    $fp = @fopen($path, "rb");
129   
130    if(!$fp) {
131        sfErrorHeader(">> " . $path . "¤Î¼èÆÀ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£");
132    } else {
133        while (!feof($fp)) {
134            $arrCSV = fgetcsv($fp, UPDATE_CSV_LINE_MAX);
135            // ¥«¥é¥à¿ô¤¬Àµ¾ï¤Ç¤¢¤Ã¤¿¾ì¹ç¤Î¤ß
136            if(count($arrCSV) == UPDATE_CSV_COL_MAX) {
137                // ¼èÆÀ¤·¤¿¥¢¥Ã¥×¥Ç¡¼¥È¾ðÊó¤òDB¤Ë½ñ¤­¹þ¤à
138                $sqlval['module_id'] = $arrCSV[0];
139                $sqlval['module_name'] = $arrCSV[1];
140                $sqlval['latest_version'] = $arrCSV[3];
141                $sqlval['module_explain'] = $arrCSV[4];
142                $sqlval['main_php'] = $arrCSV[5];
143                $sqlval['extern_php'] = $arrCSV[6];
144                $sqlval['install_sql'] = $arrCSV[7];
145                $sqlval['uninstall_sql'] = $arrCSV[8];             
146                $sqlval['other_files'] = $arrCSV[9];
147                $sqlval['del_flg'] = $arrCSV[10];
148                $sqlval['update_date'] = "now()";
149                $sqlval['release_date'] = $arrCSV[12];
150                // ´û¸¥ì¥³¡¼¥É¤Î¥Á¥§¥Ã¥¯
151                $cnt = $objQuery->count("dtb_update", "module_id = ?", array($sqlval['module_id']));
152                if($cnt > 0) {
153                    // ¤¹¤Ç¤Ë¼èÆÀ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¹¹¿·¤¹¤ë¡£
154                    $objQuery->update("dtb_update", $sqlval, "module_id = ?", array($sqlval['module_id']));
155                } else {
156                    // ¿·µ¬¥ì¥³¡¼¥É¤ÎÄɲÃ
157                    $sqlval['create_date'] = "now()";
158                    $objQuery->insert("dtb_update", $sqlval);
159                }
160            }
161        }
162        fclose($fp);
163    }
164}
165
166// ¥¤¥ó¥¹¥È¡¼¥ë½èÍý
167function lfInstallModule() {
168    global $objPage;
169   
170    $objQuery = new SC_Query();
171    $arrRet = $objQuery->select("module_id, extern_php, other_files, install_sql, latest_version", "dtb_update", "module_id = ?", array($_POST['module_id']));
172    $flg_ok = true; // ½èÍý¤ÎÀ®¸ùȽÄê
173   
174    if(count($arrRet) > 0) {
175        $arrFiles = array();
176        if($arrRet[0]['other_files'] != "") {
177            $arrFiles = split("\|", $arrRet[0]['other_files']);
178        }
179        $arrFiles[] = $arrRet[0]['extern_php'];
180        foreach($arrFiles as $val) {
181            // ¹¹¿·¥Õ¥¡¥¤¥ë¤Î¼èÆÀ
182            $ret=lfCopyUpdateFile($val);
183            if(!$ret) {
184                $flg_ok = false;
185            }
186        }
187    } else {
188        sfErrorHeader(">> Âоݤε¡Ç½¤Ï¡¢ÇÛÉÛ¤ò½ªÎ»¤·¤Æ¤ª¤ê¤Þ¤¹¡£");
189        $flg_ok = false;
190    }
191   
192    // ɬÍפÊSQLʸ¤Î¼Â¹Ô
193    if($arrRet[0]['install_sql'] != "") {
194        // SQLʸ¼Â¹Ô¡¢¥Ñ¥é¡¼¥á¡¼¥¿¤Ê¤·¡¢¥¨¥é¡¼Ìµ»ë
195        $arrInstallSql = split(";",$arrRet[0]['install_sql']);
196        foreach($arrInstallSql as $key => $val){
197            if (trim($val) != ""){
198                $ret = $objQuery->query(trim($val),"",true);
199            }
200        }
201        if(DB::isError($ret)) {
202            // ¥¨¥é¡¼Ê¸¤ò¼èÆÀ¤¹¤ë
203            ereg("\[(.*)\]", $ret->userinfo, $arrKey);
204            $objPage->update_mess.=">> ¥Æ¡¼¥Ö¥ë¹½À®¤ÎÊѹ¹¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£<br>";
205            $objPage->update_mess.= $arrKey[0] . "<br>";
206            $flg_ok = false;
207        } else {
208            $objPage->update_mess.=">> ¥Æ¡¼¥Ö¥ë¹½À®¤ÎÊѹ¹¤ò¹Ô¤¤¤Þ¤·¤¿¡£<br>";
209        }
210    }
211   
212    if($flg_ok) {
213        $sqlval['now_version'] = $arrRet[0]['latest_version'];
214        $sqlval['update_date'] = "now()";
215        $objQuery->update("dtb_update", $sqlval, "module_id = ?", array($arrRet[0]['module_id']));
216    }
217}
218
219// ¥¢¥ó¥¤¥ó¥¹¥È¡¼¥ë½èÍý
220function lfUninstallModule() {
221    global $objPage;
222   
223    $objQuery = new SC_Query();
224    $arrRet = $objQuery->select("module_id, extern_php, other_files, install_sql, uninstall_sql, latest_version", "dtb_update", "module_id = ?", array($_POST['module_id']));
225    $flg_ok = true; // ½èÍý¤ÎÀ®¸ùȽÄê
226   
227    if(count($arrRet) > 0) {
228        $arrFiles = array();
229        if($arrRet[0]['other_files'] != "") {
230            $arrFiles = split("\|", $arrRet[0]['other_files']);
231        }
232        $arrFiles[] = $arrRet[0]['extern_php'];
233        foreach($arrFiles as $val) {
234            $path = ROOT_DIR . $val;
235            if(file_exists($path)) {
236                // ¥Õ¥¡¥¤¥ë¤òºï½ü¤¹¤ë
237                if(unlink($path)) {
238                    $objPage->update_mess.= ">> " . $path . "¡§ºï½üÀ®¸ù<br>";
239                } else {
240                    $objPage->update_mess.= ">> " . $path . "¡§ºï½ü¼ºÇÔ<br>";
241                }
242            }
243        }
244       
245        // ɬÍפÊSQLʸ¤Î¼Â¹Ô
246        if($arrRet[0]['uninstall_sql'] != "") {
247            // SQLʸ¼Â¹Ô¡¢¥Ñ¥é¡¼¥á¡¼¥¿¤Ê¤·¡¢¥¨¥é¡¼Ìµ»ë
248            $ret = $objQuery->query($arrRet[0]['uninstall_sql'],"",true);
249            if(DB::isError($ret)) {
250                // ¥¨¥é¡¼Ê¸¤ò¼èÆÀ¤¹¤ë
251                ereg("\[(.*)\]", $ret->userinfo, $arrKey);
252                $objPage->update_mess.=">> ¥Æ¡¼¥Ö¥ë¹½À®¤ÎÊѹ¹¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£<br>";
253                $objPage->update_mess.= $arrKey[0] . "<br>";
254                $flg_ok = false;
255            } else {
256                $objPage->update_mess.=">> ¥Æ¡¼¥Ö¥ë¹½À®¤ÎÊѹ¹¤ò¹Ô¤¤¤Þ¤·¤¿¡£<br>";
257            }
258        }       
259    } else {
260        sfErrorHeader(">> Âоݤε¡Ç½¤Ï¡¢ÇÛÉÛ¤ò½ªÎ»¤·¤Æ¤ª¤ê¤Þ¤¹¡£");
261    }
262   
263    if($flg_ok) {
264        // ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òºï½ü¤¹¤ë¡£
265        $sqlval['now_version'] = "";
266        $sqlval['update_date'] = "now()";
267        $objQuery->update("dtb_update", $sqlval, "module_id = ?", array($arrRet[0]['module_id']));
268    }
269}
270
271
272?>
Note: See TracBrowser for help on using the repository browser.