From c557f348c42309fa761eaed0a7957d6b67cc0d74 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Mon, 27 Feb 2017 18:09:57 +0100 Subject: Fix SQL query to retrieve language setting In commit e171f6f (Migrate all DB code to use PDO, 2012-08-08), PDOStatement::fetchAll() was introduced as a drop-in replacement for mysql_fetch_array(). However, PDOStatement::fetchAll() returns a list of all results while mysql_fetch_array() returns a single result only. Instead of adding the missing indirection, simplify the code by using PDO::fetchColumn(). Also add some safeguards to prevent warnings if the result set returned by the query is empty. Signed-off-by: Lukas Fleischer --- web/lib/translator.inc.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/web/lib/translator.inc.php b/web/lib/translator.inc.php index 58648c41..d10f8e90 100644 --- a/web/lib/translator.inc.php +++ b/web/lib/translator.inc.php @@ -111,14 +111,16 @@ function set_lang() { $result = $dbh->query($q); if ($result) { - $row = $result->fetchAll(); - $LANG = $row[0]; + $LANG = $result->fetchColumn(0); + if (!$LANG) { + unset($LANG); + } } $update_cookie = 1; } # Set $LANG to default if nothing is valid. - if (!array_key_exists($LANG, $SUPPORTED_LANGS)) { + if (!isset($LANG) || !array_key_exists($LANG, $SUPPORTED_LANGS)) { $LANG = config_get('options', 'default_lang'); } -- cgit v1.2.3-24-g4f1b