source: temp/trunk/html/admin/system/module.php @ 6557

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