[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 /*************************************************************************** 3 * install.php 4 * ------------------- 5 * begin : Tuesday, Sept 11, 2001 6 * copyright : (C) 2001 The phpBB Group 7 * email : support@phpbb.com 8 * 9 * $Id: install.php 5392 2005-12-29 11:51:13Z acydburn $ 10 * 11 ***************************************************************************/ 12 13 /*************************************************************************** 14 * 15 * This program is free software; you can redistribute it and/or modify 16 * it under the terms of the GNU General Public License as published by 17 * the Free Software Foundation; either version 2 of the License, or 18 * (at your option) any later version. 19 * 20 ***************************************************************************/ 21 22 // --------- 23 // FUNCTIONS 24 // 25 function page_header($text, $form_action = false) 26 { 27 global $phpEx, $lang; 28 29 ?> 30 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 31 <html> 32 <head> 33 <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $lang['ENCODING']; ?>"> 34 <meta http-equiv="Content-Style-Type" content="text/css"> 35 <title><?php echo $lang['Welcome_install'];?></title> 36 <link rel="stylesheet" href="../templates/subSilver/subSilver.css" type="text/css"> 37 <style type="text/css"> 38 <!-- 39 th { background-image: url('../templates/subSilver/images/cellpic3.gif') } 40 td.cat { background-image: url('../templates/subSilver/images/cellpic1.gif') } 41 td.rowpic { background-image: url('../templates/subSilver/images/cellpic2.jpg'); background-repeat: repeat-y } 42 td.catHead,td.catSides,td.catLeft,td.catRight,td.catBottom { background-image: url('../templates/subSilver/images/cellpic1.gif') } 43 44 /* Import the fancy styles for IE only (NS4.x doesn't use the @import function) */ 45 @import url("../templates/subSilver/formIE.css"); 46 //--> 47 </style> 48 </head> 49 <body bgcolor="#E5E5E5" text="#000000" link="#006699" vlink="#5584AA"> 50 51 <table width="100%" border="0" cellspacing="0" cellpadding="10" align="center"> 52 <tr> 53 <td class="bodyline" width="100%"><table width="100%" border="0" cellspacing="0" cellpadding="0"> 54 <tr> 55 <td><table width="100%" border="0" cellspacing="0" cellpadding="0"> 56 <tr> 57 <td><img src="../templates/subSilver/images/logo_phpBB.gif" border="0" alt="Forum Home" vspace="1" /></td> 58 <td align="center" width="100%" valign="middle"><span class="maintitle"><?php echo $lang['Welcome_install'];?></span></td> 59 </tr> 60 </table></td> 61 </tr> 62 <tr> 63 <td><br /><br /></td> 64 </tr> 65 <tr> 66 <td colspan="2"><table width="90%" border="0" align="center" cellspacing="0" cellpadding="0"> 67 <tr> 68 <td><span class="gen"><?php echo $text; ?></span></td> 69 </tr> 70 </table></td> 71 </tr> 72 <tr> 73 <td><br /><br /></td> 74 </tr> 75 <tr> 76 <td width="100%"><table width="100%" cellpadding="2" cellspacing="1" border="0" class="forumline"><form action="<?php echo ($form_action) ? $form_action : 'install.'.$phpEx; ?>" name="install" method="post"> 77 <?php 78 79 } 80 81 function page_footer() 82 { 83 84 ?> 85 </table></form></td> 86 </tr> 87 </table></td> 88 </tr> 89 </table> 90 91 </body> 92 </html> 93 <?php 94 95 } 96 97 function page_common_form($hidden, $submit) 98 { 99 100 ?> 101 <tr> 102 <td class="catBottom" align="center" colspan="2"><?php echo $hidden; ?><input class="mainoption" type="submit" value="<?php echo $submit; ?>" /></td> 103 </tr> 104 <?php 105 106 } 107 108 function page_upgrade_form() 109 { 110 global $lang; 111 112 ?> 113 <tr> 114 <td class="catBottom" align="center" colspan="2"><?php echo $lang['continue_upgrade']; ?></td> 115 </tr> 116 <tr> 117 <td class="catBottom" align="center" colspan="2"><input type="submit" name="upgrade_now" value="<?php echo $lang['upgrade_submit']; ?>" /></td> 118 </tr> 119 <?php 120 121 } 122 123 function page_error($error_title, $error) 124 { 125 126 ?> 127 <tr> 128 <th><?php echo $error_title; ?></th> 129 </tr> 130 <tr> 131 <td class="row1" align="center"><span class="gen"><?php echo $error; ?></span></td> 132 </tr> 133 <?php 134 135 } 136 137 // Guess an initial language ... borrowed from phpBB 2.2 it's not perfect, 138 // really it should do a straight match first pass and then try a "fuzzy" 139 // match on a second pass instead of a straight "fuzzy" match. 140 function guess_lang() 141 { 142 global $phpbb_root_path, $HTTP_SERVER_VARS; 143 144 // The order here _is_ important, at least for major_minor 145 // matches. Don't go moving these around without checking with 146 // me first - psoTFX 147 $match_lang = array( 148 'arabic' => 'ar([_-][a-z]+)?', 149 'bulgarian' => 'bg', 150 'catalan' => 'ca', 151 'czech' => 'cs', 152 'danish' => 'da', 153 'german' => 'de([_-][a-z]+)?', 154 'english' => 'en([_-][a-z]+)?', 155 'estonian' => 'et', 156 'finnish' => 'fi', 157 'french' => 'fr([_-][a-z]+)?', 158 'greek' => 'el', 159 'spanish_argentina' => 'es[_-]ar', 160 'spanish' => 'es([_-][a-z]+)?', 161 'gaelic' => 'gd', 162 'galego' => 'gl', 163 'gujarati' => 'gu', 164 'hebrew' => 'he', 165 'hindi' => 'hi', 166 'croatian' => 'hr', 167 'hungarian' => 'hu', 168 'icelandic' => 'is', 169 'indonesian' => 'id([_-][a-z]+)?', 170 'italian' => 'it([_-][a-z]+)?', 171 'japanese' => 'ja([_-][a-z]+)?', 172 'korean' => 'ko([_-][a-z]+)?', 173 'latvian' => 'lv', 174 'lithuanian' => 'lt', 175 'macedonian' => 'mk', 176 'dutch' => 'nl([_-][a-z]+)?', 177 'norwegian' => 'no', 178 'punjabi' => 'pa', 179 'polish' => 'pl', 180 'portuguese_brazil' => 'pt[_-]br', 181 'portuguese' => 'pt([_-][a-z]+)?', 182 'romanian' => 'ro([_-][a-z]+)?', 183 'russian' => 'ru([_-][a-z]+)?', 184 'slovenian' => 'sl([_-][a-z]+)?', 185 'albanian' => 'sq', 186 'serbian' => 'sr([_-][a-z]+)?', 187 'slovak' => 'sv([_-][a-z]+)?', 188 'swedish' => 'sv([_-][a-z]+)?', 189 'thai' => 'th([_-][a-z]+)?', 190 'turkish' => 'tr([_-][a-z]+)?', 191 'ukranian' => 'uk([_-][a-z]+)?', 192 'urdu' => 'ur', 193 'viatnamese' => 'vi', 194 'chinese_traditional_taiwan'=> 'zh[_-]tw', 195 'chinese_simplified' => 'zh', 196 ); 197 198 if (isset($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'])) 199 { 200 $accept_lang_ary = explode(',', $HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE']); 201 for ($i = 0; $i < sizeof($accept_lang_ary); $i++) 202 { 203 @reset($match_lang); 204 while (list($lang, $match) = each($match_lang)) 205 { 206 if (preg_match('#' . $match . '#i', trim($accept_lang_ary[$i]))) 207 { 208 if (file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $lang))) 209 { 210 return $lang; 211 } 212 } 213 } 214 } 215 } 216 217 return 'english'; 218 219 } 220 // 221 // FUNCTIONS 222 // --------- 223 224 // Begin 225 error_reporting (E_ERROR | E_WARNING | E_PARSE); // This will NOT report uninitialized variables 226 set_magic_quotes_runtime(0); // Disable magic_quotes_runtime 227 228 // PHP5 with register_long_arrays off? 229 if (!isset($HTTP_POST_VARS) && isset($_POST)) 230 { 231 $HTTP_POST_VARS = $_POST; 232 $HTTP_GET_VARS = $_GET; 233 $HTTP_SERVER_VARS = $_SERVER; 234 $HTTP_COOKIE_VARS = $_COOKIE; 235 $HTTP_ENV_VARS = $_ENV; 236 $HTTP_POST_FILES = $_FILES; 237 238 // _SESSION is the only superglobal which is conditionally set 239 if (isset($_SESSION)) 240 { 241 $HTTP_SESSION_VARS = $_SESSION; 242 } 243 } 244 245 // Slash data if it isn't slashed 246 if (!get_magic_quotes_gpc()) 247 { 248 if (is_array($HTTP_GET_VARS)) 249 { 250 while (list($k, $v) = each($HTTP_GET_VARS)) 251 { 252 if (is_array($HTTP_GET_VARS[$k])) 253 { 254 while (list($k2, $v2) = each($HTTP_GET_VARS[$k])) 255 { 256 $HTTP_GET_VARS[$k][$k2] = addslashes($v2); 257 } 258 @reset($HTTP_GET_VARS[$k]); 259 } 260 else 261 { 262 $HTTP_GET_VARS[$k] = addslashes($v); 263 } 264 } 265 @reset($HTTP_GET_VARS); 266 } 267 268 if (is_array($HTTP_POST_VARS)) 269 { 270 while (list($k, $v) = each($HTTP_POST_VARS)) 271 { 272 if (is_array($HTTP_POST_VARS[$k])) 273 { 274 while (list($k2, $v2) = each($HTTP_POST_VARS[$k])) 275 { 276 $HTTP_POST_VARS[$k][$k2] = addslashes($v2); 277 } 278 @reset($HTTP_POST_VARS[$k]); 279 } 280 else 281 { 282 $HTTP_POST_VARS[$k] = addslashes($v); 283 } 284 } 285 @reset($HTTP_POST_VARS); 286 } 287 288 if (is_array($HTTP_COOKIE_VARS)) 289 { 290 while (list($k, $v) = each($HTTP_COOKIE_VARS)) 291 { 292 if (is_array($HTTP_COOKIE_VARS[$k])) 293 { 294 while (list($k2, $v2) = each($HTTP_COOKIE_VARS[$k])) 295 { 296 $HTTP_COOKIE_VARS[$k][$k2] = addslashes($v2); 297 } 298 @reset($HTTP_COOKIE_VARS[$k]); 299 } 300 else 301 { 302 $HTTP_COOKIE_VARS[$k] = addslashes($v); 303 } 304 } 305 @reset($HTTP_COOKIE_VARS); 306 } 307 } 308 309 // Begin main prog 310 define('IN_PHPBB', true); 311 // Uncomment the following line to completely disable the ftp option... 312 // define('NO_FTP', true); 313 $phpbb_root_path = './../'; 314 include ($phpbb_root_path.'extension.inc'); 315 316 // Initialise some basic arrays 317 $userdata = array(); 318 $lang = array(); 319 $error = false; 320 321 // Include some required functions 322 include($phpbb_root_path.'includes/constants.'.$phpEx); 323 include($phpbb_root_path.'includes/functions.'.$phpEx); 324 include($phpbb_root_path.'includes/sessions.'.$phpEx); 325 326 // Define schema info 327 $available_dbms = array( 328 'mysql'=> array( 329 'LABEL' => 'MySQL 3.x', 330 'SCHEMA' => 'mysql', 331 'DELIM' => ';', 332 'DELIM_BASIC' => ';', 333 'COMMENTS' => 'remove_remarks' 334 ), 335 'mysql4' => array( 336 'LABEL' => 'MySQL 4.x/5.x', 337 'SCHEMA' => 'mysql', 338 'DELIM' => ';', 339 'DELIM_BASIC' => ';', 340 'COMMENTS' => 'remove_remarks' 341 ), 342 'postgres' => array( 343 'LABEL' => 'PostgreSQL 7.x', 344 'SCHEMA' => 'postgres', 345 'DELIM' => ';', 346 'DELIM_BASIC' => ';', 347 'COMMENTS' => 'remove_comments' 348 ), 349 'mssql' => array( 350 'LABEL' => 'MS SQL Server 7/2000', 351 'SCHEMA' => 'mssql', 352 'DELIM' => 'GO', 353 'DELIM_BASIC' => ';', 354 'COMMENTS' => 'remove_comments' 355 ), 356 'msaccess' => array( 357 'LABEL' => 'MS Access [ ODBC ]', 358 'SCHEMA' => '', 359 'DELIM' => '', 360 'DELIM_BASIC' => ';', 361 'COMMENTS' => '' 362 ), 363 'mssql-odbc' => array( 364 'LABEL' => 'MS SQL Server [ ODBC ]', 365 'SCHEMA' => 'mssql', 366 'DELIM' => 'GO', 367 'DELIM_BASIC' => ';', 368 'COMMENTS' => 'remove_comments' 369 ) 370 ); 371 372 // Obtain various vars 373 $confirm = (isset($HTTP_POST_VARS['confirm'])) ? true : false; 374 $cancel = (isset($HTTP_POST_VARS['cancel'])) ? true : false; 375 376 if (isset($HTTP_POST_VARS['install_step']) || isset($HTTP_GET_VARS['install_step'])) 377 { 378 $install_step = (isset($HTTP_POST_VARS['install_step'])) ? $HTTP_POST_VARS['install_step'] : $HTTP_GET_VARS['install_step']; 379 } 380 else 381 { 382 $install_step = ''; 383 } 384 385 $upgrade = (!empty($HTTP_POST_VARS['upgrade'])) ? $HTTP_POST_VARS['upgrade']: ''; 386 $upgrade_now = (!empty($HTTP_POST_VARS['upgrade_now'])) ? $HTTP_POST_VARS['upgrade_now']:''; 387 388 $dbms = isset($HTTP_POST_VARS['dbms']) ? $HTTP_POST_VARS['dbms'] : ''; 389 390 $dbhost = (!empty($HTTP_POST_VARS['dbhost'])) ? $HTTP_POST_VARS['dbhost'] : 'localhost'; 391 $dbuser = (!empty($HTTP_POST_VARS['dbuser'])) ? $HTTP_POST_VARS['dbuser'] : ''; 392 $dbpasswd = (!empty($HTTP_POST_VARS['dbpasswd'])) ? $HTTP_POST_VARS['dbpasswd'] : ''; 393 $dbname = (!empty($HTTP_POST_VARS['dbname'])) ? $HTTP_POST_VARS['dbname'] : ''; 394 395 $table_prefix = (!empty($HTTP_POST_VARS['prefix'])) ? $HTTP_POST_VARS['prefix'] : ''; 396 397 $admin_name = (!empty($HTTP_POST_VARS['admin_name'])) ? $HTTP_POST_VARS['admin_name'] : ''; 398 $admin_pass1 = (!empty($HTTP_POST_VARS['admin_pass1'])) ? $HTTP_POST_VARS['admin_pass1'] : ''; 399 $admin_pass2 = (!empty($HTTP_POST_VARS['admin_pass2'])) ? $HTTP_POST_VARS['admin_pass2'] : ''; 400 401 $ftp_path = (!empty($HTTP_POST_VARS['ftp_path'])) ? $HTTP_POST_VARS['ftp_path'] : ''; 402 $ftp_user = (!empty($HTTP_POST_VARS['ftp_user'])) ? $HTTP_POST_VARS['ftp_user'] : ''; 403 $ftp_pass = (!empty($HTTP_POST_VARS['ftp_pass'])) ? $HTTP_POST_VARS['ftp_pass'] : ''; 404 405 if (isset($HTTP_POST_VARS['lang']) && preg_match('#^[a-z_]+$#', $HTTP_POST_VARS['lang'])) 406 { 407 $language = strip_tags($HTTP_POST_VARS['lang']); 408 } 409 else 410 { 411 $language = guess_lang(); 412 } 413 414 $board_email = (!empty($HTTP_POST_VARS['board_email'])) ? $HTTP_POST_VARS['board_email'] : ''; 415 $script_path = (!empty($HTTP_POST_VARS['script_path'])) ? $HTTP_POST_VARS['script_path'] : str_replace('install', '', dirname($HTTP_SERVER_VARS['PHP_SELF'])); 416 417 if (!empty($HTTP_POST_VARS['server_name'])) 418 { 419 $server_name = $HTTP_POST_VARS['server_name']; 420 } 421 else 422 { 423 // Guess at some basic info used for install.. 424 if (!empty($HTTP_SERVER_VARS['SERVER_NAME']) || !empty($HTTP_ENV_VARS['SERVER_NAME'])) 425 { 426 $server_name = (!empty($HTTP_SERVER_VARS['SERVER_NAME'])) ? $HTTP_SERVER_VARS['SERVER_NAME'] : $HTTP_ENV_VARS['SERVER_NAME']; 427 } 428 else if (!empty($HTTP_SERVER_VARS['HTTP_HOST']) || !empty($HTTP_ENV_VARS['HTTP_HOST'])) 429 { 430 $server_name = (!empty($HTTP_SERVER_VARS['HTTP_HOST'])) ? $HTTP_SERVER_VARS['HTTP_HOST'] : $HTTP_ENV_VARS['HTTP_HOST']; 431 } 432 else 433 { 434 $server_name = ''; 435 } 436 } 437 438 if (!empty($HTTP_POST_VARS['server_port'])) 439 { 440 $server_port = $HTTP_POST_VARS['server_port']; 441 } 442 else 443 { 444 if (!empty($HTTP_SERVER_VARS['SERVER_PORT']) || !empty($HTTP_ENV_VARS['SERVER_PORT'])) 445 { 446 $server_port = (!empty($HTTP_SERVER_VARS['SERVER_PORT'])) ? $HTTP_SERVER_VARS['SERVER_PORT'] : $HTTP_ENV_VARS['SERVER_PORT']; 447 } 448 else 449 { 450 $server_port = '80'; 451 } 452 } 453 454 // Open config.php ... if it exists 455 if (@file_exists(@phpbb_realpath('config.'.$phpEx))) 456 { 457 include($phpbb_root_path.'config.'.$phpEx); 458 } 459 460 // Is phpBB already installed? Yes? Redirect to the index 461 if (defined("PHPBB_INSTALLED")) 462 { 463 redirect('../index.'.$phpEx); 464 } 465 466 // Import language file, setup template ... 467 include($phpbb_root_path.'language/lang_' . $language . '/lang_main.'.$phpEx); 468 include($phpbb_root_path.'language/lang_' . $language . '/lang_admin.'.$phpEx); 469 470 // Ok for the time being I'm commenting this out whilst I'm working on 471 // better integration of the install with upgrade as per Bart's request 472 // JLH 473 if ($upgrade == 1) 474 { 475 // require('upgrade.'.$phpEx); 476 $install_step = 1; 477 } 478 479 // What do we need to do? 480 if (!empty($HTTP_POST_VARS['send_file']) && $HTTP_POST_VARS['send_file'] == 1 && empty($HTTP_POST_VARS['upgrade_now'])) 481 { 482 header('Content-Type: text/x-delimtext; name="config.' . $phpEx . '"'); 483 header('Content-disposition: attachment; filename="config.' . $phpEx . '"'); 484 485 // We need to stripslashes no matter what the setting of magic_quotes_gpc is 486 // because we add slashes at the top if its off, and they are added automaticlly 487 // if it is on. 488 echo stripslashes($HTTP_POST_VARS['config_data']); 489 490 exit; 491 } 492 else if (!empty($HTTP_POST_VARS['send_file']) && $HTTP_POST_VARS['send_file'] == 2) 493 { 494 $s_hidden_fields = '<input type="hidden" name="config_data" value="' . htmlspecialchars(stripslashes($HTTP_POST_VARS['config_data'])) . '" />'; 495 $s_hidden_fields .= '<input type="hidden" name="ftp_file" value="1" />'; 496 497 if ($upgrade == 1) 498 { 499 $s_hidden_fields .= '<input type="hidden" name="upgrade" value="1" />'; 500 } 501 502 page_header($lang['ftp_instructs']); 503 504 ?> 505 <tr> 506 <th colspan="2"><?php echo $lang['ftp_info']; ?></th> 507 </tr> 508 <tr> 509 <td class="row1" align="right"><span class="gen"><?php echo $lang['ftp_path']; ?></span></td> 510 <td class="row2"><input type="text" name="ftp_dir"></td> 511 </tr> 512 <tr> 513 <td class="row1" align="right"><span class="gen"><?php echo $lang['ftp_username']; ?></span></td> 514 <td class="row2"><input type="text" name="ftp_user"></td> 515 </tr> 516 <tr> 517 <td class="row1" align="right"><span class="gen"><?php echo $lang['ftp_password']; ?></span></td> 518 <td class="row2"><input type="password" name="ftp_pass"></td> 519 </tr> 520 <?php 521 522 page_common_form($s_hidden_fields, $lang['Transfer_config']); 523 page_footer(); 524 exit; 525 526 } 527 else if (!empty($HTTP_POST_VARS['ftp_file'])) 528 { 529 // Try to connect ... 530 $conn_id = @ftp_connect('localhost'); 531 $login_result = @ftp_login($conn_id, "$ftp_user", "$ftp_pass"); 532 533 if (!$conn_id || !$login_result) 534 { 535 page_header($lang['NoFTP_config']); 536 537 // Error couldn't get connected... Go back to option to send file... 538 $s_hidden_fields = '<input type="hidden" name="config_data" value="' . htmlspecialchars(stripslashes($HTTP_POST_VARS['config_data'])) . '" />'; 539 $s_hidden_fields .= '<input type="hidden" name="send_file" value="1" />'; 540 541 // If we're upgrading ... 542 if ($upgrade == 1) 543 { 544 $s_hidden_fields .= '<input type="hidden" name="upgrade" value="1" />'; 545 $s_hidden_fields .= '<input type="hidden" name="dbms" value="'.$dmbs.'" />'; 546 $s_hidden_fields .= '<input type="hidden" name="prefix" value="'.$table_prefix.'" />'; 547 $s_hidden_fields .= '<input type="hidden" name="dbhost" value="'.$dbhost.'" />'; 548 $s_hidden_fields .= '<input type="hidden" name="dbname" value="'.$dbname.'" />'; 549 $s_hidden_fields .= '<input type="hidden" name="dbuser" value="'.$dbuser.'" />'; 550 $s_hidden_fields .= '<input type="hidden" name="dbpasswd" value="'.$dbpasswd.'" />'; 551 $s_hidden_fields .= '<input type="hidden" name="install_step" value="1" />'; 552 $s_hidden_fields .= '<input type="hidden" name="admin_pass1" value="1" />'; 553 $s_hidden_fields .= '<input type="hidden" name="admin_pass2" value="1" />'; 554 $s_hidden_fields .= '<input type="hidden" name="server_port" value="'.$server_port.'" />'; 555 $s_hidden_fields .= '<input type="hidden" name="server_name" value="'.$server_name.'" />'; 556 $s_hidden_fields .= '<input type="hidden" name="script_path" value="'.$script_path.'" />'; 557 $s_hidden_fields .= '<input type="hidden" name="board_email" value="'.$board_email.'" />'; 558 559 page_upgrade_form(); 560 } 561 else 562 { 563 page_common_form($s_hidden_fields, $lang['Download_config']); 564 565 } 566 567 page_footer(); 568 exit; 569 } 570 else 571 { 572 // Write out a temp file... 573 $tmpfname = @tempnam('/tmp', 'cfg'); 574 575 @unlink($tmpfname); // unlink for safety on php4.0.3+ 576 577 $fp = @fopen($tmpfname, 'w'); 578 579 @fwrite($fp, stripslashes($HTTP_POST_VARS['config_data'])); 580 581 @fclose($fp); 582 583 // Now ftp it across. 584 @ftp_chdir($conn_id, $ftp_dir); 585 586 $res = ftp_put($conn_id, 'config.'.$phpEx, $tmpfname, FTP_ASCII); 587 588 @ftp_quit($conn_id); 589 590 unlink($tmpfname); 591 592 if ($upgrade == 1) 593 { 594 require('upgrade.'.$phpEx); 595 exit; 596 } 597 598 // Ok we are basically done with the install process let's go on 599 // and let the user configure their board now. We are going to do 600 // this by calling the admin_board.php from the normal board admin 601 // section. 602 $s_hidden_fields = '<input type="hidden" name="username" value="' . $admin_name . '" />'; 603 $s_hidden_fields .= '<input type="hidden" name="password" value="' . $admin_pass1 . '" />'; 604 $s_hidden_fields .= '<input type="hidden" name="redirect" value="../admin/index.'.$phpEx.'" />'; 605 $s_hidden_fields .= '<input type="hidden" name="submit" value="' . $lang['Login'] . '" />'; 606 607 page_header($lang['Inst_Step_2']); 608 page_common_form($s_hidden_fields, $lang['Finish_Install']); 609 page_footer(); 610 exit(); 611 } 612 } 613 else if ((empty($install_step) || $admin_pass1 != $admin_pass2 || empty($admin_pass1) || empty($dbhost))) 614 { 615 // Ok we haven't installed before so lets work our way through the various 616 // steps of the install process. This could turn out to be quite a lengty 617 // process. 618 619 // Step 0 gather the pertinant info for database setup... 620 // Namely dbms, dbhost, dbname, dbuser, and dbpasswd. 621 $instruction_text = $lang['Inst_Step_0']; 622 623 if (!empty($install_step)) 624 { 625 if ((($HTTP_POST_VARS['admin_pass1'] != $HTTP_POST_VARS['admin_pass2'])) || 626 (empty($HTTP_POST_VARS['admin_pass1']) || empty($dbhost)) && $HTTP_POST_VARS['cur_lang'] == $language) 627 { 628 $error = $lang['Password_mismatch']; 629 } 630 } 631 632 $dirname = $phpbb_root_path . 'language'; 633 $dir = opendir($dirname); 634 635 $lang_options = array(); 636 while ($file = readdir($dir)) 637 { 638 if (preg_match('#^lang_#i', $file) && !is_file(@phpbb_realpath($dirname . '/' . $file)) && !is_link(@phpbb_realpath($dirname . '/' . $file))) 639 { 640 $filename = trim(str_replace('lang_', '', $file)); 641 $displayname = preg_replace('/^(.*?)_(.*)$/', '\1 [ \2 ]', $filename); 642 $displayname = preg_replace('/\[(.*?)_(.*)\]/', '[ \1 - \2 ]', $displayname); 643 $lang_options[$displayname] = $filename; 644 } 645 } 646 647 closedir($dir); 648 649 @asort($lang_options); 650 @reset($lang_options); 651 652 $lang_select = '<select name="lang" onchange="this.form.submit()">'; 653 while (list($displayname, $filename) = @each($lang_options)) 654 { 655 $selected = ($language == $filename) ? ' selected="selected"' : ''; 656 $lang_select .= '<option value="' . $filename . '"' . $selected . '>' . ucwords($displayname) . '</option>'; 657 } 658 $lang_select .= '</select>'; 659 660 $dbms_select = '<select name="dbms" onchange="if(this.form.upgrade.options[this.form.upgrade.selectedIndex].value == 1){ this.selectedIndex = 0;}">'; 661 while (list($dbms_name, $details) = @each($available_dbms)) 662 { 663 $selected = ($dbms_name == $dbms) ? 'selected="selected"' : ''; 664 $dbms_select .= '<option value="' . $dbms_name . '">' . $details['LABEL'] . '</option>'; 665 } 666 $dbms_select .= '</select>'; 667 668 $upgrade_option = '<select name="upgrade"'; 669 $upgrade_option .= 'onchange="if (this.options[this.selectedIndex].value == 1) { this.form.dbms.selectedIndex = 0; }">'; 670 $upgrade_option .= '<option value="0">' . $lang['Install'] . '</option>'; 671 $upgrade_option .= '<option value="1">' . $lang['Upgrade'] . '</option></select>'; 672 673 $s_hidden_fields = '<input type="hidden" name="install_step" value="1" /><input type="hidden" name="cur_lang" value="' . $language . '" />'; 674 675 page_header($instruction_text); 676 677 ?> 678 <tr> 679 <th colspan="2"><?php echo $lang['Initial_config']; ?></th> 680 </tr> 681 <tr> 682 <td class="row1" align="right" width="30%"><span class="gen"><?php echo $lang['Default_lang']; ?>: </span></td> 683 <td class="row2"><?php echo $lang_select; ?></td> 684 </tr> 685 <tr> 686 <td class="row1" align="right"><span class="gen"><?php echo $lang['dbms']; ?>: </span></td> 687 <td class="row2"><?php echo $dbms_select; ?></td> 688 </tr> 689 <tr> 690 <td class="row1" align="right"><span class="gen"><?php echo $lang['Install_Method']; ?>:</span></td> 691 <td class="row2"><?php echo $upgrade_option; ?></td> 692 </tr> 693 <tr> 694 <th colspan="2"><?php echo $lang['DB_config']; ?></th> 695 </tr> 696 <tr> 697 <td class="row1" align="right"><span class="gen"><?php echo $lang['DB_Host']; ?>: </span></td> 698 <td class="row2"><input type="text" name="dbhost" value="<?php echo ($dbhost != '') ? $dbhost : ''; ?>" /></td> 699 </tr> 700 <tr> 701 <td class="row1" align="right"><span class="gen"><?php echo $lang['DB_Name']; ?>: </span></td> 702 <td class="row2"><input type="text" name="dbname" value="<?php echo ($dbname != '') ? $dbname : ''; ?>" /></td> 703 </tr> 704 <tr> 705 <td class="row1" align="right"><span class="gen"><?php echo $lang['DB_Username']; ?>: </span></td> 706 <td class="row2"><input type="text" name="dbuser" value="<?php echo ($dbuser != '') ? $dbuser : ''; ?>" /></td> 707 </tr> 708 <tr> 709 <td class="row1" align="right"><span class="gen"><?php echo $lang['DB_Password']; ?>: </span></td> 710 <td class="row2"><input type="password" name="dbpasswd" value="<?php echo ($dbpasswd != '') ? $dbpasswd : ''; ?>" /></td> 711 </tr> 712 <tr> 713 <td class="row1" align="right"><span class="gen"><?php echo $lang['Table_Prefix']; ?>: </span></td> 714 <td class="row2"><input type="text" name="prefix" value="<?php echo (!empty($table_prefix)) ? $table_prefix : "phpbb_"; ?>" /></td> 715 </tr> 716 <tr> 717 <th colspan="2"><?php echo $lang['Admin_config']; ?></th> 718 </tr> 719 <?php 720 721 if ($error) 722 { 723 ?> 724 <tr> 725 <td class="row1" colspan="2" align="center"><span class="gen" style="color:red"><?php echo $error; ?></span></td> 726 </tr> 727 <?php 728 729 } 730 ?> 731 <tr> 732 <td class="row1" align="right"><span class="gen"><?php echo $lang['Admin_email']; ?>: </span></td> 733 <td class="row2"><input type="text" name="board_email" value="<?php echo ($board_email != '') ? $board_email : ''; ?>" /></td> 734 </tr> 735 <tr> 736 <td class="row1" align="right"><span class="gen"><?php echo $lang['Server_name']; ?>: </span></td> 737 <td class="row2"><input type="text" name="server_name" value="<?php echo $server_name; ?>" /></td> 738 </tr> 739 <tr> 740 <td class="row1" align="right"><span class="gen"><?php echo $lang['Server_port']; ?>: </span></td> 741 <td class="row2"><input type="text" name="server_port" value="<?php echo $server_port; ?>" /></td> 742 </tr> 743 <tr> 744 <td class="row1" align="right"><span class="gen"><?php echo $lang['Script_path']; ?>: </span></td> 745 <td class="row2"><input type="text" name="script_path" value="<?php echo $script_path; ?>" /></td> 746 </tr> 747 <tr> 748 <td class="row1" align="right"><span class="gen"><?php echo $lang['Admin_Username']; ?>: </span></td> 749 <td class="row2"><input type="text" name="admin_name" value="<?php echo ($admin_name != '') ? $admin_name : ''; ?>" /></td> 750 </tr> 751 <tr> 752 <td class="row1" align="right"><span class="gen"><?php echo $lang['Admin_Password']; ?>: </span></td> 753 <td class="row2"><input type="password" name="admin_pass1" value="<?php echo ($admin_pass1 != '') ? $admin_pass1 : ''; ?>" /></td> 754 </tr> 755 <tr> 756 <td class="row1" align="right"><span class="gen"><?php echo $lang['Admin_Password_confirm']; ?>: </span></td> 757 <td class="row2"><input type="password" name="admin_pass2" value="<?php echo ($admin_pass2 != '') ? $admin_pass2 : ''; ?>" /></td> 758 </tr> 759 <?php 760 761 page_common_form($s_hidden_fields, $lang['Start_Install']); 762 page_footer(); 763 exit; 764 } 765 else 766 { 767 // Go ahead and create the DB, then populate it 768 // 769 // MS Access is slightly different in that a pre-built, pre- 770 // populated DB is supplied, all we need do here is update 771 // the relevant entries 772 if (isset($dbms)) 773 { 774 switch($dbms) 775 { 776 case 'msaccess': 777 case 'mssql-odbc': 778 $check_exts = 'odbc'; 779 $check_other = 'odbc'; 780 break; 781 782 case 'mssql': 783 $check_exts = 'mssql'; 784 $check_other = 'sybase'; 785 break; 786 787 case 'mysql': 788 case 'mysql4': 789 $check_exts = 'mysql'; 790 $check_other = 'mysql'; 791 break; 792 793 case 'postgres': 794 $check_exts = 'pgsql'; 795 $check_other = 'pgsql'; 796 break; 797 } 798 799 if (!extension_loaded($check_exts) && !extension_loaded($check_other)) 800 { 801 page_header($lang['Install'], ''); 802 page_error($lang['Installer_Error'], $lang['Install_No_Ext']); 803 page_footer(); 804 exit; 805 } 806 807 include($phpbb_root_path.'includes/db.'.$phpEx); 808 } 809 810 $dbms_schema = 'schemas/' . $available_dbms[$dbms]['SCHEMA'] . '_schema.sql'; 811 $dbms_basic = 'schemas/' . $available_dbms[$dbms]['SCHEMA'] . '_basic.sql'; 812 813 $remove_remarks = $available_dbms[$dbms]['COMMENTS'];; 814 $delimiter = $available_dbms[$dbms]['DELIM']; 815 $delimiter_basic = $available_dbms[$dbms]['DELIM_BASIC']; 816 817 if ($install_step == 1) 818 { 819 if ($upgrade != 1) 820 { 821 if ($dbms != 'msaccess') 822 { 823 // Load in the sql parser 824 include($phpbb_root_path.'includes/sql_parse.'.$phpEx); 825 826 // Ok we have the db info go ahead and read in the relevant schema 827 // and work on building the table.. probably ought to provide some 828 // kind of feedback to the user as we are working here in order 829 // to let them know we are actually doing something. 830 $sql_query = @fread(@fopen($dbms_schema, 'r'), @filesize($dbms_schema)); 831 $sql_query = preg_replace('/phpbb_/', $table_prefix, $sql_query); 832 833 $sql_query = $remove_remarks($sql_query); 834 $sql_query = split_sql_file($sql_query, $delimiter); 835 836 for ($i = 0; $i < sizeof($sql_query); $i++) 837 { 838 if (trim($sql_query[$i]) != '') 839 { 840 if (!($result = $db->sql_query($sql_query[$i]))) 841 { 842 $error = $db->sql_error(); 843 844 page_header($lang['Install'], ''); 845 page_error($lang['Installer_Error'], $lang['Install_db_error'] . '<br />' . $error['message']); 846 page_footer(); 847 exit; 848 } 849 } 850 } 851 852 // Ok tables have been built, let's fill in the basic information 853 $sql_query = @fread(@fopen($dbms_basic, 'r'), @filesize($dbms_basic)); 854 $sql_query = preg_replace('/phpbb_/', $table_prefix, $sql_query); 855 856 $sql_query = $remove_remarks($sql_query); 857 $sql_query = split_sql_file($sql_query, $delimiter_basic); 858 859 for($i = 0; $i < sizeof($sql_query); $i++) 860 { 861 if (trim($sql_query[$i]) != '') 862 { 863 if (!($result = $db->sql_query($sql_query[$i]))) 864 { 865 $error = $db->sql_error(); 866 867 page_header($lang['Install'], ''); 868 page_error($lang['Installer_Error'], $lang['Install_db_error'] . '<br />' . $error['message']); 869 page_footer(); 870 exit; 871 } 872 } 873 } 874 } 875 876 // Ok at this point they have entered their admin password, let's go 877 // ahead and create the admin account with some basic default information 878 // that they can customize later, and write out the config file. After 879 // this we are going to pass them over to the admin_forum.php script 880 // to set up their forum defaults. 881 $error = ''; 882 883 // Update the default admin user with their information. 884 $sql = "INSERT INTO " . $table_prefix . "config (config_name, config_value) 885 VALUES ('board_startdate', " . time() . ")"; 886 if (!$db->sql_query($sql)) 887 { 888 $error .= "Could not insert board_startdate :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />"; 889 } 890 891 $sql = "INSERT INTO " . $table_prefix . "config (config_name, config_value) 892 VALUES ('default_lang', '" . str_replace("\'", "''", $language) . "')"; 893 if (!$db->sql_query($sql)) 894 { 895 $error .= "Could not insert default_lang :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />"; 896 } 897 898 $update_config = array( 899 'board_email' => $board_email, 900 'script_path' => $script_path, 901 'server_port' => $server_port, 902 'server_name' => $server_name, 903 ); 904 905 while (list($config_name, $config_value) = each($update_config)) 906 { 907 $sql = "UPDATE " . $table_prefix . "config 908 SET config_value = '$config_value' 909 WHERE config_name = '$config_name'"; 910 if (!$db->sql_query($sql)) 911 { 912 $error .= "Could not insert default_lang :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />"; 913 } 914 } 915 916 $admin_pass_md5 = ($confirm && $userdata['user_level'] == ADMIN) ? $admin_pass1 : md5($admin_pass1); 917 918 $sql = "UPDATE " . $table_prefix . "users 919 SET username = '" . str_replace("\'", "''", $admin_name) . "', user_password='" . str_replace("\'", "''", $admin_pass_md5) . "', user_lang = '" . str_replace("\'", "''", $language) . "', user_email='" . str_replace("\'", "''", $board_email) . "' 920 WHERE username = 'Admin'"; 921 if (!$db->sql_query($sql)) 922 { 923 $error .= "Could not update admin info :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />"; 924 } 925 926 $sql = "UPDATE " . $table_prefix . "users 927 SET user_regdate = " . time(); 928 if (!$db->sql_query($sql)) 929 { 930 $error .= "Could not update user_regdate :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />"; 931 } 932 933 if ($error != '') 934 { 935 page_header($lang['Install'], ''); 936 page_error($lang['Installer_Error'], $lang['Install_db_error'] . '<br /><br />' . $error); 937 page_footer(); 938 exit; 939 } 940 } 941 942 if (!$upgrade_now) 943 { 944 // Write out the config file. 945 $config_data = '<?php'."\n\n"; 946 $config_data .= "\n// phpBB 2.x auto-generated config file\n// Do not change anything in this file!\n\n"; 947 $config_data .= '$dbms = \'' . $dbms . '\';' . "\n\n"; 948 $config_data .= '$dbhost = \'' . $dbhost . '\';' . "\n"; 949 $config_data .= '$dbname = \'' . $dbname . '\';' . "\n"; 950 $config_data .= '$dbuser = \'' . $dbuser . '\';' . "\n"; 951 $config_data .= '$dbpasswd = \'' . $dbpasswd . '\';' . "\n\n"; 952 $config_data .= '$table_prefix = \'' . $table_prefix . '\';' . "\n\n"; 953 $config_data .= 'define(\'PHPBB_INSTALLED\', true);'."\n\n"; 954 $config_data .= '?' . '>'; // Done this to prevent highlighting editors getting confused! 955 956 @umask(0111); 957 $no_open = FALSE; 958 959 // Unable to open the file writeable do something here as an attempt 960 // to get around that... 961 if (!($fp = @fopen($phpbb_root_path . 'config.'.$phpEx, 'w'))) 962 { 963 $s_hidden_fields = '<input type="hidden" name="config_data" value="' . htmlspecialchars($config_data) . '" />'; 964 965 if (@extension_loaded('ftp') && !defined('NO_FTP')) 966 { 967 page_header($lang['Unwriteable_config'] . '<p>' . $lang['ftp_option'] . '</p>'); 968 969 ?> 970 <tr> 971 <th colspan="2"><?php echo $lang['ftp_choose']; ?></th> 972 </tr> 973 <tr> 974 <td class="row1" align="right" width="50%"><span class="gen"><?php echo $lang['Attempt_ftp']; ?></span></td> 975 <td class="row2"><input type="radio" name="send_file" value="2"></td> 976 </tr> 977 <tr> 978 <td class="row1" align="right" width="50%"><span class="gen"><?php echo $lang['Send_file']; ?></span></td> 979 <td class="row2"><input type="radio" name="send_file" value="1"></td> 980 </tr> 981 <?php 982 983 } 984 else 985 { 986 page_header($lang['Unwriteable_config']); 987 $s_hidden_fields .= '<input type="hidden" name="send_file" value="1" />'; 988 } 989 990 if ($upgrade == 1) 991 { 992 $s_hidden_fields .= '<input type="hidden" name="upgrade" value="1" />'; 993 $s_hidden_fields .= '<input type="hidden" name="dbms" value="'.$dbms.'" />'; 994 $s_hidden_fields .= '<input type="hidden" name="prefix" value="'.$table_prefix.'" />'; 995 $s_hidden_fields .= '<input type="hidden" name="dbhost" value="'.$dbhost.'" />'; 996 $s_hidden_fields .= '<input type="hidden" name="dbname" value="'.$dbname.'" />'; 997 $s_hidden_fields .= '<input type="hidden" name="dbuser" value="'.$dbuser.'" />'; 998 $s_hidden_fields .= '<input type="hidden" name="dbpasswd" value="'.$dbpasswd.'" />'; 999 $s_hidden_fields .= '<input type="hidden" name="install_step" value="1" />'; 1000 $s_hidden_fields .= '<input type="hidden" name="admin_pass1" value="1" />'; 1001 $s_hidden_fields .= '<input type="hidden" name="admin_pass2" value="1" />'; 1002 $s_hidden_fields .= '<input type="hidden" name="server_port" value="'.$server_port.'" />'; 1003 $s_hidden_fields .= '<input type="hidden" name="server_name" value="'.$server_name.'" />'; 1004 $s_hidden_fields .= '<input type="hidden" name="script_path" value="'.$script_path.'" />'; 1005 $s_hidden_fields .= '<input type="hidden" name="board_email" value="'.$board_email.'" />'; 1006 1007 page_upgrade_form(); 1008 1009 } 1010 else 1011 { 1012 page_common_form($s_hidden_fields, $lang['Download_config']); 1013 } 1014 1015 page_footer(); 1016 exit; 1017 } 1018 1019 $result = @fputs($fp, $config_data, strlen($config_data)); 1020 1021 @fclose($fp); 1022 $upgrade_now = $lang['upgrade_submit']; 1023 } 1024 1025 // First off let's check and see if we are supposed to be doing an upgrade. 1026 if ($upgrade == 1 && $upgrade_now == $lang['upgrade_submit']) 1027 { 1028 define('INSTALLING', true); 1029 require('upgrade.'.$phpEx); 1030 exit; 1031 } 1032 1033 // Ok we are basically done with the install process let's go on 1034 // and let the user configure their board now. We are going to do 1035 // this by calling the admin_board.php from the normal board admin 1036 // section. 1037 $s_hidden_fields = '<input type="hidden" name="username" value="' . $admin_name . '" />'; 1038 $s_hidden_fields .= '<input type="hidden" name="password" value="' . $admin_pass1 . '" />'; 1039 $s_hidden_fields .= '<input type="hidden" name="redirect" value="admin/index.'.$phpEx.'" />'; 1040 $s_hidden_fields .= '<input type="hidden" name="login" value="true" />'; 1041 1042 page_header($lang['Inst_Step_2'], '../login.'.$phpEx); 1043 page_common_form($s_hidden_fields, $lang['Finish_Install']); 1044 page_footer(); 1045 exit; 1046 } 1047 } 1048 1049 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Mon Jan 14 19:21:40 2013 | Cross-referenced by PHPXref 0.7.1 |