Bug with multiple registration of filters fixed (see fix_filters.php for details)
[mailer.git] / inc / db / lib-mysql3.php
index 8f57bf199e99bf1edbd2716f7d0f4065172253da..0d97094c82d13cc01ddc966b90450e57e7fd62cf 100644 (file)
@@ -45,7 +45,17 @@ if (!defined('__SECURITY')) {
 // SQL queries
 function SQL_QUERY ($sql_string, $F, $L) {
        // Link is up?
-       if (!SQL_IS_LINK_UP()) return false;
+       if (!SQL_IS_LINK_UP()) {
+               // We should not quietly ignore this!
+               trigger_error(sprintf("Cannot query database: sql_string=%s,file=%s,line=%s",
+                       $sql_string,
+                       basename($F),
+                       $L
+               ));
+
+               // Return 'false' because it has failed
+               return false;
+       } // END - if
 
        // Remove \t, \n and \r from queries they may confuse some MySQL version I have heard
        $sql_string = str_replace("\t", " ", str_replace("\n", " ", str_replace("\r", " ", $sql_string)));
@@ -60,11 +70,12 @@ function SQL_QUERY ($sql_string, $F, $L) {
        $querytimeBefore = array_sum(explode(' ', microtime()));
 
        // Run SQL command
-       //* DEBUG: */ echo $sql_string."<br />\n";
+       //* DEBUG: */ print $sql_string."<br />\n";
        $result = mysql_query($sql_string, SQL_GET_LINK())
-       or addFatalMessage(__FUNCTION__, __LINE__, $F." (".$L."):".mysql_error()."<br />
+               or addFatalMessage(__FUNCTION__, __LINE__, $F." (".$L."):".mysql_error()."<br />
 Query string:<br />
 ".$sql_string);
+       //* DEBUG: */ print __LINE__ . ': numRows=' . SQL_NUMROWS($result) . ',affected=' . SQL_AFFECTEDROWS() . "<br />\n";
 
        // Ending time
        $querytimeAfter = array_sum(explode(' ', microtime()));
@@ -80,14 +91,14 @@ Query string:<br />
 
        // Debug output
        //* DEBUG: */ print "Query=<pre>".$sql_string."</pre>, affected=<strong>".SQL_AFFECTEDROWS()."</strong>, numrows=<strong>".SQL_NUMROWS($result)."</strong><br />\n";
-       if (($GLOBALS['output_mode'] != '1') && ($GLOBALS['output_mode'] != '-1') && (isDebugModeEnabled()) && (getConfig('DEBUG_SQL') == 'Y')) {
+       if ((getOutputMode() != '1') && (getOutputMode() != '-1') && (isDebugModeEnabled()) && (getConfig('DEBUG_SQL') == 'Y')) {
                //
                // Debugging stuff...
                //
                $fp = fopen(constant('PATH') . 'inc/cache/mysql.log', 'a') or app_die(__FILE__, __LINE__, "Cannot write mysql.log!");
                if (!isset($GLOBALS['sql_first_entry'])) {
                        // Write first entry
-                       fwrite($fp, 'Module=' . $GLOBALS['module'] . "\n");
+                       fwrite($fp, 'Module=' . getModule() . "\n");
                        $GLOBALS['sql_first_entry'] = true;
                } // END - if
                fwrite($fp, $F."(LINE=".$L."|NUM=".SQL_NUMROWS($result)."|AFFECTED=".SQL_AFFECTEDROWS()."|QUERYTIME:".$queryTime."): ".str_replace("\r", '', str_replace("\n", " ", $sql_string))."\n");
@@ -217,11 +228,12 @@ function SQL_CLOSE ($F, $L) {
                incrementConfigEntry('db_hits', getConfig('db_hits_run'));
 
                // Update counter for db/cache
-               updateConfiguration(array('db_hits', 'cache_hits'), array(getConfig(('db_hits')), getConfig(('cache_hits'))));
+               updateConfiguration(array('db_hits', 'cache_hits'), array(getConfig('db_hits'), getConfig('cache_hits')));
        } // END - if
 
        // Close database link and forget the link
-       $close = mysql_close(SQL_GET_LINK()) or addFatalMessage(__FUNCTION__, __LINE__, $F." (".$L."):".mysql_error());
+       $close = mysql_close(SQL_GET_LINK())
+               or addFatalMessage(__FUNCTION__, __LINE__, $F . ' (' . $L . '):'.mysql_error());
 
        // Close link
        SQL_SET_LINK(null);
@@ -247,18 +259,18 @@ function SQL_QUERY_ESC ($qstring, $data, $F, $L, $run=true, $strip=true, $secure
        if (!SQL_IS_LINK_UP()) return false;
 
        // Init variable
-       $query = "failed";
+       $query = 'failed';
 
        if ($strip === true) {
-               $strip = "true";
+               $strip = 'true';
        } else {
-               $strip = "false";
+               $strip = 'false';
        }
 
        if ($secure === true) {
-               $secure = "true";
+               $secure = 'true';
        } else {
-               $secure = "false";
+               $secure = 'false';
        }
 
        $eval = "\$query = sprintf(\"".$qstring."\"";
@@ -270,7 +282,7 @@ function SQL_QUERY_ESC ($qstring, $data, $F, $L, $run=true, $strip=true, $secure
                }
        } // END - foreach
        $eval .= ");";
-       //
+
        // Debugging
        //
        //* DEBUG: */ $fp = fopen(constant('PATH')."inc/cache/escape_debug.log", 'a') or app_die(__FILE__, __LINE__, "Cannot write debug.log!");
@@ -281,9 +293,9 @@ function SQL_QUERY_ESC ($qstring, $data, $F, $L, $run=true, $strip=true, $secure
        eval($eval);
 
        // Was the eval() command fine?
-       if ($query == "failed") {
+       if ($query == 'failed') {
                // Something went wrong?
-               debug_report_bug("eval={$eval}");
+               debug_report_bug('eval=' . $eval);
        } // END - if
 
        if ($run === true) {
@@ -334,15 +346,16 @@ function SQL_RESULT_FROM_ARRAY ($table, $columns, $idRow, $id, $F, $L) {
        } // END  - if
 
        // Prepare the SQL statement
-       $sql = "SELECT `".implode("`,`", $columns)."` FROM `{!_MYSQL_PREFIX!}_%s` WHERE ``='%s' LIMIT 1";
+       $sql = "SELECT `".implode("`,`", $columns)."` FROM `{!_MYSQL_PREFIX!}_%s` WHERE `%s`='%s' LIMIT 1";
 
        // Return the result
        return SQL_QUERY_ESC($sql,
-       array(
-       bigintval($id),
-       $table,
-       $idRow
-       ), $F, $L);
+               array(
+                       $table,
+                       $idRow,
+                       bigintval($id),
+               ), $F, $L
+       );
 }
 
 // ALTER TABLE wrapper function
@@ -353,11 +366,11 @@ function SQL_ALTER_TABLE ($sql, $F, $L) {
        // Determine index/fulltext/unique word
        $noIndex = (
        (
-       strpos($sql, 'INDEX') === false
+               strpos($sql, 'INDEX') === false
        ) && (
-       strpos($sql, 'FULLTEXT') === false
+               strpos($sql, 'FULLTEXT') === false
        ) && (
-       strpos($sql, 'UNIQUE') === false
+               strpos($sql, 'UNIQUE') === false
        )
        );
 
@@ -371,8 +384,8 @@ function SQL_ALTER_TABLE ($sql, $F, $L) {
                $columnName = str_replace('`', '', $tableArray[4]);
 
                // Get column information
-               $result = SQL_QUERY_ESC("SHOW COLUMNS FROM %s LIKE '%s'",
-               array($tableName, $columnName), __FILE__, __LINE__);
+               $result = SQL_QUERY_ESC("SHOW COLUMNS FROM `%s` LIKE '%s'",
+                       array($tableName, $columnName), __FILE__, __LINE__);
 
                // Do we have no entry on ADD or an entry on DROP?
                // 123           4       4     3    3      4           4          32    23           4       4     3    3      4            4          321
@@ -408,7 +421,7 @@ function SQL_ALTER_TABLE ($sql, $F, $L) {
 
                // Show indexes
                $result = SQL_QUERY_ESC("SHOW INDEX FROM `%s`",
-               array($tableName), __FILE__, __LINE__);
+                       array($tableName), __FILE__, __LINE__);
 
                // Walk through all
                $skip = false;