source: temp/trunk/html/install/index.php @ 1336

Revision 1336, 13.0 KB checked in by naka, 18 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
2require_once("../require.php");
3
4class LC_Page {
5    function LC_Page() {
6        $this->arrDB_TYPE = array(
7            1 => 'PostgreSQL',
8            // 2 => 'mySQL' // ̤Âбþ
9        );
10       
11    }
12}
13
14$objPage = new LC_Page();
15$objView = new SC_SiteView();
16
17// ¥Ñ¥é¥á¡¼¥¿´ÉÍý¥¯¥é¥¹
18$objWebParam = new SC_FormParam();
19$objDBParam = new SC_FormParam();
20// ¥Ñ¥é¥á¡¼¥¿¾ðÊó¤Î½é´ü²½
21$objWebParam = lfInitWebParam($objWebParam);
22$objDBParam = lfInitDBParam($objDBParam);
23
24//¥Õ¥©¡¼¥àÇÛÎó¤Î¼èÆÀ
25$objWebParam->setParam($_POST);
26$objDBParam->setParam($_POST);
27
28switch($_POST['mode']) {
29// ¤è¤¦¤³¤½
30case 'welcome':
31    $objPage = lfDispStep0($objPage);
32    break;
33// ¥¢¥¯¥»¥¹¸¢¸Â¤Î¥Á¥§¥Ã¥¯
34case 'step0':
35    $objPage = lfDispStep0_1($objPage);
36    break; 
37// ¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼
38case 'step0_1':
39    $objPage = lfDispStep1($objPage);
40    break; 
41// WEB¥µ¥¤¥È¤ÎÀßÄê
42case 'step1':
43    //ÆþÎÏÃͤΥ¨¥é¡¼¥Á¥§¥Ã¥¯
44    $objPage->arrErr = lfCheckWEBError($objWebParam);
45    if(count($objPage->arrErr) == 0) {
46        $objPage = lfDispStep2($objPage);
47    } else {
48        $objPage = lfDispStep1($objPage);
49    }
50    break;
51// ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎÀßÄê
52case 'step2':
53    //ÆþÎÏÃͤΥ¨¥é¡¼¥Á¥§¥Ã¥¯
54    $objPage->arrErr = lfCheckDBError($objDBParam);
55    if(count($objPage->arrErr) == 0) {
56        $objPage = lfDispStep3($objPage);
57    } else {
58        $objPage = lfDispStep2($objPage);
59    }
60    break;
61// ¥Æ¡¼¥Ö¥ë¤ÎºîÀ®
62case 'step3':
63    // ÆþÎϥǡ¼¥¿¤òÅϤ¹¡£
64    $arrRet =  $objDBParam->getHashArray();
65    // ¥Æ¡¼¥Ö¥ë¤ÎºîÀ®
66    $objPage->arrErr = lfExecuteSQL("./create_table.sql", $arrRet['db_user'], $arrRet['db_password'], $arrRet['db_server'], $arrRet['db_name']);
67    if(count($objPage->arrErr) == 0) {
68        $objPage->tpl_message.="¡û¡§¥Æ¡¼¥Ö¥ë¤ÎºîÀ®¤ËÀ®¸ù¤·¤Þ¤·¤¿¡£<br>";
69    } else {
70        $objPage->tpl_message.="¡ß¡§¥Æ¡¼¥Ö¥ë¤ÎºîÀ®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£<br>";       
71    }
72
73    // ¥Ó¥å¡¼¤ÎºîÀ®
74    if(count($objPage->arrErr) == 0) {
75        // ¥Ó¥å¡¼¤ÎºîÀ®
76        $objPage->arrErr = lfExecuteSQL("./create_view.sql", $arrRet['db_user'], $arrRet['db_password'], $arrRet['db_server'], $arrRet['db_name']);
77        if(count($objPage->arrErr) == 0) {
78            $objPage->tpl_message.="¡û¡§¥Ó¥å¡¼¤ÎºîÀ®¤ËÀ®¸ù¤·¤Þ¤·¤¿¡£<br>";
79        } else {
80            $objPage->tpl_message.="¡ß¡§¥Ó¥å¡¼¤ÎºîÀ®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£<br>";     
81        }
82    }   
83   
84    // ½é´ü¥Ç¡¼¥¿¤ÎºîÀ®
85    if(count($objPage->arrErr) == 0) {
86        $objPage->arrErr = lfExecuteSQL("./insert_data.sql", $arrRet['db_user'], $arrRet['db_password'], $arrRet['db_server'], $arrRet['db_name']);
87        if(count($objPage->arrErr) == 0) {
88            $objPage->tpl_message.="¡û¡§½é´ü¥Ç¡¼¥¿¤ÎºîÀ®¤ËÀ®¸ù¤·¤Þ¤·¤¿¡£<br>";
89        } else {
90            $objPage->tpl_message.="¡ß¡§½é´ü¥Ç¡¼¥¿¤ÎºîÀ®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£<br>";     
91        }
92    }   
93   
94    // ¥«¥é¥à¥³¥á¥ó¥È¤Î½ñ¹þ¤ß
95    if(count($objPage->arrErr) == 0) {
96        $objPage->arrErr = lfExecuteSQL("./column_comment.sql", $arrRet['db_user'], $arrRet['db_password'], $arrRet['db_server'], $arrRet['db_name']);
97        if(count($objPage->arrErr) == 0) {
98            $objPage->tpl_message.="¡û¡§¥«¥é¥à¥³¥á¥ó¥È¤Î½ñ¹þ¤ß¤ËÀ®¸ù¤·¤Þ¤·¤¿¡£<br>";
99        } else {
100            $objPage->tpl_message.="¡ß¡§¥«¥é¥à¥³¥á¥ó¥È¤Î½ñ¹þ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£<br>";       
101        }
102    }   
103   
104    // ¥Æ¡¼¥Ö¥ë¥³¥á¥ó¥È¤Î½ñ¹þ¤ß
105    if(count($objPage->arrErr) == 0) {
106        $objPage->arrErr = lfExecuteSQL("./table_comment.sql", $arrRet['db_user'], $arrRet['db_password'], $arrRet['db_server'], $arrRet['db_name']);
107        if(count($objPage->arrErr) == 0) {
108            $objPage->tpl_message.="¡û¡§¥Æ¡¼¥Ö¥ë¥³¥á¥ó¥È¤Î½ñ¹þ¤ß¤ËÀ®¸ù¤·¤Þ¤·¤¿¡£<br>";
109        } else {
110            $objPage->tpl_message.="¡ß¡§¥Æ¡¼¥Ö¥ë¥³¥á¥ó¥È¤Î½ñ¹þ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£<br>";     
111        }
112    }
113   
114    if(count($objPage->arrErr) == 0) {
115        lfMakeConfigFile();
116        $objPage = lfDispComplete($objPage);
117    } else {
118        $objPage = lfDispStep3($objPage);
119    }
120    break;
121case 'return_step0':
122    $objPage = lfDispStep0($objPage);
123    break; 
124case 'return_step1':
125    $objPage = lfDispStep1($objPage);
126    break;
127case 'return_step2':
128    $objPage = lfDispStep2($objPage);
129    break;
130case 'return_welcome':
131default:
132    $objPage = lfDispWelcome($objPage);
133    break;
134}
135
136//¥Õ¥©¡¼¥àÍѤΥѥé¥á¡¼¥¿¤òÊÖ¤¹
137$objPage->arrForm = $objWebParam->getFormParamList();
138$objPage->arrForm = array_merge($objPage->arrForm, $objDBParam->getFormParamList());
139
140$objView->assignobj($objPage);
141$objView->display('install/install_frame.tpl');
142//-----------------------------------------------------------------------------------------------------------------------------------
143// ¤è¤¦¤³¤½²èÌ̤Îɽ¼¨
144function lfDispWelcome($objPage) {
145    global $objWebParam;
146    global $objDBParam;
147    // hidden¤ËÆþÎÏÃͤòÊÝ»ý
148    $objPage->arrHidden = $objWebParam->getHashArray();
149    // hidden¤ËÆþÎÏÃͤòÊÝ»ý
150    $objPage->arrHidden = array_merge($objPage->arrHidden, $objDBParam->getHashArray());
151    $objPage->tpl_mainpage = 'install/welcome.tpl';
152    $objPage->tpl_mode = 'welcome';
153    return $objPage;
154}
155
156// STEP0²èÌ̤Îɽ¼¨(¥Õ¥¡¥¤¥ë¸¢¸Â¥Á¥§¥Ã¥¯)
157function lfDispStep0($objPage) {
158    global $objWebParam;
159    global $objDBParam;
160    // hidden¤ËÆþÎÏÃͤòÊÝ»ý
161    $objPage->arrHidden = $objWebParam->getHashArray();
162    // hidden¤ËÆþÎÏÃͤòÊÝ»ý
163    $objPage->arrHidden = array_merge($objPage->arrHidden, $objDBParam->getHashArray());
164    $objPage->tpl_mainpage = 'install/step0.tpl';
165    $objPage->tpl_mode = 'step0';
166   
167    // ¥×¥í¥°¥é¥à¤Ç½ñ¹þ¤ß¤µ¤ì¤ë¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥ì¥¯¥È¥ê
168    $arrWriteFile = array(
169        "html/install.inc",
170        "html/user_data",
171        "html/upload",
172        "data/Smarty/templates_c",
173        "data/Smarty/templates_c/admin",       
174        "data/update",
175        "data/update/save_image",
176        "data/update/temp_image",
177        "data/update/graph_image",     
178        "data/update/csv",
179        "data/logs",
180    );
181   
182    $mess = "";
183    $err_file = false;
184    foreach($arrWriteFile as $val) {
185        $path = "../../" . $val;       
186        if(file_exists($path)) {
187            $mode = lfGetFileMode("../../" . $val);
188           
189            // ¥Ç¥£¥ì¥¯¥È¥ê¤Î¾ì¹ç
190            if(is_dir($path)) {
191                if($mode == "777") {
192                    $mess.= ">> ¡û¡§$val($mode) ¤ÏÌäÂꤢ¤ê¤Þ¤»¤ó¡£<br>";                   
193                } else {
194                    $mess.= ">> ¡ß¡§$val($mode) ¤Ë¥æ¡¼¥¶½ñ¹þ¤ß¸¢¸Â¤òÉÕÍ¿¤·¤Æ²¼¤µ¤¤¡£<br>";
195                    $err_file = true;                                       
196                }
197            } else {
198                if($mode == "666") {
199                    $mess.= ">> ¡û¡§$val($mode) ¤ÏÌäÂꤢ¤ê¤Þ¤»¤ó¡£<br>";                   
200                } else {
201                    $mess.= ">> ¡ß¡§$val($mode) ¤Ë¥æ¡¼¥¶½ñ¹þ¤ß¸¢¸Â¤òÉÕÍ¿¤·¤Æ²¼¤µ¤¤¡£<br>";
202                    $err_file = true;                           
203                }
204            }   
205           
206        } else {
207            $mess.= ">> ¡ß¡§$val ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£<br>";
208            $err_file = true;
209        }
210    }
211   
212    $objPage->mess = $mess;
213    $objPage->err_file = $err_file;
214
215    return $objPage;
216}
217
218
219// STEP0_1²èÌ̤Îɽ¼¨(¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼)
220function lfDispStep0_1($objPage) {
221    global $objWebParam;
222    global $objDBParam;
223    // hidden¤ËÆþÎÏÃͤòÊÝ»ý
224    $objPage->arrHidden = $objWebParam->getHashArray();
225    // hidden¤ËÆþÎÏÃͤòÊÝ»ý
226    $objPage->arrHidden = array_merge($objPage->arrHidden, $objDBParam->getHashArray());
227    $objPage->tpl_mainpage = 'install/step0_1.tpl';
228    $objPage->tpl_mode = 'step0_1';
229    $objPage->copy_mess = lfCopyDir("./user_data/", "../../html/user_data/", $objPage->copy_mess);
230    return $objPage;
231}
232
233function lfGetFileMode($path) {
234    $mode = substr(sprintf('%o', fileperms($path)), -3);
235    return $mode;
236}
237
238// STEP1²èÌ̤Îɽ¼¨
239function lfDispStep1($objPage) {
240    global $objDBParam;
241    // hidden¤ËÆþÎÏÃͤòÊÝ»ý
242    $objPage->arrHidden = $objDBParam->getHashArray();
243    $objPage->tpl_mainpage = 'install/step1.tpl';
244    $objPage->tpl_mode = 'step1';
245    return $objPage;
246}
247
248// STEP2²èÌ̤Îɽ¼¨
249function lfDispStep2($objPage) {
250    global $objWebParam;
251    // hidden¤ËÆþÎÏÃͤòÊÝ»ý
252    $objPage->arrHidden = $objWebParam->getHashArray();
253    $objPage->tpl_mainpage = 'install/step2.tpl';
254    $objPage->tpl_mode = 'step2';
255    return $objPage;
256}
257
258// STEP3²èÌ̤Îɽ¼¨
259function lfDispStep3($objPage) {
260    global $objWebParam;
261    global $objDBParam;
262    // hidden¤ËÆþÎÏÃͤòÊÝ»ý
263    $objPage->arrHidden = $objWebParam->getHashArray();
264    // hidden¤ËÆþÎÏÃͤòÊÝ»ý
265    $objPage->arrHidden = array_merge($objPage->arrHidden, $objDBParam->getHashArray());
266    $objPage->tpl_mainpage = 'install/step3.tpl';
267    $objPage->tpl_mode = 'step3';
268    return $objPage;
269}
270
271// ´°Î»²èÌ̤Îɽ¼¨
272function lfDispComplete($objPage) {
273    global $objWebParam;
274    global $objDBParam;
275    // hidden¤ËÆþÎÏÃͤòÊÝ»ý
276    $objPage->arrHidden = $objWebParam->getHashArray();
277    // hidden¤ËÆþÎÏÃͤòÊÝ»ý
278    $objPage->arrHidden = array_merge($objPage->arrHidden, $objDBParam->getHashArray());
279    $objPage->tpl_mainpage = 'install/complete.tpl';
280    $objPage->tpl_mode = 'complete';
281    return $objPage;
282}
283
284// WEB¥Ñ¥é¥á¡¼¥¿¾ðÊó¤Î½é´ü²½
285function lfInitWebParam($objWebParam) {
286   
287    $install_dir = ereg_replace("html/", "", $_SERVER['DOCUMENT_ROOT']);
288    $normal_url = "http://" . $_SERVER['HTTP_HOST'] . "/";
289    $secure_url = "https://" . $_SERVER['HTTP_HOST'] . "/";
290    $domain = ereg_replace("^[a-zA-Z0-9_~=&\?\/-]+\.", "", $_SERVER['HTTP_HOST']);
291       
292    $objWebParam->addParam("¥¤¥ó¥¹¥È¡¼¥ë¥Ç¥£¥ì¥¯¥È¥ê", "install_dir", MTEXT_LEN, "", array("EXIST_CHECK","MAX_LENGTH_CHECK"), $install_dir);
293    $objWebParam->addParam("URL(Ä̾ï)", "normal_url", MTEXT_LEN, "", array("EXIST_CHECK","URL_CHECK","MAX_LENGTH_CHECK"), $normal_url);
294    $objWebParam->addParam("URL(¥»¥­¥å¥¢)", "secure_url", MTEXT_LEN, "", array("EXIST_CHECK","URL_CHECK","MAX_LENGTH_CHECK"), $secure_url);
295    $objWebParam->addParam("¥É¥á¥¤¥ó", "domain", MTEXT_LEN, "", array("EXIST_CHECK","MAX_LENGTH_CHECK"), $domain); 
296   
297    return $objWebParam;
298}
299
300// WEB¥Ñ¥é¥á¡¼¥¿¾ðÊó¤Î½é´ü²½
301function lfInitDBParam($objDBParam) {
302   
303    $db_server = "127.0.0.1";
304    $db_name = "eccube_db";
305    $db_user = "eccube_db_user";
306   
307    $objDBParam->addParam("DB¤Î¼ïÎà", "db_type", INT_LEN, "", array("EXIST_CHECK","MAX_LENGTH_CHECK"));
308    $objDBParam->addParam("DB¥µ¡¼¥Ð", "db_server", MTEXT_LEN, "", array("EXIST_CHECK","MAX_LENGTH_CHECK"), $db_server);
309    $objDBParam->addParam("DB̾", "db_name", MTEXT_LEN, "", array("EXIST_CHECK","MAX_LENGTH_CHECK"), $db_name);
310    $objDBParam->addParam("DB¥æ¡¼¥¶", "db_user", MTEXT_LEN, "", array("EXIST_CHECK","MAX_LENGTH_CHECK"), $db_user);
311    $objDBParam->addParam("DB¥Ñ¥¹¥ï¡¼¥É", "db_password", MTEXT_LEN, "", array("EXIST_CHECK","MAX_LENGTH_CHECK"));   
312    return $objDBParam;
313}
314
315// ÆþÎÏÆâÍƤΥÁ¥§¥Ã¥¯
316function lfCheckWebError($objFormParam) {
317    // ÆþÎϥǡ¼¥¿¤òÅϤ¹¡£
318    $arrRet =  $objFormParam->getHashArray();
319    $objErr = new SC_CheckError($arrRet);
320    $objErr->arrErr = $objFormParam->checkError();
321    return $objErr->arrErr;
322}
323
324// ÆþÎÏÆâÍƤΥÁ¥§¥Ã¥¯
325function lfCheckDBError($objFormParam) {
326    // ÆþÎϥǡ¼¥¿¤òÅϤ¹¡£
327    $arrRet =  $objFormParam->getHashArray();
328    $objErr = new SC_CheckError($arrRet);
329    $objErr->arrErr = $objFormParam->checkError();
330   
331    if(count($objErr->arrErr) == 0) {
332        // Àܳ³Îǧ
333        $dsn = "pgsql://".$arrRet['db_user'].":".$arrRet['db_password']."@".$arrRet['db_server']."/".$arrRet['db_name'];
334        $objDB = DB::connect($dsn);
335        // Àܳ¥¨¥é¡¼
336        if(PEAR::isError($objDB)) {
337            $objErr->arrErr['all'] = ">> " . $objDB->message;
338            gfPrintLog($objDB->userinfo);
339        }
340    }       
341    return $objErr->arrErr;
342}
343
344// SQLʸ¤Î¼Â¹Ô
345function lfExecuteSQL($filepath, $db_user, $db_password, $db_server, $db_name) {
346    $arrErr = array();
347   
348    if(!file_exists($filepath)) {
349        $arrErr['all'] = ">> ¥¹¥¯¥ê¥×¥È¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó";
350    } else {
351        if($fp = fopen($filepath,"r")) {
352            $sql = fread($fp, filesize($filepath));
353            fclose($fp);
354        }
355           
356        $dsn = "pgsql://".$db_user.":".$db_password."@".$db_server."/".$db_name;
357        $objDB = DB::connect($dsn);
358        // Àܳ¥¨¥é¡¼
359        if(!PEAR::isError($objDB)) {
360            $ret = $objDB->query($sql);
361            if(PEAR::isError($ret)) {
362                $arrErr['all'] = ">> " . $ret->message;
363                gfPrintLog($ret->userinfo);
364            }
365        } else {
366            $arrErr['all'] = ">> " . $objDB->message;
367            gfPrintLog($objDB->userinfo);
368        }
369    }
370    return $arrErr;
371}
372
373// ÀßÄê¥Õ¥¡¥¤¥ë¤ÎºîÀ®
374function lfMakeConfigFile() {
375    global $objWebParam;
376    global $objDBParam;
377   
378    $filepath = $objWebParam->getValue('install_dir') . "/html/install.inc";
379    $domain = $objWebParam->getValue('domain');
380    if(!ereg("^\.", $domain)) {
381        $domain = "." . $domain;
382    }
383   
384    $root_dir = $objWebParam->getValue('install_dir');
385    if (!ereg("/$", $root_dir)) {
386        $root_dir = $root_dir . "/";
387    }
388   
389    $config_data =
390    "<?php\n".
391    "    define ('ECCUBE_INSTALL', 'ON');\n" .
392    "    define ('ROOT_DIR', '" . $root_dir . "');\n" .
393    "    define ('SITE_URL', '" . $objWebParam->getValue('normal_url') . "');\n" .
394    "    define ('SSL_URL', '" . $objWebParam->getValue('secure_url') . "');\n" .
395    "    define ('DOMAIN_NAME', '" . $domain . "');\n" .
396    "    define ('DB_USER', '" . $objDBParam->getValue('db_user') . "');\n" .
397    "    define ('DB_PASSWORD', '" . $objDBParam->getValue('db_password') . "');\n" .
398    "    define ('DB_SERVER', '" . $objDBParam->getValue('db_server') . "');\n" .
399    "    define ('DB_NAME', '" . $objDBParam->getValue('db_name') . "');\n" .
400    "?>";
401   
402    if($fp = fopen($filepath,"w")) {
403        fwrite($fp, $config_data);
404        fclose($fp);
405    }
406}
407
408// ¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤Î¥Õ¥¡¥¤¥ë¤òºÆµ¢Åª¤Ë¥³¥Ô¡¼
409function lfCopyDir($src, $des, $mess, $override = false){
410    if(!is_dir($src)){
411        return false;
412    }
413
414    $oldmask = umask(0);
415    $mod= stat($src);
416   
417    // ¥Ç¥£¥ì¥¯¥È¥ê¤¬¤Ê¤±¤ì¤ÐºîÀ®¤¹¤ë
418    if(!file_exists($des)) {
419        mkdir($des, $mod[2]);
420    }
421   
422    $fileArray=glob( $src."*" );
423    foreach( $fileArray as $key => $data_ ){
424        // CVS´ÉÍý¥Õ¥¡¥¤¥ë¤Ï¥³¥Ô¡¼¤·¤Ê¤¤
425        if(ereg("/CVS/Entries", $data_)) {
426            break;
427        }
428        if(ereg("/CVS/Repository", $data_)) {
429            break;
430        }
431        if(ereg("/CVS/Root", $data_)) {
432            break;
433        }
434       
435        mb_ereg("^(.*[\/])(.*)",$data_, $matches);
436        $data=$matches[2];
437        if( is_dir( $data_ ) ){
438            $mess = lfCopyDir( $data_.'/', $des.$data.'/', $mess);
439        }else{
440            if(!$override && file_exists($des.$data)) {
441                $mess.= $des.$data . "¡§¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Þ¤¹\n";
442            } else {
443                if(copy( $data_, $des.$data)) {
444                    $mess.= $des.$data . "¡§¥³¥Ô¡¼À®¸ù\n";
445                } else {
446                    $mess.= $des.$data . "¡§¥³¥Ô¡¼¼ºÇÔ\n";
447                }
448            }
449            $mod=stat($data_ );
450        }
451    }
452    umask($oldmask);
453    return $mess;
454}
455?>
Note: See TracBrowser for help on using the repository browser.