From 062070058e48c584616493af38d9949eccd9a849 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Sat, 15 Apr 2017 17:31:32 +0200 Subject: [PATCH] Move any_value_fallback() to dba class https://github.com/friendica/friendica/pull/3323#discussion_r111666245 --- include/dba.php | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/include/dba.php b/include/dba.php index 4352cde669..5066dcd56d 100644 --- a/include/dba.php +++ b/include/dba.php @@ -477,6 +477,26 @@ class dba { } } } + + /** + * @brief Replaces ANY_VALUE() function by MIN() function, + * if the database server does not support ANY_VALUE(). + * + * Considerations for Standard SQL, or MySQL with ONLY_FULL_GROUP_BY (default since 5.7.5). + * ANY_VALUE() is available from MySQL 5.7.5 https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html + * A standard fall-back is to use MIN(). + * + * @param string $sql An SQL string without the values + * @return string The input SQL string modified if necessary. + */ + public function any_value_fallback($sql) { + $server_info = $this->server_info(); + if (version_compare($server_info, '5.7.5', '<') || + (stripos($server_info, 'MariaDB') !== false)) { + $sql = str_ireplace('ANY_VALUE(', 'MIN(', $sql); + } + return $sql; + } } function printable($s) { @@ -507,27 +527,6 @@ function dbesc($str) { } } -/** - * @brief Replaces ANY_VALUE() function by MIN() function, - * if the database server does not support ANY_VALUE(). - * - * Considerations for Standard SQL, or MySQL with ONLY_FULL_GROUP_BY (default since 5.7.5). - * ANY_VALUE() is available from MySQL 5.7.5 https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html - * A standard fall-back is to use MIN(). - * - * @param string $sql An SQL string without the values - * @return string The input SQL string modified if necessary. - */ -function any_value_fallback($sql) { - global $db; - $server_info = $db->server_info(); - if (version_compare($server_info, '5.7.5', '<') || - (stripos($server_info, 'MariaDB') !== false)) { - $sql = str_ireplace('ANY_VALUE(', 'MIN(', $sql); - } - return $sql; -} - // Function: q($sql,$args); // Description: execute SQL query with printf style args. // Example: $r = q("SELECT * FROM `%s` WHERE `uid` = %d", @@ -538,7 +537,7 @@ function q($sql) { unset($args[0]); if ($db && $db->connected) { - $sql = any_value_fallback($sql); + $sql = $db->any_value_fallback($sql); $stmt = @vsprintf($sql,$args); // Disabled warnings //logger("dba: q: $stmt", LOGGER_ALL); if ($stmt === false) @@ -575,7 +574,7 @@ function qu($sql) { unset($args[0]); if ($db && $db->connected) { - $sql = any_value_fallback($sql); + $sql = $db->any_value_fallback($sql); $stmt = @vsprintf($sql,$args); // Disabled warnings if ($stmt === false) logger('dba: vsprintf error: ' . print_r(debug_backtrace(),true), LOGGER_DEBUG);