. * *******************************************************************************/ $default_settings['forum_name'] = 'my little forum'; $default_settings['forum_address'] = 'http://'.$_SERVER['HTTP_HOST'].substr(rtrim(dirname($_SERVER['PHP_SELF']), '/\\'),0,strrpos(rtrim(dirname($_SERVER['PHP_SELF']), '/\\'),'/')).'/'; $default_settings['table_prefix'] = 'mlf2_'; define('IN_INDEX', TRUE); include('../config/db_settings.php'); include('../includes/functions.inc.php'); // stripslashes on GPC if get_magic_quotes_gpc is enabled: if(get_magic_quotes_gpc()) { function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } $_POST = array_map('stripslashes_deep', $_POST); $_GET = array_map('stripslashes_deep', $_GET); $_COOKIE = array_map('stripslashes_deep', $_COOKIE); $_REQUEST = array_map('stripslashes_deep', $_REQUEST); } function table_exists($table) { global $connid; $result = @mysql_query("SHOW TABLES", $connid); while($row = mysql_fetch_array($result)) { if($table==$row[0]) return true; } return false; } if(isset($_POST['language_file'])) $language_file = $_POST['language_file']; // try to connect to the database... if($connid = @mysql_connect($db_settings['host'], $db_settings['user'], $db_settings['password'])) { if(@mysql_select_db($db_settings['database'], $connid)) { @mysql_query('SET NAMES utf8', $connid); if(table_exists($db_settings['forum_table'])) { // the forum seems to be installed header('Location: ../'); exit; } } } // language already selected? if(empty($language_file)) { // get available languages: $handle=opendir('../lang/'); while ($file = readdir($handle)) { if(strrchr($file, ".")==".lang") { $file_array[] = $file; } } closedir($handle); natcasesort($file_array); $i=0; foreach($file_array as $file) { $language_files[$i]['file'] = $file; $language_files[$i]['language'] = ucfirst(str_replace(".lang","",$file)); $language_parts = explode('.', $language_files[$i]['language']); if(isset($language_parts[1])) $language_files[$i]['language'] = $language_parts[0].' ('.$language_parts[1].')'; $i++; } if(empty($language_files)) die('No language file available.'); elseif(count($language_files)==1) { // there's only one language file so take this one: $language_file = $language_files[0]['file']; } else { // there are several language files so let the user choose one: $action = 'choose_language'; } } // set provisional language file: if(empty($language_file)) $language_file = 'english.lang'; if(isset($language_file)) { if(!file_exists('../lang/'.$language_file) && isset($language_files[0]['file'])) $language_file = $language_files[0]['file']; if(!file_exists('../lang/'.$language_file)) die('Language file not available.'); // quick & dirty method to get the config vars without smarty (prevents // creation of a compiled template which would only be used once for the // installation - doesn't get multi-line-strings properly!): $config_file = file('../lang/'.$language_file); foreach($config_file as $line) { $line = trim($line); if($line!='' && $line[0]!='[') { $line_parts = explode('=',$line,2); if(isset($line_parts[1])) { $key = trim($line_parts[0]); if(isset($lang[$key])) { if(is_array($lang[$key])) { $lang[$key][] = trim($line_parts[1]); } else { $lang[$key] = array($lang[$key]); $lang[$key][] = trim($line_parts[1]); } } else { $lang[$key] = trim($line_parts[1]); } } } } } if(isset($_POST['install_submit'])) { // are all fields filled out? foreach ($_POST as $post) { if(trim($post) == "") { $errors[] = $lang['error_form_uncomplete']; break; } } if(empty($errors)) { if($_POST['admin_pw'] != $_POST['admin_pw_conf']) $errors[] = $lang['error_conf_pw']; } // try to connect the database with posted access data: if(empty($errors)) { $connid = @mysql_connect($_POST['host'], $_POST['user'], $_POST['password']); if(!$connid) $errors[] = $lang['error_db_connection']." (MySQL: ".mysql_error().")"; } if(empty($errors)) { if(!file_exists('install.sql')) $errors[] = $lang['error_sql_file_doesnt_exist']; } // overwrite database settings file: if(empty($errors) && empty($_POST['dont_overwrite_settings'])) { clearstatcache(); $chmod = decoct(fileperms("../config/db_settings.php")); $db_settings['host'] = $_POST['host']; $db_settings['user'] = $_POST['user']; $db_settings['password'] = $_POST['password']; $db_settings['database'] = $_POST['database']; $db_settings['settings_table'] = $_POST['table_prefix'].'settings'; $db_settings['forum_table'] = $_POST['table_prefix'].'entries'; $db_settings['category_table'] = $_POST['table_prefix'].'categories'; $db_settings['userdata_table'] = $_POST['table_prefix'].'userdata'; $db_settings['smilies_table'] = $_POST['table_prefix'].'smilies'; $db_settings['pages_table'] = $_POST['table_prefix'].'pages'; $db_settings['banlists_table'] = $_POST['table_prefix'].'banlists'; $db_settings['useronline_table'] = $_POST['table_prefix'].'useronline'; $db_settings['login_control_table'] = $_POST['table_prefix'].'logincontrol'; $db_settings['entry_cache_table'] = $_POST['table_prefix'].'entries_cache'; $db_settings['userdata_cache_table'] = $_POST['table_prefix'].'userdata_cache'; $db_settings_file = @fopen("../config/db_settings.php", "w") or $errors[] = str_replace("[CHMOD]",$chmod,$lang['error_overwrite_config_file']); if(empty($errors)) { flock($db_settings_file, 2); fwrite($db_settings_file, "\n"); flock($db_settings_file, 3); fclose($db_settings_file); } } if(empty($errors) && isset($_POST['create_database'])) { // create database if desired: @mysql_query("CREATE DATABASE ".$db_settings['database'], $connid) or $errors[] = $lang['create_db_error']." (MySQL: ".mysql_error($connid).")"; } // select database: if(empty($errors)) { @mysql_select_db($db_settings['database'], $connid) or $errors[] = $lang['error_db_inexistent']." (MySQL: ".mysql_error($connid).")"; @mysql_query('SET NAMES utf8', $connid); } // run installation sql file: if(empty($errors)) { $lines = file('install.sql'); $cleared_lines = array(); foreach($lines as $line) { $line = str_replace(' mlf2_', ' '.$_POST['table_prefix'], $line); $line = trim($line); if(my_substr($line, -1, my_strlen($line,$lang['charset']), $lang['charset'])==';') $line = my_substr($line,0,-1,$lang['charset']); if($line != '' && my_substr($line,0,1,$lang['charset'])!='#') $cleared_lines[] = $line; } @mysql_query("START TRANSACTION", $connid) or die(mysql_error()); foreach($cleared_lines as $line) { if(!@mysql_query($line, $connid)) { $errors[] = $lang['error_sql']." (MySQL: ".mysql_error($connid).")"; #break; } } @mysql_query("COMMIT", $connid); } // insert admin in userdata table: if(empty($errors)) { $pw_hash = generate_pw_hash($_POST['admin_pw']); @mysql_query("UPDATE ".$db_settings['userdata_table']." SET user_name='".mysql_real_escape_string($_POST['admin_name'])."', user_pw = '".mysql_real_escape_string($pw_hash)."', user_email = '".mysql_real_escape_string($_POST['admin_email'])."' WHERE user_id=1", $connid) or $errors[] = $lang['error_create_admin']." (MySQL: ".mysql_error($connid).")"; } // set forum name, address and email address: if(empty($errors)) { @mysql_query("UPDATE ".$db_settings['settings_table']." SET value='".mysql_real_escape_string($_POST['forum_name'])."' WHERE name='forum_name' LIMIT 1", $connid) or $errors[] = $lang['error_update_settings']." (MySQL: ".mysql_error($connid).")"; @mysql_query("UPDATE ".$db_settings['settings_table']." SET value='".mysql_real_escape_string($_POST['forum_address'])."' WHERE name='forum_address' LIMIT 1", $connid) or $errors[] = $lang['error_update_settings']." (MySQL: ".mysql_error($connid).")"; @mysql_query("UPDATE ".$db_settings['settings_table']." SET value='".mysql_real_escape_string($_POST['forum_email'])."' WHERE name='forum_email' LIMIT 1", $connid) or $errors[] = $lang['error_update_settings']." (MySQL: ".mysql_error($connid).")"; @mysql_query("UPDATE ".$db_settings['settings_table']." SET value='".mysql_real_escape_string($_POST['language_file'])."' WHERE name='language_file' LIMIT 1", $connid) or $errors[] = $lang['error_update_settings']." (MySQL: ".mysql_error($connid).")"; } if(empty($errors)) { header('Location: ../'); exit; } } if(empty($action)) $action = 'install'; header('Content-Type: text/html; charset='.$lang['charset']); ?>