source: temp/trunk/html/admin/downloads/module/module.php @ 6440

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