From 5c642ad782ed0e460693b69fd588a1014d6cfbfd Mon Sep 17 00:00:00 2001
From: "(no author)" <(no author)@89ea8834-ac86-4346-8a33-228a782c2dd0>
Date: Tue, 17 Dec 2002 23:59:07 +0000
Subject: [PATCH] This commit was manufactured by cvs2svn to create branch
'phpBB-2_0_0'.
git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@3196 89ea8834-ac86-4346-8a33-228a782c2dd0
---
phpBB/install/install.php | 882 +++++++++
phpBB/install/schemas/index.htm | 10 +
phpBB/install/schemas/ms_access_primer.zip | Bin 0 -> 58105 bytes
phpBB/install/schemas/mssql_basic.sql | 244 +++
phpBB/install/schemas/mssql_schema.sql | 678 +++++++
phpBB/install/schemas/mysql_basic.sql | 309 ++++
phpBB/install/schemas/mysql_schema.sql | 713 +++++++
phpBB/install/schemas/postgres_basic.sql | 184 ++
phpBB/install/schemas/postgres_schema.sql | 549 ++++++
phpBB/install/upgrade.php | 1941 ++++++++++++++++++++
10 files changed, 5510 insertions(+)
create mode 100644 phpBB/install/install.php
create mode 100644 phpBB/install/schemas/index.htm
create mode 100644 phpBB/install/schemas/ms_access_primer.zip
create mode 100644 phpBB/install/schemas/mssql_basic.sql
create mode 100644 phpBB/install/schemas/mssql_schema.sql
create mode 100644 phpBB/install/schemas/mysql_basic.sql
create mode 100644 phpBB/install/schemas/mysql_schema.sql
create mode 100644 phpBB/install/schemas/postgres_basic.sql
create mode 100644 phpBB/install/schemas/postgres_schema.sql
create mode 100644 phpBB/install/upgrade.php
diff --git a/phpBB/install/install.php b/phpBB/install/install.php
new file mode 100644
index 0000000000..cb33ca7c73
--- /dev/null
+++ b/phpBB/install/install.php
@@ -0,0 +1,882 @@
+ array(
+ 'LABEL' => 'MySQL 3.x',
+ 'SCHEMA' => 'mysql',
+ 'DELIM' => ';',
+ 'DELIM_BASIC' => ';',
+ 'COMMENTS' => 'remove_remarks'
+ ),
+ 'mysql4' => array(
+ 'LABEL' => 'MySQL 4.x',
+ 'SCHEMA' => 'mysql',
+ 'DELIM' => ';',
+ 'DELIM_BASIC' => ';',
+ 'COMMENTS' => 'remove_remarks'
+ ),
+ 'postgres' => array(
+ 'LABEL' => 'PostgreSQL 7.x',
+ 'SCHEMA' => 'postgres',
+ 'DELIM' => ';',
+ 'DELIM_BASIC' => ';',
+ 'COMMENTS' => 'remove_comments'
+ ),
+ 'mssql' => array(
+ 'LABEL' => 'MS SQL Server 7/2000',
+ 'SCHEMA' => 'mssql',
+ 'DELIM' => 'GO',
+ 'DELIM_BASIC' => ';',
+ 'COMMENTS' => 'remove_comments'
+ ),
+ 'msaccess' => array(
+ 'LABEL' => 'MS Access [ ODBC ]',
+ 'SCHEMA' => '',
+ 'DELIM' => '',
+ 'DELIM_BASIC' => ';',
+ 'COMMENTS' => ''
+ ),
+ 'mssql-odbc' => array(
+ 'LABEL' => 'MS SQL Server [ ODBC ]',
+ 'SCHEMA' => 'mssql',
+ 'DELIM' => 'GO',
+ 'DELIM_BASIC' => ';',
+ 'COMMENTS' => 'remove_comments'
+ )
+);
+
+//
+// Uncomment the following line to completely disable the ftp option...
+//
+// define('NO_FTP', true);
+
+/***************************************************************************
+*
+* End Install Customization Section
+*
+***************************************************************************/
+
+//
+// Try opening config file
+//
+if ( @file_exists('../config.'.$phpEx) )
+{
+ include('../config.'.$phpEx);
+}
+
+//
+// Obtain various vars
+//
+$confirm = ( isset($_POST['confirm']) ) ? true : false;
+$cancel = ( isset($_POST['cancel']) ) ? true : false;
+
+if ( isset($_POST['install_step']) || isset($_GET['install_step']) )
+{
+ $install_step = ( isset($_POST['install_step']) ) ? $_POST['install_step'] : $_GET['install_step'];
+}
+else
+{
+ $install_step = '';
+}
+
+$upgrade = ( !empty($_POST['upgrade']) ) ? $_POST['upgrade']: '';
+$upgrade_now = ( !empty($_POST['upgrade_now']) ) ? $_POST['upgrade_now']:'';
+
+$dbms = isset($_POST['dbms']) ? $_POST['dbms'] : '';
+$language = ( !empty($_POST['language']) ) ? $_POST['language'] : $default_language;
+
+$dbhost = ( !empty($_POST['dbhost']) ) ? $_POST['dbhost'] : '';
+$dbuser = ( !empty($_POST['dbuser']) ) ? $_POST['dbuser'] : '';
+$dbpasswd = ( !empty($_POST['dbpasswd']) ) ? $_POST['dbpasswd'] : '';
+$dbname = ( !empty($_POST['dbname']) ) ? $_POST['dbname'] : '';
+
+$table_prefix = ( !empty($_POST['prefix']) ) ? $_POST['prefix'] : '';
+
+$admin_name = ( !empty($_POST['admin_name']) ) ? $_POST['admin_name'] : '';
+$admin_pass1 = ( !empty($_POST['admin_pass1']) ) ? $_POST['admin_pass1'] : '';
+$admin_pass2 = ( !empty($_POST['admin_pass2']) ) ? $_POST['admin_pass2'] : '';
+
+$ftp_path = ( !empty($_POST['ftp_path']) ) ? $_POST['ftp_path'] : '';
+$ftp_user = ( !empty($_POST['ftp_user']) ) ? $_POST['ftp_user'] : '';
+$ftp_pass = ( !empty($_POST['ftp_pass']) ) ? $_POST['ftp_pass'] : '';
+
+$server_name = ( !empty($_POST['server_name']) ) ? $_POST['server_name'] : '';
+$server_port = ( !empty($_POST['server_port']) ) ? $_POST['server_port'] : '';
+$board_email = ( !empty($_POST['board_email']) ) ? $_POST['board_email'] : '';
+$script_path = ( !empty($_POST['script_path']) ) ? $_POST['script_path'] : '';
+
+//
+// Do we install/upgrade/update or quit back to index?
+//
+if ( !defined('PHPBB_INSTALLED') )
+{
+ include($phpbb_root_path . 'includes/session.'.$phpEx);
+ include($phpbb_root_path . 'includes/functions_admin.'.$phpEx);
+
+ // Import language file, setup template ...
+ include($phpbb_root_path . 'language/' . $language . '/lang_main.'.$phpEx);
+ include($phpbb_root_path . 'language/' . $language . '/lang_admin.'.$phpEx);
+
+ if ( $upgrade == 1 )
+ {
+ require('upgrade.'.$phpEx);
+ $install_step = 1;
+ }
+}
+else
+{
+ header("Location: ../index.$phpEx");
+ exit;
+}
+
+//
+// What shall we do?
+//
+if ( !empty($_POST['send_file']) && $_POST['send_file'] == 1 && !defined("PHPBB_INSTALLED") && empty($_POST['upgrade_now']) )
+{
+ //
+ // We need to stripslashes no matter what the setting of magic_quotes_gpc is
+ // because we add slahes at the top if its off, and they are added automaticlly
+ // if it is on.
+ //
+ $_POST['config_data'] = stripslashes($_POST['config_data']);
+
+ header("Content-Type: text/x-delimtext; name=\"config.$phpEx\"");
+ header("Content-disposition: attachment; filename=config.$phpEx");
+ echo $_POST['config_data'];
+ exit;
+
+}
+else if ( !empty($_POST['send_file']) && $_POST['send_file'] == 2 && !defined("PHPBB_INSTALLED") )
+{
+ //
+ // Ok we couldn't write the config file so let's try ftping it.
+ //
+
+ $_POST['config_data'] = stripslashes($_POST['config_data']);
+
+ $s_hidden_fields = '';
+ $s_hidden_fields .= '';
+
+ if ( $upgrade == 1 )
+ {
+ $s_hidden_fields .= '';
+ }
+
+ $template->assign_block_vars("switch_ftp_file", array());
+ $template->assign_block_vars("switch_common_install", array());
+
+ $template->assign_vars(array(
+ "L_INSTRUCTION_TEXT" => $lang['ftp_instructs'],
+ "L_FTP_INFO" => $lang['ftp_info'],
+ "L_FTP_PATH" => $lang['ftp_path'],
+ "L_FTP_PASS" => $lang['ftp_password'],
+ "L_FTP_USER" => $lang['ftp_username'],
+ "L_SUBMIT" => $lang['Transfer_config'],
+
+ "S_HIDDEN_FIELDS" => $s_hidden_fields,
+ "S_FORM_ACTION" => "install.$phpEx")
+ );
+
+ $template->pparse("body");
+
+ exit;
+
+}
+else if( !empty($_POST['ftp_file']) && !defined("PHPBB_INSTALLED") )
+{
+ //
+ // Here we'll actually send the file...
+ //
+ $_POST['config_data'] = stripslashes($_POST['config_data']);
+
+ $conn_id = @ftp_connect('localhost');
+ $login_result = @ftp_login($conn_id, "$ftp_user", "$ftp_pass");
+
+ if ( !$conn_id || !$login_result )
+ {
+ //
+ // Error couldn't get connected... Go back to option to send file...
+ //
+ $s_hidden_fields = '';
+ $s_hidden_fields .= '';
+
+ page_header($lang['NoFTP_config'], "install.$phpEx");
+
+ if ( $upgrade == 1 )
+ {
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+
+ $template->assign_block_vars("switch_upgrade_install", array());
+ $template->assign_vars(array(
+ "L_UPGRADE_INST" => $lang['continue_upgrade'],
+ "L_UPGRADE_SUBMIT" => $lang['upgrade_submit'])
+ );
+ }
+
+ page_footer($lang['Download_config'], $s_hidden_fields);
+
+ exit;
+ }
+ else
+ {
+ //
+ // Write out a temp file...
+ //
+ $tmpfname = @tempnam('/tmp', 'cfg');
+
+ @unlink($tmpfname); // unlink for safety on php4.0.3+
+
+ $fp = @fopen($tmpfname, 'w');
+
+ @fwrite($fp, $_POST['config_data']);
+
+ @fclose($fp);
+
+ //
+ // Now ftp it across.
+ //
+ @ftp_chdir($conn_id, $ftp_dir);
+
+ $res = ftp_put($conn_id, '../config.'.$phpEx, $tmpfname, FTP_ASCII);
+
+ @ftp_quit($conn_id);
+
+ unlink($tmpfname);
+
+ if( $upgrade == 1 )
+ {
+ require('upgrade.'.$phpEx);
+ exit;
+ }
+
+ //
+ // Ok we are basically done with the install process let's go on and let the user
+ // configure their board now. We are going to do this by calling the admin_board.php
+ // from the normal board admin section.
+ //
+ $s_hidden_fields = '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+
+ page_header($lang['Inst_Step_2'], "../login.$phpEx");
+ page_footer($lang['Finish_Install'], $s_hidden_fields);
+
+ exit();
+ }
+
+}
+else if ( ( empty($install_step) || $admin_pass1 != $admin_pass2 || empty($admin_pass1) || $dbhost == '' ) && !defined("PHPBB_INSTALLED") )
+{
+ //
+ // Ok we haven't installed before so lets work our way through the various
+ // steps of the install process. This could turn out to be quite a lengty
+ // process.
+ //
+ // Step 0 gather the pertinant info for database setup...
+ // Namely dbms, dbhost, dbname, dbuser, and dbpasswd.
+ //
+
+ //
+ // Guess at some basic info used for install..
+ //
+ if ( !empty($_SERVER['SERVER_NAME']) || !empty($_ENV['SERVER_NAME']) )
+ {
+ $server_name = ( !empty($_SERVER['SERVER_NAME']) ) ? $_SERVER['SERVER_NAME'] : $_ENV['SERVER_NAME'];
+ }
+ else if ( !empty($_SERVER['HTTP_HOST']) || !empty($_ENV['HTTP_HOST']) )
+ {
+ $server_name = ( !empty($_SERVER['HTTP_HOST']) ) ? $_SERVER['HTTP_HOST'] : $_ENV['HTTP_HOST'];
+ }
+ else
+ {
+ $server_name = '';
+ }
+
+ if ( !empty($_SERVER['SERVER_PORT']) || !empty($_ENV['SERVER_PORT']) )
+ {
+ $server_port = ( !empty($_SERVER['SERVER_PORT']) ) ? $_SERVER['SERVER_PORT'] : $_ENV['SERVER_PORT'];
+ }
+ else
+ {
+ $server_port = '80';
+ }
+
+ $script_path = preg_replace('/install\/install\.'.$phpEx.'/i', '', $_SERVER['PHP_SELF']);
+
+ //
+ //
+ //
+ $instruction_text = $lang['Inst_Step_0'];
+/*
+ if ( (($_POST['admin_pass1'] != $_POST['admin_pass2']) && $install_step != '0') || ( empty($_POST['admin_pass1']) && !empty($dbhost)) )
+ {
+ $instruction_text = $lang['Password_mismatch'] . '
' . $instruction_text;
+ }
+*/
+ $lang_options = language_select($language, 'language', '../language');
+
+ foreach( $available_dbms as $dbms_name => $details )
+ {
+ $selected = ( $dbms_name == $dbms ) ? ' selected="selected' : '';
+ $dbms_options .= '';
+ }
+
+ $upgrade_option = '';
+ $upgrade_option .= '';
+ $upgrade_option .= '';
+
+ $s_hidden_fields = '';
+
+ page_header($instruction_text, "install.$phpEx");
+
+?>
+
+ |
+
+
+ : |
+ |
+
+
+ : |
+ |
+
+
+ : |
+ |
+
+
+ |
+
+
+ : |
+ |
+
+
+ : |
+ |
+
+
+ : |
+ |
+
+
+ : |
+ |
+
+
+ : |
+ |
+
+
+ |
+
+
+ : |
+ |
+
+
+ : |
+ |
+
+
+ : |
+ |
+
+
+ : |
+ |
+
+
+ : |
+ |
+
+
+ : |
+ |
+
+
+ : |
+ |
+
+assign_block_vars("switch_error_install", array());
+
+ $template->assign_vars(array(
+ "L_ERROR_TITLE" => $lang['Installer_Error'],
+ "L_ERROR" => $lang['Install_No_Ext'])
+ );
+ $template->pparse('body'); */
+
+ die("Error during installation: no $check_exts extension");
+ }
+
+ include($phpbb_root_path . 'db/' . $dbms . '.' . $phpEx);
+
+ $db = new sql_db($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false);
+ }
+
+ $dbms_schema = 'schemas/' . $available_dbms[$dbms]['SCHEMA'] . '_schema.sql';
+ $dbms_basic = 'schemas/' . $available_dbms[$dbms]['SCHEMA'] . '_basic.sql';
+
+ $remove_remarks = $available_dbms[$dbms]['COMMENTS'];;
+ $delimiter = $available_dbms[$dbms]['DELIM'];
+ $delimiter_basic = $available_dbms[$dbms]['DELIM_BASIC'];
+
+ if ( $install_step == 1 || $reinstall )
+ {
+ if ( $upgrade != 1 )
+ {
+ if ( $dbms != 'msaccess' )
+ {
+ //
+ // Ok we have the db info go ahead and read in the relevant schema
+ // and work on building the table.. probably ought to provide some
+ // kind of feedback to the user as we are working here in order
+ // to let them know we are actually doing something.
+ //
+ $sql_query = @fread(@fopen($dbms_schema, 'r'), @filesize($dbms_schema));
+ $sql_query = preg_replace('/phpbb_/is', $table_prefix, $sql_query);
+
+ $sql_query = $remove_remarks($sql_query);
+ $sql_query = split_sql_file($sql_query, $delimiter);
+
+ $sql_count = count($sql_query);
+
+ for($i = 0; $i < $sql_count; $i++)
+ {
+ $db->sql_query($sql_query[$i]);
+ }
+
+ //
+ // Ok tables have been built, let's fill in the basic information
+ //
+ $sql_query = @fread(@fopen($dbms_basic, 'r'), @filesize($dbms_basic));
+ $sql_query = preg_replace('/phpbb_/', $table_prefix, $sql_query);
+
+ $sql_query = $remove_remarks($sql_query);
+ $sql_query = split_sql_file($sql_query, $delimiter_basic);
+
+ $sql_count = count($sql_query);
+
+ for($i = 0; $i < $sql_count; $i++)
+ {
+ $db->sql_query($sql_query[$i]);
+ }
+ }
+
+ //
+ // Ok at this point they have entered their admin password, let's go
+ // ahead and create the admin account with some basic default information
+ // that they can customize later, and write out the config file. After
+ // this we are going to pass them over to the admin_forum.php script
+ // to set up their forum defaults.
+ //
+ $admin_pass_md5 = ( $confirm && $userdata['user_level'] == ADMIN ) ? $admin_pass1 : md5($admin_pass1);
+ $error = '';
+
+ //
+ // Update the default admin user with their information.
+ //
+ $sql = "INSERT INTO " . $table_prefix . "config (config_name, config_value)
+ VALUES ('board_startdate', " . time() . ")";
+ $db->sql_query($sql);
+
+ $sql = "INSERT INTO " . $table_prefix . "config (config_name, config_value)
+ VALUES ('default_lang', '" . str_replace("\'", "''", $language) . "')";
+ $db->sql_query($sql);
+
+ $sql = "UPDATE " . $table_prefix . "config
+ SET config_value = '" . $server_name . "'
+ WHERE config_name = 'server_name'";
+ $db->sql_query($sql);
+
+ $sql = "UPDATE " . $table_prefix . "config
+ SET config_value = '" . $server_port . "'
+ WHERE config_name = 'server_port'";
+ $db->sql_query($sql);
+
+ $sql = "UPDATE " . $table_prefix . "config
+ SET config_value = '" . $script_path . "'
+ WHERE config_name = 'script_path'";
+ $db->sql_query($sql);
+
+ $sql = "UPDATE " . $table_prefix . "config
+ SET config_value = '" . $board_email . "'
+ WHERE config_name = 'board_email'";
+ $db->sql_query($sql);
+
+ $sql = "UPDATE " . $table_prefix . "config
+ SET config_value = '" . $server_name . "'
+ WHERE config_name = 'cookie_domain'";
+ $db->sql_query($sql);
+
+ $sql = "UPDATE " . $table_prefix . "config
+ SET config_value = '" . $admin_name . "'
+ WHERE config_name = 'newest_username'";
+ $db->sql_query($sql);
+
+ $sql = "UPDATE " . $table_prefix . "users
+ SET username = '" . str_replace("\'", "''", $admin_name) . "', user_password='" . str_replace("\'", "''", $admin_pass_md5) . "', user_lang = '" . str_replace("\'", "''", $language) . "', user_email='" . str_replace("\'", "''", $board_email) . "'
+ WHERE username = 'Admin'";
+ $db->sql_query($sql);
+
+ $sql = "UPDATE " . $table_prefix . "moderator_cache
+ SET username = '" . $admin_name . "'
+ WHERE username = 'Admin'";
+ $db->sql_query($sql);
+
+ $sql = "UPDATE " . $table_prefix . "forums
+ SET forum_last_poster_name = '" . $admin_name . "'
+ WHERE forum_last_poster_name = 'Admin'";
+ $db->sql_query($sql);
+
+ $sql = "UPDATE " . $table_prefix . "users
+ SET user_regdate = " . time();
+ $db->sql_query($sql);
+
+/* if ( $error != '' )
+ {
+ $template->assign_block_vars("switch_error_install", array());
+
+ $template->assign_vars(array(
+ "L_ERROR_TITLE" => $lang['Installer_Error'],
+ "L_ERROR" => $lang['Install_db_error'] . '
' . $error)
+ );
+
+ $template->pparse('body');
+
+ exit;
+ }*/
+ }
+
+ if ( !$reinstall && !$upgrade_now )
+ {
+// $template->assign_block_vars("switch_common_install", array());
+
+ //
+ // Write out the config file.
+ //
+ $config_data = ''; // Done this to prevent highlighting editors getting confused!
+
+ @umask(0111);
+ $no_open = FALSE;
+
+ if ( !($fp = @fopen('../config.'.$phpEx, 'w')) )
+ {
+ //
+ // Unable to open the file writeable do something here as an attempt
+ // to get around that...
+ //
+ $s_hidden_fields = '';
+
+ if ( extension_loaded('ftp') && !defined('NO_FTP') )
+ {
+ $template->assign_block_vars('switch_ftp_option', array());
+
+ $lang['Unwriteable_config'] .= '' . $lang['ftp_option'] . '
';
+
+ $template->assign_vars(array(
+ "L_CHOOSE_FTP" => $lang['ftp_choose'],
+ "L_ATTEMPT_FTP" => $lang['Attempt_ftp'],
+ "L_SEND_FILE" => $lang['Send_file'])
+ );
+ }
+ else
+ {
+ $s_hidden_fields .= '';
+ }
+
+ if ( $upgrade == 1 )
+ {
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+
+ $template->assign_block_vars("switch_upgrade_install", array());
+ $template->assign_vars(array(
+ "L_UPGRADE_INST" => $lang['continue_upgrade'],
+ "L_UPGRADE_SUBMIT" => $lang['upgrade_submit'])
+ );
+ }
+
+ $template->assign_vars(array(
+ "L_INSTRUCTION_TEXT" => $lang['Unwriteable_config'],
+ "L_SUBMIT" => $lang['Download_config'],
+
+ "S_HIDDEN_FIELDS" => $s_hidden_fields,
+ "S_FORM_ACTION" => "install.$phpEx")
+ );
+
+ $template->pparse('body');
+
+ exit;
+ }
+
+ $result = @fputs($fp, $config_data, strlen($config_data));
+
+ @fclose($fp);
+ $upgrade_now = $lang['upgrade_submit'];
+ }
+ else
+ {
+// $template->assign_block_vars("switch_common_install", array());
+ }
+
+ //
+ // First off let's check and see if we are supposed to be doing an upgrade.
+ //
+ if ( $upgrade == 1 && $upgrade_now == $lang['upgrade_submit'] )
+ {
+ define('INSTALLING', true);
+ require('upgrade.'.$phpEx);
+ exit;
+ }
+ //
+ // Ok we are basically done with the install process let's go on
+ // and let the user configure their board now.
+ //
+ // We are going to do this by calling the admin_board.php from the
+ // normal board admin section.
+ //
+ if ( !$reinstall )
+ {
+ $s_hidden_fields = '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ $s_hidden_fields .= '';
+ }
+ else
+ {
+ $s_hidden_fields = '';
+ }
+
+ page_header($lang['Inst_Step_2'], "../login.$phpEx");
+ page_footer($lang['Finish_Install'], $s_hidden_fields);
+
+ exit;
+ }
+}
+
+// addslashes to vars if magic_quotes_gpc is off this is a security precaution
+// to prevent someone trying to break out of a SQL statement.
+function slash_input_data(&$data)
+{
+ if ( is_array($data) )
+ {
+ foreach ( $data as $k => $v )
+ {
+ $data[$k] = ( is_array($v) ) ? slash_input_data($v) : addslashes($v);
+ }
+ }
+ return $data;
+}
+
+// Output page -> header
+function page_header($l_instructions, $s_action)
+{
+ global $phpEx, $lang;
+
+?>
+
+
+
+
+
+
+
+
+
+
+
+  |
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpBB/install/schemas/index.htm b/phpBB/install/schemas/index.htm
new file mode 100644
index 0000000000..ee1f723a7d
--- /dev/null
+++ b/phpBB/install/schemas/index.htm
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/phpBB/install/schemas/ms_access_primer.zip b/phpBB/install/schemas/ms_access_primer.zip
new file mode 100644
index 0000000000000000000000000000000000000000..d22c6f5bde7544ea791e33c12729c5074f752951
GIT binary patch
literal 58105
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 |