]> git.mxchange.org Git - mailer.git/blobdiff - inc/db/lib-mysql3.php
Earning subscriptions introduced (unfinished):
[mailer.git] / inc / db / lib-mysql3.php
index 975cefd78d94adab1f443c120fe78ebb36f29172..a86d391cd93988d3f24674d3c130a2a36f2a6c05 100644 (file)
@@ -295,6 +295,9 @@ function SQL_INSERTID () {
 function SQL_ESCAPE ($str, $secureString = true, $strip = true) {
        // Do we have cache?
        if (!isset($GLOBALS['sql_escapes'][''.$str.''])) {
+               // Prepare the string here
+               $str = SQL_PREPARE_SQL_STRING($str);
+
                // Secure string first? (which is the default behaviour!)
                if ($secureString === true) {
                        // Then do it here
@@ -360,16 +363,16 @@ function SQL_ALTER_TABLE ($sql, $F, $L, $enableCodes = true) {
        $result = false;
 
        // Determine index/fulltext/unique word
-       $noIndex = (
-       (
-               strpos($sql, 'INDEX') === false
-       ) && (
-               strpos($sql, 'KEY') === false
-       ) && (
-               strpos($sql, 'FULLTEXT') === false
-       ) && (
-               strpos($sql, 'UNIQUE') === false
-       )
+       $isAlterIndex = (
+               (
+                       isInString('INDEX', $sql)
+               ) && (
+                       isInString('KEY', $sql)
+               ) && (
+                       isInString('FULLTEXT', $sql)
+               ) && (
+                       isInString('UNIQUE', $sql)
+               )
        );
 
        // Extract table name
@@ -377,10 +380,10 @@ function SQL_ALTER_TABLE ($sql, $F, $L, $enableCodes = true) {
        $tableName = str_replace('`', '', $tableArray[2]);
 
        // Debug log
-       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sql=' . $sql . ',tableName=' . $tableName . ',tableArray=<pre>' . print_r($tableArray, true) . '</pre>');
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sql=' . $sql . ',tableName=' . $tableName . ',tableArray=<pre>' . print_r($tableArray, true) . '</pre>,isAlterIndex=' . intval($isAlterIndex));
 
        // Shall we add/drop?
-       if (((strpos($sql, 'ADD') !== false) || (strpos($sql, 'DROP') !== false) || (strpos($sql, 'CHANGE') !== false)) && ($noIndex === true)) {
+       if (((isInString('ADD', $sql)) || (isInString('DROP', $sql)) || (isInString('CHANGE', $sql))) && ($isAlterIndex === false)) {
                // Try two columns, one should fix
                foreach (array(4,5) as $idx) {
                        // If an entry is not set, abort here
@@ -397,20 +400,18 @@ function SQL_ALTER_TABLE ($sql, $F, $L, $enableCodes = true) {
                        //* 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                       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])))) {
+                       if (((!isSqlTableColumnFound($tableName, $columnName)) && (isInString('ADD', $sql))) || ((isSqlTableColumnFound($tableName, $columnName)) && ((isInString('DROP', $sql)) || ((isInString('CHANGE', $sql)) && ($idx == 4) && ((!isSqlTableColumnFound($tableName, $tableArray[5])) || ($columnName == $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 ((((isSqlTableColumnFound($tableName, $columnName)) && (strpos($sql, 'ADD') !== false)) || ((isSqlTableColumnFound($tableName, $columnName)) && (strpos($sql, 'DROP') !== false)) || (strpos($sql, 'CHANGE') !== false)) && ($columnName != 'KEY')) {
+                       } elseif ((((isSqlTableColumnFound($tableName, $columnName)) && (isInString('ADD', $sql))) || ((!isSqlTableColumnFound($tableName, $columnName)) && ((isInString('DROP', $sql))) || (isInString('CHANGE', $sql)))) && ($columnName != 'KEY')) {
                                // Abort here because it is alreay there
                                //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Skipped: sql=' . $sql . ',columnName=' . $columnName . ',idx=' . $idx);
                                break;
-                       } elseif ((!isSqlTableColumnFound($tableName, $columnName)) && (strpos($sql, 'DROP') !== false)) {
+                       } elseif ((!isSqlTableColumnFound($tableName, $columnName)) && (isInString('DROP', $sql))) {
                                // Abort here because we tried to drop a column which is not there (never created maybe)
                                //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'No drop: ' . $sql);
                                break;
@@ -419,27 +420,28 @@ function SQL_ALTER_TABLE ($sql, $F, $L, $enableCodes = true) {
                                logDebugMessage(__FUNCTION__, __LINE__, 'Possible problem: ' . $sql . ',hasZeroNums=' . intval(isSqlTableColumnFound($tableName, $columnName)) . '');
                        }
                } // END - foreach
-       } elseif ((getTableType() == 'InnoDB') && (strpos($sql, 'FULLTEXT') !== false)) {
+       } elseif ((getTableType() == 'InnoDB') && (isInString('FULLTEXT', $sql))) {
                // 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) {
+       } elseif ($isAlterIndex === true) {
                // And column name as well without backticks
                $keyName = str_replace('`', '', $tableArray[5]);
-               /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'keyName=' . $keyName . ',tableArray=<pre>' . print_r($tableArray, true) . '</pre>');
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'keyName=' . $keyName . ',tableArray=<pre>' . print_r($tableArray, true) . '</pre>');
 
                // Is this "UNIQUE" or so? FULLTEXT has been handled the elseif() block above
                if (in_array(strtoupper($tableArray[4]), array('INDEX', 'UNIQUE', 'KEY', 'FULLTEXT'))) {
                        // Init loop
                        $begin = 1;
                        $keyName = ',';
-                       while (strpos($keyName, ',') !== false) {
+                       while (isInString(',', $keyName)) {
                                // Use last
+                               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'keyName=' . $keyName . 'begin=' . $begin . ' - BEFORE');
                                $keyName = str_replace('`', '', $tableArray[count($tableArray) - $begin]);
-                               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $keyName . '----------------' . $begin);
+                               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'keyName=' . $keyName . 'begin=' . $begin . ' - BETWEEN');
 
                                // Remove brackes
                                $keyName = str_replace('(', '', str_replace(')', '', $keyName));
-                               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $keyName . '----------------' . $begin);
+                               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'keyName=' . $keyName . 'begin=' . $begin . ' - AFTER');
 
                                // Continue
                                $begin++;
@@ -447,18 +449,18 @@ function SQL_ALTER_TABLE ($sql, $F, $L, $enableCodes = true) {
                } // END - if
 
                // Shall we run it?
-               /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ', tableArray[3]=' . $tableArray[3] . ',keyName=' . $keyName);
-               if ((!isSqlTableIndexAdded($tableName, $tableArray[3], $keyName)) && ($tableArray[3] == 'ADD')) {
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ', tableArray[3]=' . $tableArray[3] . ',keyName=' . $keyName);
+               if (($tableArray[3] == 'ADD') && (!isSqlTableIndexFound($tableName, $keyName))) {
                        // Send it to the SQL_QUERY() function to add it
-                       /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $sql);
+                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sql=' . $sql . ' - ADDING!');
                        $result = SQL_QUERY($sql, $F, $L, $enableCodes);
-               } elseif ((isSqlTableIndexAdded($tableName, $tableArray[3], $keyName)) && ($tableArray[3] == 'DROP')) {
+               } elseif (($tableArray[3] == 'DROP') && (isSqlTableIndexFound($tableName, $keyName))) {
                        // Send it to the SQL_QUERY() function to drop it
-                       /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $sql);
+                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sql=' . $sql . ' - DROPPING!');
                        $result = SQL_QUERY($sql, $F, $L, $enableCodes);
                } else {
                        // Not executed
-                       /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Not executed: ' . $sql);
+                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Not executed: ' . $sql);
                }
        } else {
                // Other ALTER TABLE query
@@ -473,7 +475,7 @@ function SQL_ALTER_TABLE ($sql, $F, $L, $enableCodes = true) {
 // Getter for SQL link
 function SQL_GET_LINK () {
        // Init link
-       $link = null;
+       $link = NULL;
 
        // Is it in the globals?
        if (isset($GLOBALS['sql_link'])) {
@@ -540,12 +542,11 @@ function SQL_HASZEROAFFECTED () {
 function SQL_PREPARE_SQL_STRING ($sqlString, $enableCodes = true) {
        // Is it already cached?
        if (!isset($GLOBALS['sql_strings'][$sqlString])) {
-               // Compile config+expression code
-               $sqlString2 = FILTER_COMPILE_EXPRESSION_CODE(FILTER_COMPILE_CONFIG($sqlString));
+               // Compile URI codes+config+expression code
+               $sqlString2 = FILTER_COMPILE_EXPRESSION_CODE(FILTER_COMPILE_CONFIG(compileUriCode($sqlString)));
 
                // Do final compilation
                $GLOBALS['sql_strings'][$sqlString] = doFinalCompilation($sqlString2, false, $enableCodes);
-               //die($sqlString.'<br />'.$sqlString2.'<br />'.$GLOBALS['sql_strings'][$sqlString]);
        } // END - if
 
        // Return it
@@ -559,6 +560,7 @@ function SQL_EPOCHE_TO_TIMESTAMP ($timestamp) {
 
 // Check if there is a SQL table created
 function isSqlTableCreated ($tableName) {
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ' - ENTERED!');
        // Do we have cache?
        if (!isset($GLOBALS[__FUNCTION__][$tableName])) {
                // Check if the table is there
@@ -571,11 +573,13 @@ function isSqlTableCreated ($tableName) {
        } // END - if
 
        // Return cache
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',result=' . intval($GLOBALS[__FUNCTION__][$tableName]) . ' - EXIT!');
        return $GLOBALS[__FUNCTION__][$tableName];
 }
 
 // Is a table column there?
 function isSqlTableColumnFound ($tableName, $columnName) {
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',columnName=' . $columName . ' - ENTERED!');
        // Do we have cache?
        if (!isset($GLOBALS[__FUNCTION__][$tableName][$columnName])) {
                // And column name as well
@@ -594,49 +598,37 @@ function isSqlTableColumnFound ($tableName, $columnName) {
        } // END - if
 
        // Return cache
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',columnName=' . $columName . ',result=' . intval($GLOBALS[__FUNCTION__][$tableName][$columnName]) . ' - EXIT!');
        return $GLOBALS[__FUNCTION__][$tableName][$columnName];
 }
 
-// Checks depending on the mode if the table is there
-function isSqlTableIndexAdded ($tableName, $mode, $keyName) {
+// Checks depending on the mode if the index is there
+function isSqlTableIndexFound ($tableName, $keyName) {
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',columnName=' . $keyName . ' - ENTERED!');
        // Do we have cache?
-       if (!isset($GLOBALS[__FUNCTION__][$tableName][$mode])) {
+       if (!isset($GLOBALS[__FUNCTION__][$tableName][$keyName])) {
                // 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
+               // The column is not found by default
+               $GLOBALS[__FUNCTION__][$tableName][$keyName] = false;
 
                // 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;
-                       }
+                       // Add all entries for better caching behavior
+                       $GLOBALS[__FUNCTION__][$tableName][$content['Key_name']] = true;
                } // END - while
 
                // Free result
                SQL_FREERESULT($result);
+       } else {
+               // Cache used
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',columnName=' . $keyName . ',result=' . intval($GLOBALS[__FUNCTION__][$tableName][$keyName]) . ' - CACHE!');
        } // END - if
 
        // Return cache
-       return $GLOBALS[__FUNCTION__][$tableName][$mode];
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',columnName=' . $keyName . ',result=' . intval($GLOBALS[__FUNCTION__][$tableName][$keyName]) . ' - EXIT!');
+       return $GLOBALS[__FUNCTION__][$tableName][$keyName];
 }
 
 // [EOF]