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

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