source: temp/trunk/html/admin/system/update.php @ 3609

Revision 3609, 7.2 KB checked in by naka, 20 years ago (diff)

* empty log message *

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