mirror of
https://github.com/phpbb/phpbb.git
synced 2025-04-22 00:32:29 +02:00
[ticket/10349] Use new schema comment function in installer
This is what now runs in the unit tests. The COMMENTS field in the dbms data is no longer needed, so it has been removed. PHPBB3-10349
This commit is contained in:
parent
4bc11db0ff
commit
26e84b12e8
@ -2293,41 +2293,6 @@ function auto_prune($forum_id, $prune_mode, $prune_flags, $prune_days, $prune_fr
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* remove_comments will strip the sql comment lines out of an uploaded sql file
|
||||
* specifically for mssql and postgres type files in the install....
|
||||
*/
|
||||
function remove_comments(&$output)
|
||||
{
|
||||
$lines = explode("\n", $output);
|
||||
$output = '';
|
||||
|
||||
// try to keep mem. use down
|
||||
$linecount = sizeof($lines);
|
||||
|
||||
$in_comment = false;
|
||||
for ($i = 0; $i < $linecount; $i++)
|
||||
{
|
||||
if (trim($lines[$i]) == '/*')
|
||||
{
|
||||
$in_comment = true;
|
||||
}
|
||||
|
||||
if (!$in_comment)
|
||||
{
|
||||
$output .= $lines[$i] . "\n";
|
||||
}
|
||||
|
||||
if (trim($lines[$i]) == '*/')
|
||||
{
|
||||
$in_comment = false;
|
||||
}
|
||||
}
|
||||
|
||||
unset($lines);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cache moderators, called whenever permissions are changed via admin_permissions. Changes of username
|
||||
* and group names must be carried through for the moderators table
|
||||
|
@ -50,7 +50,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 +59,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 +68,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 +77,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 +86,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,7 +95,6 @@ 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,
|
||||
@ -110,7 +104,6 @@ function get_available_dbms($dbms = false, $return_unavailable = false, $only_20
|
||||
'SCHEMA' => 'oracle',
|
||||
'MODULE' => 'oci8',
|
||||
'DELIM' => '/',
|
||||
'COMMENTS' => 'remove_comments',
|
||||
'DRIVER' => 'oracle',
|
||||
'AVAILABLE' => true,
|
||||
'2.0.x' => false,
|
||||
@ -120,7 +113,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 +122,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,
|
||||
@ -514,11 +505,18 @@ 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 comments from schema files
|
||||
*
|
||||
*/
|
||||
function remove_remarks(&$sql)
|
||||
function remove_comments($sql)
|
||||
{
|
||||
// Remove /* */ comments (http://ostermiller.org/findcomment.html)
|
||||
$sql = preg_replace('#/\*(.|[\r\n])*?\*/#', "\n", $sql);
|
||||
|
||||
// Remove # style comments
|
||||
$sql = preg_replace('/\n{2,}/', "\n", preg_replace('/^#.*$/m', "\n", $sql));
|
||||
|
||||
return $sql;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1173,14 +1173,13 @@ class install_install extends module
|
||||
$dbms_schema = 'schemas/' . $available_dbms[$data['dbms']]['SCHEMA'] . '_schema.sql';
|
||||
|
||||
// How should we treat this schema?
|
||||
$remove_remarks = $available_dbms[$data['dbms']]['COMMENTS'];
|
||||
$delimiter = $available_dbms[$data['dbms']]['DELIM'];
|
||||
|
||||
$sql_query = @file_get_contents($dbms_schema);
|
||||
|
||||
$sql_query = preg_replace('#phpbb_#i', $data['table_prefix'], $sql_query);
|
||||
|
||||
$remove_remarks($sql_query);
|
||||
$sql_query = remove_comments($sql_query);
|
||||
|
||||
$sql_query = split_sql_file($sql_query, $delimiter);
|
||||
|
||||
@ -1218,8 +1217,7 @@ class install_install extends module
|
||||
// Change language strings...
|
||||
$sql_query = preg_replace_callback('#\{L_([A-Z0-9\-_]*)\}#s', 'adjust_language_keys_callback', $sql_query);
|
||||
|
||||
// Since there is only one schema file we know the comment style and are able to remove it directly with remove_remarks
|
||||
remove_remarks($sql_query);
|
||||
$sql_query = remove_comments($sql_query);
|
||||
$sql_query = split_sql_file($sql_query, ';');
|
||||
|
||||
foreach ($sql_query as $sql)
|
||||
|
Loading…
x
Reference in New Issue
Block a user