Some more improvements:
[mailer.git] / inc / db / lib-mysql3.php
index 5414a494aed972b5916ae3b7b507e49a3f2543af..fd86300e36f564c9617c005197002a3a793df0bd 100644 (file)
@@ -52,13 +52,13 @@ function sqlQuery ($sqlString, $file, $line, $enableCodes = TRUE) {
                // Empty query string or link is not up?
                if (empty($sqlStringModified)) {
                        // Empty SQL string!
-                       reportBug(__FUNCTION__, __LINE__, sprintf("SQL string is empty, please fix this: file=%s, line=%s",
+                       reportBug(__FUNCTION__, __LINE__, sprintf('SQL string is empty, please fix this: file=%s, line=%s',
                                basename($file),
                                $line
                        ));
                } elseif (!isSqlLinkUp()) {
                        // We should not quietly ignore this
-                       reportBug(__FUNCTION__, __LINE__, sprintf("Cannot query database: sqlString=%s,file=%s,line=%s",
+                       reportBug(__FUNCTION__, __LINE__, sprintf('Cannot query database: sqlString=%s,file=%s,line=%s',
                                $sqlStringModified,
                                basename($file),
                                $line
@@ -94,7 +94,7 @@ function sqlQuery ($sqlString, $file, $line, $enableCodes = TRUE) {
        //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'file=' . basename($file) . ',line=' . $line . ',sql=' . $GLOBALS['last_sql']);
        $result = mysql_query($GLOBALS['last_sql'], getSqlLink())
                or sqlError($file, $line, 'file='. basename($file) . ',line=' . $line . ':mysql_error()=' . mysql_error() . ',last_query=' . $GLOBALS['last_sql']);
-       //* DEBUG: */ logDebugMessage($file, $line, 'sql=' . $GLOBALS['last_sql'] . ',affected=' . sqlAffectedRows() . ',numRows='.(is_resource($result) ? sqlNumRows($result) : gettype($result)));
+       //* DEBUG: */ logDebugMessage($file, $line, 'sql=' . $GLOBALS['last_sql'] . ',affected=' . sqlAffectedRows() . ',numRows='.(isValidSqlLink($result) ? sqlNumRows($result) : gettype($result)));
 
        // Calculate query time
        $queryTime = microtime(TRUE) - $querytimeBefore;
@@ -121,7 +121,7 @@ function sqlQuery ($sqlString, $file, $line, $enableCodes = TRUE) {
                } // END - if
 
                // Append debug line
-               appendLineToFile(getCachePath() . 'mysql.log', basename($file) . '|LINE=' . $line . '|NUM=' . (is_resource($result) ? sqlNumRows($result) : 'false') . '|AFFECTED=' . sqlAffectedRows() . '|QUERYTIME:' . ($queryTime * 1000) . 'ms): ' . str_replace(array(chr(13), PHP_EOL), array('', ' '), $GLOBALS['last_sql']));
+               appendLineToFile(getCachePath() . 'mysql.log', basename($file) . '|LINE=' . $line . '|NUM=' . (isValidSqlLink($result) ? sqlNumRows($result) : 'false') . '|AFFECTED=' . sqlAffectedRows() . '|QUERYTIME:' . ($queryTime * 1000) . 'ms): ' . str_replace(array(chr(13), PHP_EOL), array('', ' '), $GLOBALS['last_sql']));
        } // END - if
 
        // Increment stats entry
@@ -143,7 +143,7 @@ function sqlNumRows ($resource) {
        if (isset($GLOBALS['sql_numrows'][intval($resource)])) {
                // Use cache
                $lines = $GLOBALS['sql_numrows'][intval($resource)];
-       } elseif (is_resource($resource)) {
+       } elseif (isValidSqlLink($resource)) {
                // Get the count of rows from database
                $lines = mysql_num_rows($resource);
 
@@ -173,7 +173,7 @@ function sqlAffectedRows () {
 // SQL fetch row
 function sqlFetchRow ($resource) {
        // Is $resource valid?
-       if ((!is_resource($resource)) || (!isSqlLinkUp())) return FALSE;
+       if ((!isValidSqlLink($resource)) || (!isSqlLinkUp())) return FALSE;
 
        // Fetch the data and return it
        return mysql_fetch_row($resource);
@@ -182,7 +182,7 @@ function sqlFetchRow ($resource) {
 // SQL fetch array
 function sqlFetchArray ($resource) {
        // Is $resource valid?
-       if ((!is_resource($resource)) || (!isSqlLinkUp())) return FALSE;
+       if ((!isValidSqlLink($resource)) || (!isSqlLinkUp())) return FALSE;
 
        // Load row as array from database
        $row = mysql_fetch_assoc($resource);
@@ -200,7 +200,7 @@ function sqlFetchArray ($resource) {
 // SQL result
 function sqlResult ($resource, $row, $field = '0') {
        // Is $resource valid?
-       if ((!is_resource($resource)) || (!isSqlLinkUp())) return FALSE;
+       if ((!isValidSqlLink($resource)) || (!isSqlLinkUp())) return FALSE;
 
        // Run the result command
        $result = mysql_result($resource, $row, $field);
@@ -215,14 +215,14 @@ function sqlConnectToDatabase ($host, $login, $password, $file, $line) {
        $linkResource = mysql_connect($host, $login, $password) or sqlError($file, $line,  mysql_error());
 
        // Set the link resource
-       if (is_resource($linkResource)) {
+       if (isValidSqlLink($linkResource)) {
                /*
                 * A non-resource (boolean) may happen on installation phase which
                 * shall not be set here. Only valid link resources shall be set so
                 * isSqlLinkUp() will only return 'true' if there is really a
                 * working database link.
                 */
-               setSqlLink(__FUNCTION__, __LINE__, $linkResource);
+               setSqlLink($file . ':' . __FUNCTION__, $line . ':' . __LINE__, $linkResource);
 
                // Init charsets (UTF-8 is default now)
                sqlQuery("SET
@@ -230,7 +230,10 @@ function sqlConnectToDatabase ($host, $login, $password, $file, $line) {
        `character_set_client`='utf8',
        `character_set_connection`='utf8',
        `character_set_database`='utf8',
-       `character_set_server`='utf8'", __FUNCTION__, __LINE__);
+       `character_set_server`='utf8'", $file . ':' . __FUNCTION__, $line . ':' . __LINE__);
+
+               // Disallow subtraction for unsigned columns
+               sqlQuery("SET `sql_mode`='NO_UNSIGNED_SUBTRACTION'", $file . ':' . __FUNCTION__, $line . ':' . __LINE__);
        } // END - if
 
        // Return the resource
@@ -270,7 +273,7 @@ function sqlCloseLink ($file, $line) {
 
 // SQL free result
 function sqlFreeResult ($resource) {
-       if ((!is_resource($resource)) || (!isSqlLinkUp())) {
+       if ((!isValidSqlLink($resource)) || (!isSqlLinkUp())) {
                // Abort here
                return FALSE;
        } // END - if
@@ -374,7 +377,7 @@ function sqlError ($file, $line, $message) {
        } // END - if
 
        // Is there installation phase?
-       if (isInstallationPhase()) {
+       if (isInstaller()) {
                /*
                 * In installation phase, we don't want SQL errors abort e.g. connection
                 * tests, so just log it away.
@@ -386,5 +389,11 @@ function sqlError ($file, $line, $message) {
        }
 }
 
+// Checks whether given link is a valid SQL link
+function isValidSqlLink ($linkResource) {
+       // Is it a resource?
+       return is_resource($linkResource);
+}
+
 // [EOF]
 ?>