]> git.mxchange.org Git - mailer.git/blobdiff - inc/db/lib-mysql3.php
'order_points' and locked are now displayed, some array elements/language ids renamed
[mailer.git] / inc / db / lib-mysql3.php
index acb23bd23800376c4ef95661b8eb9f07413213f9..6a11f697f10bdbd08f0b8cc81bf3be3c357240df 100644 (file)
@@ -16,7 +16,7 @@
  * $Author::                                                          $ *
  * -------------------------------------------------------------------- *
  * Copyright (c) 2003 - 2009 by Roland Haeder                           *
- * Copyright (c) 2009, 2010 by Mailer Developer Team                    *
+ * Copyright (c) 2009 - 2011 by Mailer Developer Team                   *
  * For more information visit: http://www.mxchange.org                  *
  *                                                                      *
  * This program is free software; you can redistribute it and/or modify *
@@ -119,7 +119,7 @@ function SQL_QUERY ($sqlString, $F, $L, $enableCodes = true) {
                } // END - if
 
                // Append debug line
-               appendLineToFile(getCachePath() . 'mysql.log', $F . '(LINE=' . $L . '|NUM=' . SQL_NUMROWS($result) . '|AFFECTED=' . SQL_AFFECTEDROWS() . '|QUERYTIME:' . $queryTime . '): ' . str_replace("\r", '', str_replace("\n", ' ', $GLOBALS['last_sql'])));
+               appendLineToFile(getCachePath() . 'mysql.log', basename($F) . '|LINE=' . $L . '|NUM=' . (is_resource($result) ? SQL_NUMROWS($result) : 'false') . '|AFFECTED=' . SQL_AFFECTEDROWS() . '|QUERYTIME:' . $queryTime . '): ' . str_replace("\r", '', str_replace("\n", ' ', $GLOBALS['last_sql'])));
        } // END - if
 
        // Count DB hits
@@ -220,9 +220,6 @@ function SQL_CONNECT ($host, $login, $password, $F, $L) {
 
        // Set the link resource
        SQL_SET_LINK($linkResource);
-
-       // Destroy cache
-       unset($GLOBALS['is_sql_link_up']);
 }
 
 // SQL select database
@@ -248,9 +245,6 @@ function SQL_CLOSE ($F, $L) {
        // Close link
        SQL_SET_LINK(null);
 
-       // Destroy cache
-       unset($GLOBALS['is_sql_link_up']);
-
        // Return the result
        return $close;
 }
@@ -398,41 +392,37 @@ function SQL_ALTER_TABLE ($sql, $F, $L, $enableCodes = true) {
                        } // END - if
 
                        // And column name as well
-                       $columnName = str_replace('`', '', $tableArray[$idx]);
-
-                       // Get column information
-                       $result = SQL_QUERY_ESC("SHOW COLUMNS FROM `%s` LIKE '%s'",
-                               array($tableName, $columnName), __FUNCTION__, __LINE__);
+                       $columnName = $tableArray[$idx];
 
                        // Debug log
-                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'columnName=' . $columnName . ',idx=' . $idx . ',sql=' . $sql . ',hasZeroNums=' . intval(SQL_HASZERONUMS($result)));
+                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'columnName=' . $columnName . ',idx=' . $idx . ',sql=' . $sql . ',hasZeroNums=' . intval(isSqlTableColumnFound($tableName, $columnName)));
 
                        // Do we have no entry on ADD or an entry on DROP/CHANGE?
-                       // 123               4       43    3      4           4          32    23           4       4     3    3      4            4          32    23                4       43    3      4              4          3    3         321
-                       if (((SQL_HASZERONUMS($result)) && (strpos($sql, 'ADD') !== false)) || ((!SQL_HASZERONUMS($result)) && (strpos($sql, 'DROP') !== false)) || ((!SQL_HASZERONUMS($result)) && (strpos($sql, 'CHANGE') !== false) && ($idx == 4))) {
+                       // 123                      4                       43    3      4           4          32    23                     4                       43    3      4            4          32    23                     4                       43    3      4              4          3    3         3    3                      4                          4321
+                       if (((!isSqlTableColumnFound($tableName, $columnName)) && (strpos($sql, 'ADD') !== false)) || ((isSqlTableColumnFound($tableName, $columnName)) && (strpos($sql, 'DROP') !== false)) || ((isSqlTableColumnFound($tableName, $columnName)) && (strpos($sql, 'CHANGE') !== false) && ($idx == 4) && (!isSqlTableColumnFound($tableName, $tableArray[5])))) {
                                // Do the query
                                //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Executing: ' . $sql);
                                $result = SQL_QUERY($sql, $F, $L, false);
 
                                // Skip further attempt(s)
                                break;
-                       //       1234                5       54    4      5           5          43    34                5       54    4      5            5          43    3      4              4          32    2                    21
-                       } elseif ((((!SQL_HASZERONUMS($result)) && (strpos($sql, 'ADD') !== false)) || ((!SQL_HASZERONUMS($result)) && (strpos($sql, 'DROP') !== false)) || (strpos($sql, 'CHANGE') !== false)) && ($columnName != 'KEY')) {
+                       //       1234                     5                       54    4      5           5          43    34                     5                       54    4      5            5          43    3      4              4          32    2                    21
+                       } elseif ((((isSqlTableColumnFound($tableName, $columnName)) && (strpos($sql, 'ADD') !== false)) || ((isSqlTableColumnFound($tableName, $columnName)) && (strpos($sql, 'DROP') !== false)) || (strpos($sql, 'CHANGE') !== false)) && ($columnName != 'KEY')) {
                                // Abort here because it is alreay there
                                //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Skipped: sql=' . $sql . ',columnName=' . $columnName . ',idx=' . $idx);
                                break;
-                       } elseif ((SQL_HASZERONUMS($result)) && (strpos($sql, 'DROP') !== false)) {
+                       } elseif ((!isSqlTableColumnFound($tableName, $columnName)) && (strpos($sql, 'DROP') !== false)) {
                                // Abort here because we tried to drop a column which is not there (never created maybe)
                                //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'No drop: ' . $sql);
                                break;
                        } elseif ($columnName != 'KEY') {
                                // Something didn't fit, we better log it
-                               logDebugMessage(__FUNCTION__, __LINE__, 'Possible problem: ' . $sql . ',hasZeroNums=' . intval(SQL_HASZERONUMS($result)) . '');
+                               logDebugMessage(__FUNCTION__, __LINE__, 'Possible problem: ' . $sql . ',hasZeroNums=' . intval(isSqlTableColumnFound($tableName, $columnName)) . '');
                        }
                } // END - foreach
-       } elseif ((getConfig('_TABLE_TYPE') == 'InnoDB') && (strpos($sql, 'FULLTEXT') !== false)) {
-               // Skip this query silently
-               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Skipped FULLTEXT: sql=%s,tableName=%s,hasZeroNums=%d,file=%s,line=%s", $sql, $tableName, intval((is_bool($result)) ? 0 : SQL_HASZERONUMS($result)), $F, $L));
+       } elseif ((getTableType() == 'InnoDB') && (strpos($sql, 'FULLTEXT') !== false)) {
+               // Skip this query silently because InnoDB does not understand fulltext indexes
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Skipped FULLTEXT: sql=%s,tableName=%s,hasZeroNums=%d,file=%s,line=%s", $sql, $tableName, intval((is_bool($result)) ? 0 : isSqlTableColumnFound($columnName)), $F, $L));
        } elseif ($noIndex === false) {
                // And column name as well
                //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableArray=<pre>' . print_r($tableArray, true) . '</pre>');
@@ -456,41 +446,8 @@ function SQL_ALTER_TABLE ($sql, $F, $L, $enableCodes = true) {
                        } // END while
                } // END - if
 
-               // Show indexes
-               $result = SQL_QUERY_ESC("SHOW INDEX FROM `%s`", array($tableName), __FUNCTION__, __LINE__);
-
-               // Non-skipping is default for ADD
-               $skip = false;
-
-               // But should we DROP?
-               if ($tableArray[3] == 'DROP') {
-                       // Then skip if nothing found!
-                       $skip = true;
-                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Going to drop key ' . $keyName);
-               } // END - if
-
-               // Walk through all
-               while ($content = SQL_FETCHARRAY($result)) {
-                       // Is it found?
-                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'columnName='.$keyName.',content=<pre>' . print_r($content, true) . '</pre>');
-                       if (($content['Key_name'] == $keyName) && ($tableArray[3] == 'ADD')) {
-                               // Skip this query!
-                               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("ADD: Skiped: %s", $sql));
-                               $skip = true;
-                               break;
-                       } elseif (($content['Key_name'] == $keyName) && ($tableArray[3] == 'DROP')) {
-                               // Don't skip this!
-                               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("DROP: Not skiped: %s", $sql));
-                               $skip = false;
-                               break;
-                       }
-               } // END - while
-
-               // Free result
-               SQL_FREERESULT($result);
-
                // Shall we run it?
-               if ($skip === false) {
+               if (!isSqlTableIndexAdded($tableName, $tableArray[3], $keyName)) {
                        // Send it to the SQL_QUERY() function
                        //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $sql);
                        $result = SQL_QUERY($sql, $F, $L, $enableCodes);
@@ -531,11 +488,14 @@ function SQL_SET_LINK ($link) {
                return;
        } elseif ((!is_resource($link)) && (!is_null($link))) {
                // This should never happen!
-               debug_report_bug(__FUNCTION__, __LINE__, sprintf("link is not resource or null. Type: %s", gettype($link)));
+               debug_report_bug(__FUNCTION__, __LINE__, sprintf("Type of link is not resource or null, type=%s", gettype($link)));
        } // END - if
 
        // Set it
        $GLOBALS['sql_link'] = $link;
+
+       // Re-init cache
+       $GLOBALS['is_sql_link_up'] = is_resource($link);
 }
 
 // Checks if the link is up
@@ -587,5 +547,92 @@ function SQL_PREPARE_SQL_STRING ($sqlString, $enableCodes = true) {
        return $GLOBALS['sql_strings'][$sqlString];
 }
 
+// Creates a MySQL TIMESTAMP compatible string from given Uni* timestamp
+function SQL_EPOCHE_TO_TIMESTAMP ($timestamp) {
+       return generateDateTime($timestamp, 7);
+}
+
+// Check if there is a SQL table created
+function isSqlTableCreated ($tableName) {
+       // Do we have cache?
+       if (!isset($GLOBALS[__FUNCTION__][$tableName])) {
+               // Check if the table is there
+               $result = SQL_QUERY_ESC("SHOW TABLES FROM `{?__DB_NAME?}` WHERE `Tables_in_{?__DB_NAME?}`='{?_MYSQL_PREFIX?}_%s'",
+                       array($tableName), __FILE__, __LINE__);
+
+               // Is there an entry?
+               $GLOBALS[__FUNCTION__][$tableName] = (SQL_NUMROWS($result) == 1);
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',numRows=' . intval($GLOBALS[__FUNCTION__][$tableName]));
+       } // END - if
+
+       // Return cache
+       return $GLOBALS[__FUNCTION__][$tableName];
+}
+
+// Is a table column there?
+function isSqlTableColumnFound ($tableName, $columnName) {
+       // Do we have cache?
+       if (!isset($GLOBALS[__FUNCTION__][$tableName][$columnName])) {
+               // And column name as well
+               $columnName = str_replace('`', '', $columnName);
+
+               // Get column information
+               $result = SQL_QUERY_ESC("SHOW COLUMNS FROM `%s` LIKE '%s'",
+                       array($tableName, $columnName), __FUNCTION__, __LINE__);
+
+               // Determine it
+               $GLOBALS[__FUNCTION__][$tableName][$columnName] = (!SQL_HASZERONUMS($result));
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',columnName=' . $columnName . ',hasZeroNums=' . intval(SQL_HASZERONUMS($result)) . ',numRows=' . intval($GLOBALS[__FUNCTION__][$tableName][$columnName]));
+
+               // Free result
+               SQL_FREERESULT($result);
+       } // END - if
+
+       // Return cache
+       return $GLOBALS[__FUNCTION__][$tableName][$columnName];
+}
+
+// Checks depending on the mode if the table is there
+function isSqlTableIndexAdded ($tableName, $mode, $keyName) {
+       // Do we have cache?
+       if (!isset($GLOBALS[__FUNCTION__][$tableName][$mode])) {
+               // Show indexes
+               $result = SQL_QUERY_ESC("SHOW INDEX FROM `%s`", array($tableName), __FUNCTION__, __LINE__);
+
+               // Non-skipping is default for ADD
+               $GLOBALS[__FUNCTION__][$tableName][$mode] = false;
+
+               // But should we DROP?
+               if ($mode == 'DROP') {
+                       // Then skip if nothing found
+                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Going to drop key ' . $keyName);
+                       $GLOBALS[__FUNCTION__][$tableName][$mode] = true;
+               } // END - if
+
+               // Walk through all
+               while ($content = SQL_FETCHARRAY($result)) {
+                       // Is it found?
+                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'columnName='.$keyName.',content=<pre>' . print_r($content, true) . '</pre>');
+                       if (($content['Key_name'] == $keyName) && ($mode == 'ADD')) {
+                               // Skip this query!
+                               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("ADD: Skiped: %s", $sql));
+                               $GLOBALS[__FUNCTION__][$tableName][$mode] = true;
+                               break;
+                       } elseif (($content['Key_name'] == $keyName) && ($mode == 'DROP')) {
+                               // Don't skip this!
+                               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("DROP: Not skiped: %s", $sql));
+                               $GLOBALS[__FUNCTION__][$tableName][$mode] = false;
+                               break;
+                       }
+               } // END - while
+
+               // Free result
+               SQL_FREERESULT($result);
+       } // END - if
+
+       // Return cache
+       return $GLOBALS[__FUNCTION__][$tableName][$mode];
+}
+
 // [EOF]
 ?>