+// Creates a MySQL TIMESTAMP compatible string from given Uni* timestamp
+function SQL_EPOCHE_TO_TIMESTAMP ($timestamp) {
+ return generateDateTime($timestamp, 7);
+}
+
+// Log SQL errors to debug.log in installation phase or call reportBug()
+function SQL_ERROR ($file, $line, $message) {
+ // Remember plain error in last_sql_error
+ $GLOBALS['last_sql_error'] = mysql_error();
+
+ // Do we have installation phase?
+ if (isInstallationPhase()) {
+ /*
+ * In installation phase, we don't want SQL errors abort e.g. connection
+ * tests, so just log it away.
+ */
+ logDebugMessage($file, $line, $message);
+ } else {
+ // Regular mode, then call reportBug()
+ reportBug($file, $line, $message);
+ }
+}
+
+// Check if there is a SQL table created
+function ifSqlTableExists ($tableName) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ' - ENTERED!');
+ // 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
+ //* 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=' . $columnName . ' - ENTERED!');
+ // 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
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',columnName=' . $columnName . ',result=' . intval($GLOBALS[__FUNCTION__][$tableName][$columnName]) . ' - EXIT!');
+ return $GLOBALS[__FUNCTION__][$tableName][$columnName];
+}
+
+// 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][$keyName])) {
+ // Show indexes
+ $result = SQL_QUERY_ESC("SHOW INDEX FROM `%s`", array($tableName), __FUNCTION__, __LINE__);
+
+ // The column is not found by default
+ $GLOBALS[__FUNCTION__][$tableName][$keyName] = false;
+
+ // Walk through all
+ while ($content = SQL_FETCHARRAY($result)) {
+ // 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
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',columnName=' . $keyName . ',result=' . intval($GLOBALS[__FUNCTION__][$tableName][$keyName]) . ' - EXIT!');
+ return $GLOBALS[__FUNCTION__][$tableName][$keyName];
+}
+
+// Init database layer
+function initDatabaseLayer () {
+ // Set all required variables:
+ $GLOBALS['last_sql_error'] = '';
+}
+
+// Get last SQL error
+function getLastSqlError () {
+ return $GLOBALS['last_sql_error'];
+}
+
+// Gets an array (or false if none is found) from all supported engines
+function getArrayFromSupportedSqlEngines ($support = 'YES') {
+ // Init array
+ $engines = array();
+
+ // This also worked, now we need to check if the selected database type is supported
+ $result = SQL_QUERY('SHOW ENGINES', __FUNCTION__, __LINE__);
+
+ // Do we have entries? (Bad if not)
+ if (SQL_NUMROWS($result) > 0) {
+ // Load all and check for active entries
+ while ($content = SQL_FETCHARRAY($result)) {
+ // Is this supported?
+ if (($support == 'ALL') || ($content['Support'] == $support)) {
+ // Add it
+ array_push($engines, $content);
+ } elseif (isDebugModeEnabled()) {
+ // Log it away in debug mode
+ logDebugMessage(__FUNCTION__, __LINE__, 'Engine ' . $content['Engine'] . ' is not supported (' . $content['Supported'] . ')');
+ }
+ } // END - if
+ } else {
+ // No engines! :(
+ $engines = false;
+ }
+
+ // Free result
+ SQL_FREERESULT($result);
+
+ // Return result
+ return $engines;
+}
+