]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
baculum: Fix using operators for SQL queries
authorMarcin Haba <marcin.haba@bacula.pl>
Thu, 10 Nov 2022 14:21:17 +0000 (15:21 +0100)
committerMarcin Haba <marcin.haba@bacula.pl>
Thu, 17 Nov 2022 09:05:10 +0000 (10:05 +0100)
gui/baculum/protected/API/Modules/Database.php

index 22267dbe3e2b1bacb1c9d2149aaf9af7e12cfecb..fc80a97524e00cf80f93f2b8fac17d6725e01766 100644 (file)
@@ -167,6 +167,9 @@ class Database extends APIModule {
                                        $cond = [];
                                        $vals = [];
                                        $kval = str_replace('.', '_', $key);
+                                       if (!isset($value[$i]['operator'])) {
+                                               $value[$i]['operator'] = '';
+                                       }
                                        if (is_array($value[$i]['vals'])) {
                                                if ($value[$i]['operator'] == 'IN') {
                                                        // IN operator is treated separately
@@ -176,6 +179,7 @@ class Database extends APIModule {
                                                                $vals[":{$kval}{$i}{$j}"] = $value[$i]['vals'][$j];
                                                        }
                                                        $cond[] = "{$key} {$value[$i]['operator']} (" . implode(',', $tcond) . ')';
+                                                       $value[$i]['operator'] = '';
                                                } else {
                                                        // other operators
                                                        for ($j = 0; $j < count($value[$i]['vals']); $j++) {
@@ -183,14 +187,13 @@ class Database extends APIModule {
                                                                $vals[":{$kval}{$i}{$j}"] = $value[$i]['vals'][$j];
                                                        }
                                                }
-                                       } elseif (isset($value[$i]['operator']) && in_array($value[$i]['operator'], ['>', '<', '>=', '<='])) {
+                                       } elseif (in_array($value[$i]['operator'], ['>', '<', '>=', '<='])) {
                                                $cond[] = "{$key} {$value[$i]['operator']} :{$kval}{$i}";
                                                $vals[":{$kval}{$i}"] = $value[$i]['vals'];
                                                $value[$i]['operator'] = '';
                                        } else {
                                                $cond[] = "$key = :{$kval}{$i}";
                                                $vals[":{$kval}{$i}"] = $value[$i]['vals'];
-                                               $value[$i]['operator'] = '';
                                        }
                                        $condition[] = implode(' ' . $value[$i]['operator'] . ' ', $cond);
                                        foreach ($vals as $pkey => $pval) {