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

Revision 7450, 7.7 KB checked in by kakinaka, 20 years ago (diff)

blank

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