From b22adccd7c6abaa29d6ae5d18f89d9de630bd309 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Sun, 6 Feb 2011 23:00:44 +0000 Subject: [PATCH] New function introduced, missing function getPointsWord() added: - New function isSqlTableColumnFound() introduced to handle adding/dropping columns - Missing wrapper function getPointsWord() now included (it was added but I commited only its usage) - Some code cleanups --- inc/db/lib-mysql3.php | 49 +++++++++++++++++++++++---------- inc/extensions/ext-removeip.php | 3 +- inc/filters.php | 16 ++++++++--- inc/wrapper-functions.php | 14 +++++++++- 4 files changed, 60 insertions(+), 22 deletions(-) diff --git a/inc/db/lib-mysql3.php b/inc/db/lib-mysql3.php index ccf777eb42..f8c429e426 100644 --- a/inc/db/lib-mysql3.php +++ b/inc/db/lib-mysql3.php @@ -392,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 ((getTableType() == '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)); + // 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=
' . print_r($tableArray, true) . '
'); @@ -561,13 +557,36 @@ function isSqlTableCreated ($tableName) { // Is there an entry? $GLOBALS[__FUNCTION__][$tableName] = (SQL_NUMROWS($result) == 1); - /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',numRows=' . intval($GLOBALS[__FUNCTION__][$tableName])); + //* 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? diff --git a/inc/extensions/ext-removeip.php b/inc/extensions/ext-removeip.php index 06a62eee4a..f24cfb3089 100644 --- a/inc/extensions/ext-removeip.php +++ b/inc/extensions/ext-removeip.php @@ -46,8 +46,7 @@ setThisExtensionVersion('0.0.1'); // Version history array (add more with , '0.1.0' and so on) setExtensionVersionHistory(array('0.0', '0.0.1')); -switch (getExtensionMode()) -{ +switch (getExtensionMode()) { case 'register': // Do stuff when installation is running (modules.php?module=admin is called) // SQL commands to run addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `removeip_anon_ip` ENUM('Y','N') NOT NULL DEFAULT 'Y'"); diff --git a/inc/filters.php b/inc/filters.php index 9985adf03d..9a42401776 100644 --- a/inc/filters.php +++ b/inc/filters.php @@ -258,7 +258,9 @@ function FILTER_RUN_SQLS ($data) { $sql = trim($sql); // Is 'enable_codes' not set? Then set it to true - if (!isset($data['enable_codes'])) $data['enable_codes'] = true; + if (!isset($data['enable_codes'])) { + $data['enable_codes'] = true; + } // END - if // Is there still a query left? if (!empty($sql)) { @@ -284,10 +286,14 @@ function FILTER_RUN_SQLS ($data) { // Filter for updating/validating login data function FILTER_UPDATE_LOGIN_DATA () { // Add missing array - if ((!isset($GLOBALS['last_online'])) || (!is_array($GLOBALS['last_online']))) $GLOBALS['last_online'] = array(); + if ((!isset($GLOBALS['last_online'])) || (!is_array($GLOBALS['last_online']))) { + $GLOBALS['last_online'] = array(); + } // END - if // Recheck if logged in - if (!isMember()) return false; + if (!isMember()) { + return false; + } // END - if // Secure user id setMemberId(getSession('userid')); @@ -324,7 +330,9 @@ function FILTER_UPDATE_LOGIN_DATA () { // Filter for initializing randomizer function FILTER_INIT_RANDOMIZER () { // Only execute this filter if installed - if ((!isInstalled()) || (!isExtensionInstalledAndNewer('other', '0.2.5'))) return; + if ((!isInstalled()) || (!isExtensionInstalledAndNewer('other', '0.2.5'))) { + return; + } // END - if // Take a prime number which is long (if you know a longer one please try it out!) setConfigEntry('_PRIME', 591623); diff --git a/inc/wrapper-functions.php b/inc/wrapper-functions.php index 5c9e3f405c..d2ff5ffdd6 100644 --- a/inc/wrapper-functions.php +++ b/inc/wrapper-functions.php @@ -2209,7 +2209,7 @@ function getSmtpUser () { } // "Getter" for SMTP_PASSWORD -function getSmtpPassword() { +function getSmtpPassword () { // Do we have cache? if (!isset($GLOBALS[__FUNCTION__])) { // Determine it @@ -2220,6 +2220,18 @@ function getSmtpPassword() { return $GLOBALS[__FUNCTION__]; } +// "Getter" for POINTS_WORD +function getPointsWord () { + // Do we have cache? + if (!isset($GLOBALS[__FUNCTION__])) { + // Determine it + $GLOBALS[__FUNCTION__] = getConfig('points_word'); + } // END - if + + // Return cache + return $GLOBALS[__FUNCTION__]; +} + // Checks wether proxy configuration is used function isProxyUsed () { // Do we have cache? -- 2.30.2