diff options
Diffstat (limited to 'phpBB/includes/functions_install.php')
| -rw-r--r-- | phpBB/includes/functions_install.php | 144 | 
1 files changed, 80 insertions, 64 deletions
diff --git a/phpBB/includes/functions_install.php b/phpBB/includes/functions_install.php index 4746b2f6e1..10ec13669b 100644 --- a/phpBB/includes/functions_install.php +++ b/phpBB/includes/functions_install.php @@ -2,9 +2,8 @@  /**  *  * @package install -* @version $Id$  * @copyright (c) 2006 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -50,7 +49,6 @@ function get_available_dbms($dbms = false, $return_unavailable = false, $only_20  			'SCHEMA'		=> 'firebird',  			'MODULE'		=> 'interbase',  			'DELIM'			=> ';;', -			'COMMENTS'		=> 'remove_remarks',  			'DRIVER'		=> 'firebird',  			'AVAILABLE'		=> true,  			'2.0.x'			=> false, @@ -60,7 +58,6 @@ function get_available_dbms($dbms = false, $return_unavailable = false, $only_20  			'SCHEMA'		=> 'mysql_41',  			'MODULE'		=> 'mysqli',  			'DELIM'			=> ';', -			'COMMENTS'		=> 'remove_remarks',  			'DRIVER'		=> 'mysqli',  			'AVAILABLE'		=> true,  			'2.0.x'			=> true, @@ -70,7 +67,6 @@ function get_available_dbms($dbms = false, $return_unavailable = false, $only_20  			'SCHEMA'		=> 'mysql',  			'MODULE'		=> 'mysql',  			'DELIM'			=> ';', -			'COMMENTS'		=> 'remove_remarks',  			'DRIVER'		=> 'mysql',  			'AVAILABLE'		=> true,  			'2.0.x'			=> true, @@ -80,7 +76,6 @@ function get_available_dbms($dbms = false, $return_unavailable = false, $only_20  			'SCHEMA'		=> 'mssql',  			'MODULE'		=> 'mssql',  			'DELIM'			=> 'GO', -			'COMMENTS'		=> 'remove_comments',  			'DRIVER'		=> 'mssql',  			'AVAILABLE'		=> true,  			'2.0.x'			=> true, @@ -90,7 +85,6 @@ function get_available_dbms($dbms = false, $return_unavailable = false, $only_20  			'SCHEMA'		=> 'mssql',  			'MODULE'		=> 'odbc',  			'DELIM'			=> 'GO', -			'COMMENTS'		=> 'remove_comments',  			'DRIVER'		=> 'mssql_odbc',  			'AVAILABLE'		=> true,  			'2.0.x'			=> true, @@ -100,17 +94,15 @@ function get_available_dbms($dbms = false, $return_unavailable = false, $only_20  			'SCHEMA'		=> 'mssql',  			'MODULE'		=> 'sqlsrv',  			'DELIM'			=> 'GO', -			'COMMENTS'		=> 'remove_comments',  			'DRIVER'		=> 'mssqlnative',  			'AVAILABLE'		=> true,  			'2.0.x'			=> false, -		),			 +		),  		'oracle'	=>	array(  			'LABEL'			=> 'Oracle',  			'SCHEMA'		=> 'oracle',  			'MODULE'		=> 'oci8',  			'DELIM'			=> '/', -			'COMMENTS'		=> 'remove_comments',  			'DRIVER'		=> 'oracle',  			'AVAILABLE'		=> true,  			'2.0.x'			=> false, @@ -120,7 +112,6 @@ function get_available_dbms($dbms = false, $return_unavailable = false, $only_20  			'SCHEMA'		=> 'postgres',  			'MODULE'		=> 'pgsql',  			'DELIM'			=> ';', -			'COMMENTS'		=> 'remove_comments',  			'DRIVER'		=> 'postgres',  			'AVAILABLE'		=> true,  			'2.0.x'			=> true, @@ -130,7 +121,6 @@ function get_available_dbms($dbms = false, $return_unavailable = false, $only_20  			'SCHEMA'		=> 'sqlite',  			'MODULE'		=> 'sqlite',  			'DELIM'			=> ';', -			'COMMENTS'		=> 'remove_remarks',  			'DRIVER'		=> 'sqlite',  			'AVAILABLE'		=> true,  			'2.0.x'			=> false, @@ -211,61 +201,20 @@ function dbms_select($default = '', $only_20x_options = false)  /**  * Get tables of a database +* +* @deprecated  */ -function get_tables($db) +function get_tables(&$db)  { -	switch ($db->sql_layer) -	{ -		case 'mysql': -		case 'mysql4': -		case 'mysqli': -			$sql = 'SHOW TABLES'; -		break; - -		case 'sqlite': -			$sql = 'SELECT name -				FROM sqlite_master -				WHERE type = "table"'; -		break; - -		case 'mssql': -		case 'mssql_odbc': -		case 'mssqlnative': -			$sql = "SELECT name -				FROM sysobjects -				WHERE type='U'"; -		break; - -		case 'postgres': -			$sql = 'SELECT relname -				FROM pg_stat_user_tables'; -		break; - -		case 'firebird': -			$sql = 'SELECT rdb$relation_name -				FROM rdb$relations -				WHERE rdb$view_source is null -					AND rdb$system_flag = 0'; -		break; - -		case 'oracle': -			$sql = 'SELECT table_name -				FROM USER_TABLES'; -		break; -	} - -	$result = $db->sql_query($sql); - -	$tables = array(); - -	while ($row = $db->sql_fetchrow($result)) +	if (!class_exists('phpbb_db_tools'))  	{ -		$tables[] = current($row); +		global $phpbb_root_path, $phpEx; +		require($phpbb_root_path . 'includes/db/db_tools.' . $phpEx);  	} -	$db->sql_freeresult($result); +	$db_tools = new phpbb_db_tools($db); -	return $tables; +	return $db_tools->sql_list_tables();  }  /** @@ -514,11 +463,21 @@ function connect_check_db($error_connect, &$error, $dbms_details, $table_prefix,  }  /** -* remove_remarks will strip the sql comment lines out of an uploaded sql file +* Removes "/* style" as well as "# style" comments from $input. +* +* @param string $input		Input string +* +* @return string			Input string with comments removed  */ -function remove_remarks(&$sql) +function phpbb_remove_comments($input)  { -	$sql = preg_replace('/\n{2,}/', "\n", preg_replace('/^#.*$/m', "\n", $sql)); +	// Remove /* */ comments (http://ostermiller.org/findcomment.html) +	$input = preg_replace('#/\*(.|[\r\n])*?\*/#', "\n", $input); + +	// Remove # style comments +	$input = preg_replace('/\n{2,}/', "\n", preg_replace('/^#.*$/m', "\n", $input)); + +	return $input;  }  /** @@ -555,3 +514,60 @@ function adjust_language_keys_callback($matches)  		return (!empty($lang[$matches[1]])) ? $db->sql_escape($lang[$matches[1]]) : $db->sql_escape($matches[1]);  	}  } + +/** +* Creates the output to be stored in a phpBB config.php file +* +* @param	array	$data Array containing the database connection information +* @param	string	$dbms The name of the DBAL class to use +* @param	array	$load_extensions Array of additional extensions that should be loaded +* @param	bool	$debug If the debug constants should be enabled by default or not +* @param	bool	$debug_test If the DEBUG_TEST constant should be added +*					NOTE: Only for use within the testing framework +* +* @return	string	The output to write to the file +*/ +function phpbb_create_config_file_data($data, $dbms, $load_extensions, $debug = false, $debug_test = false) +{ +	$load_extensions = implode(',', $load_extensions); + +	$config_data = "<?php\n"; +	$config_data .= "// phpBB 3.1.x auto-generated configuration file\n// Do not change anything in this file!\n"; + +	$config_data_array = array( +		'dbms'			=> $dbms, +		'dbhost'		=> $data['dbhost'], +		'dbport'		=> $data['dbport'], +		'dbname'		=> $data['dbname'], +		'dbuser'		=> $data['dbuser'], +		'dbpasswd'		=> htmlspecialchars_decode($data['dbpasswd']), +		'table_prefix'	=> $data['table_prefix'], +		'acm_type'		=> 'phpbb_cache_driver_file', +		'load_extensions'	=> $load_extensions, +	); + +	foreach ($config_data_array as $key => $value) +	{ +		$config_data .= "\${$key} = '" . str_replace("'", "\\'", str_replace('\\', '\\\\', $value)) . "';\n"; +	} + +	$config_data .= "\n@define('PHPBB_INSTALLED', true);\n"; + +	if ($debug) +	{ +		$config_data .= "@define('DEBUG', true);\n"; +		$config_data .= "@define('DEBUG_EXTRA', true);\n"; +	} +	else +	{ +		$config_data .= "// @define('DEBUG', true);\n"; +		$config_data .= "// @define('DEBUG_EXTRA', true);\n"; +	} + +	if ($debug_test) +	{ +		$config_data .= "@define('DEBUG_TEST', true);\n"; +	} + +	return $config_data; +}  | 
