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

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