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 <lfleischer@archlinux.org>
This commit is contained in:
Lukas Fleischer 2017-02-27 18:09:57 +01:00
parent 62341a3b34
commit c557f348c4

View file

@ -111,14 +111,16 @@ function set_lang() {
$result = $dbh->query($q); $result = $dbh->query($q);
if ($result) { if ($result) {
$row = $result->fetchAll(); $LANG = $result->fetchColumn(0);
$LANG = $row[0]; if (!$LANG) {
unset($LANG);
}
} }
$update_cookie = 1; $update_cookie = 1;
} }
# Set $LANG to default if nothing is valid. # 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'); $LANG = config_get('options', 'default_lang');
} }