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

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