]> git.mxchange.org Git - mailer.git/blobdiff - inc/db/lib-mysql3.php
Some more improvements:
[mailer.git] / inc / db / lib-mysql3.php
index 969b5025c27f575d99fe32c48dc510b5352bc168..fd86300e36f564c9617c005197002a3a793df0bd 100644 (file)
@@ -41,7 +41,7 @@ if (!defined('__SECURITY')) {
 } // END - if
 
 // SQL queries
-function sqlQuery ($sqlString, $F, $L, $enableCodes = TRUE) {
+function sqlQuery ($sqlString, $file, $line, $enableCodes = TRUE) {
        // Is there cache?
        if (!isset($GLOBALS[__FUNCTION__][$sqlString])) {
                //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called: ' . $sqlString);
@@ -52,16 +52,16 @@ function sqlQuery ($sqlString, $F, $L, $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",
-                               basename($F),
-                               $L
+                       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($F),
-                               $L
+                               basename($file),
+                               $line
                        ));
                }
 
@@ -77,7 +77,7 @@ function sqlQuery ($sqlString, $F, $L, $enableCodes = TRUE) {
                //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Stored cache: ' . $sqlStringModified);
        } elseif (!isSqlLinkUp()) {
                // Link went down while using cached SQL
-               reportBug(__FUNCTION__, __LINE__, 'Link went down while using cached SQL: sqlString=' . $sqlString . ',F=' . basename($F) . ',L=' . $L . ',enableCodes=' . intval($enableCodes));
+               reportBug(__FUNCTION__, __LINE__, 'Link went down while using cached SQL: sqlString=' . $sqlString . ',file=' . basename($file) . ',line=' . $line . ',enableCodes=' . intval($enableCodes));
        } else {
                //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cache used: ' . $sqlString);
 
@@ -91,16 +91,16 @@ function sqlQuery ($sqlString, $F, $L, $enableCodes = TRUE) {
        $querytimeBefore = microtime(TRUE);
 
        // Run SQL command
-       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'F=' . basename($F) . ',L=' . $L . ',sql=' . $GLOBALS['last_sql']);
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'file=' . basename($file) . ',line=' . $line . ',sql=' . $GLOBALS['last_sql']);
        $result = mysql_query($GLOBALS['last_sql'], getSqlLink())
-               or sqlError($F, $L, 'file='. basename($F) . ',line=' . $L . ':mysql_error()=' . mysql_error() . ',last_query=' . $GLOBALS['last_sql']);
-       //* DEBUG: */ logDebugMessage($F, $L, 'sql=' . $GLOBALS['last_sql'] . ',affected=' . SQL_AFFECTEDROWS() . ',numRows='.(is_resource($result) ? SQL_NUMROWS($result) : gettype($result)));
+               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='.(isValidSqlLink($result) ? sqlNumRows($result) : gettype($result)));
 
        // Calculate query time
        $queryTime = microtime(TRUE) - $querytimeBefore;
 
        // Add this query to array including timing
-       addSqlToDebug($result, $GLOBALS['last_sql'], $queryTime, $F, $L);
+       addSqlToDebug($result, $GLOBALS['last_sql'], $queryTime, $file, $line);
 
        // Save last successfull query
        setConfigEntry('db_last_query', $GLOBALS['last_sql']);
@@ -121,7 +121,7 @@ function sqlQuery ($sqlString, $F, $L, $enableCodes = TRUE) {
                } // END - if
 
                // Append debug line
-               appendLineToFile(getCachePath() . 'mysql.log', basename($F) . '|LINE=' . $L . '|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);
@@ -210,19 +210,19 @@ function sqlResult ($resource, $row, $field = '0') {
 }
 
 // SQL connect
-function sqlConnectToDatabase ($host, $login, $password, $F, $L) {
+function sqlConnectToDatabase ($host, $login, $password, $file, $line) {
        // Try to connect
-       $linkResource = mysql_connect($host, $login, $password) or sqlError($F, $L,  mysql_error());
+       $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,47 +230,50 @@ function sqlConnectToDatabase ($host, $login, $password, $F, $L) {
        `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
-       //* DEBUG: */ logDebugMessage($F . ':' . __FUNCTION__, $L . ':' . __LINE__, 'linkResource[]=' . gettype($linkResource));
+       //* DEBUG: */ logDebugMessage($file . ':' . __FUNCTION__, $line . ':' . __LINE__, 'linkResource[]=' . gettype($linkResource));
        return $linkResource;
 }
 
 // SQL select database
-function sqlSelectDatabase ($dbName, $F, $L) {
+function sqlSelectDatabase ($dbName, $file, $line) {
        // Is there still a valid link? If not, skip it.
        if (!isSqlLinkUp()) return FALSE;
 
        // Return the result
-       //* DEBUG: */ logDebugMessage($F . ':' . __FUNCTION__, $L . ':' . __LINE__, 'Selecting database ' . $dbName);
-       return mysql_select_db($dbName, getSqlLink()) or sqlError($F, $L,  mysql_error());
+       //* DEBUG: */ logDebugMessage($file . ':' . __FUNCTION__, $line . ':' . __LINE__, 'Selecting database ' . $dbName);
+       return mysql_select_db($dbName, getSqlLink()) or sqlError($file, $line,  mysql_error());
 }
 
 // SQL close link
-function sqlCloseLink ($F, $L) {
+function sqlCloseLink ($file, $line) {
        // Is the link up?
        if (!isSqlLinkUp()) {
                // Skip double close
-               //* DEBUG: */ logDebugMessage($F . ':' . __FUNCTION__, $L . ':' . __LINE__, 'Called but no link is open.');
+               //* DEBUG: */ logDebugMessage($file . ':' . __FUNCTION__, $line . ':' . __LINE__, 'Called but no link is open.');
                return FALSE;
        } // END - if
 
        // Close database link and forget the link
-       $close = mysql_close(getSqlLink()) or sqlError($F . ':' . __FUNCTION__, $L . ':' . __LINE__, mysql_error());
+       $close = mysql_close(getSqlLink()) or sqlError($file . ':' . __FUNCTION__, $line . ':' . __LINE__, mysql_error());
 
        // Close link in this layer
        unsetSqlLinkUp(__FUNCTION__, __LINE__);
 
        // Return the result
-       //* DEBUG: */ logDebugMessage($F . ':' . __FUNCTION__, $L . ':' . __LINE__, 'close[' . gettype($close) . ']=' . intval($close));
+       //* DEBUG: */ logDebugMessage($file . ':' . __FUNCTION__, $line . ':' . __LINE__, 'close[' . gettype($close) . ']=' . intval($close));
        return $close;
 }
 
 // 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]
 ?>