aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
diff options
context:
space:
mode:
authorthe_systech <the_systech@users.sourceforge.net>2001-09-24 17:26:36 +0000
committerthe_systech <the_systech@users.sourceforge.net>2001-09-24 17:26:36 +0000
commit1871f5e2c0e5c667e4b9b11a316f0db64d728693 (patch)
treed96bd5a170b2b52c92988a33a9405c6fd4f2e363 /phpBB/includes
parentbc14000a95e6e5d1ed49ac7bd5799a09c32f9d67 (diff)
downloadforums-1871f5e2c0e5c667e4b9b11a316f0db64d728693.tar
forums-1871f5e2c0e5c667e4b9b11a316f0db64d728693.tar.gz
forums-1871f5e2c0e5c667e4b9b11a316f0db64d728693.tar.bz2
forums-1871f5e2c0e5c667e4b9b11a316f0db64d728693.tar.xz
forums-1871f5e2c0e5c667e4b9b11a316f0db64d728693.zip
Seperated out sql parsing functions into a new file.
git-svn-id: file:///svn/phpbb/trunk@1069 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/sql_parse.php115
1 files changed, 115 insertions, 0 deletions
diff --git a/phpBB/includes/sql_parse.php b/phpBB/includes/sql_parse.php
new file mode 100644
index 0000000000..cc94437762
--- /dev/null
+++ b/phpBB/includes/sql_parse.php
@@ -0,0 +1,115 @@
+<?php
+/***************************************************************************
+* sql_parse.php
+* -------------------
+* begin : Thu May 31, 2001
+* copyright : (C) 2001 The phpBB Group
+* email : support@phpbb.com
+*
+* $Id$
+*
+****************************************************************************/
+
+/***************************************************************************
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ ***************************************************************************/
+
+/***************************************************************************
+*
+* These functions are mainly for use in the db_utilities under the admin
+* however in order to make these functions available elsewhere, specifically
+* in the installation phase of phpBB I have seperated out a couple of
+* functions into this file. JLH
+*
+\***************************************************************************/
+
+//
+// remove_remarks will strip the sql comment lines out of an uploaded sql file
+//
+function remove_remarks($sql)
+{
+ $lines = explode("\n", $sql);
+
+ // try to keep mem. use down
+ $sql = "";
+
+ $linecount = count($lines);
+ $output = "";
+
+ for ($i = 0; $i < $linecount; $i++)
+ {
+ if (($i != ($linecount - 1)) || (strlen($lines[$i]) > 0))
+ {
+ if ($lines[$i][0] != "#")
+ {
+ $output .= $lines[$i] . "\n";
+ }
+ else
+ {
+ $output .= "\n";
+ }
+ // Trading a bit of speed for lower mem. use here.
+ $lines[$i] = "";
+ }
+ }
+
+ return $output;
+
+}
+
+//
+// split_sql_file will split an uploaded sql file into single sql statements.
+// Note: expects trim() to have already been run on $sql.
+//
+function split_sql_file($sql, $delimiter)
+{
+ // Split up our string into "possible" SQL statements.
+ $tokens = explode($delimiter, $sql);
+ // try to save memory.
+ $sql = "";
+ $output = array();
+
+ // we don't actually care about the matches preg gives us.
+ $matches = array();
+
+ // this is faster than calling count($oktens) every time thru the loop.
+ $token_count = count($tokens);
+ for ($i = 0; $i < $token_count; $i++)
+ {
+ // Don't wanna add an empty string as the last thing in the array.
+ if (($i != ($token_count - 1)) || (strlen($tokens[$i] > 0)))
+ {
+ // This is the total number of single quotes in the token.
+ $total_quotes = preg_match_all("/'/", $tokens[$i], $matches);
+ // Counts single quotes that are preceded by an odd number of backslashes,
+ // which means they're escaped quotes.
+ $escaped_quotes = preg_match_all("/(?<!\\\\)(\\\\\\\\)*\\\\'/", $tokens[$i], $matches);
+
+ $unescaped_quotes = $total_quotes - $escaped_quotes;
+
+ // If the number of unescaped quotes is even, then the delimiter did NOT occur inside a string literal.
+ if (($unescaped_quotes % 2) == 0)
+ {
+ // It's a complete sql statement.
+ $output[] = $tokens[$i];
+ // save memory.
+ $tokens[$i] = "";
+ }
+ else
+ {
+ // it's not complete, so prepend it onto the next token and continue the loop as usual.
+ $tokens[$i + 1] = $tokens[$i] . ";" . $tokens[$i + 1];
+ // save memory.
+ $tokens[$i] = "";
+ }
+ }
+ }
+
+ return $output;
+}
+?>