summaryrefslogtreecommitdiffstats
path: root/modules-available
diff options
context:
space:
mode:
authorSimon Rettberg2020-04-21 18:32:16 +0200
committerSimon Rettberg2020-04-21 18:32:16 +0200
commit9164b059958d82f76595400fda64aa9f739bfc23 (patch)
tree9799cc1a5ad36519e5b4260ae5f5865de614eb12 /modules-available
parent[locations] Add missing array key (diff)
downloadslx-admin-9164b059958d82f76595400fda64aa9f739bfc23.tar.gz
slx-admin-9164b059958d82f76595400fda64aa9f739bfc23.tar.xz
slx-admin-9164b059958d82f76595400fda64aa9f739bfc23.zip
[statistics] Validate operator for all filters
Diffstat (limited to 'modules-available')
-rw-r--r--modules-available/statistics/inc/statisticsfilter.inc.php18
1 files changed, 18 insertions, 0 deletions
diff --git a/modules-available/statistics/inc/statisticsfilter.inc.php b/modules-available/statistics/inc/statisticsfilter.inc.php
index e554a61c..215d49a7 100644
--- a/modules-available/statistics/inc/statisticsfilter.inc.php
+++ b/modules-available/statistics/inc/statisticsfilter.inc.php
@@ -29,6 +29,10 @@ abstract class StatisticsFilter
*/
public static $columns;
+ /*
+ * Class instance stuff
+ */
+
/**
* @var string|null db-based sort column for this field, null if not sortable
*/
@@ -57,6 +61,19 @@ abstract class StatisticsFilter
public function bind(string $op, $argument) { return new DatabaseFilter($this, $op, $argument); }
+ public final function validateOperator(string $operator)
+ {
+ if (empty($this->ops))
+ return;
+ if (!in_array($operator, $this->ops)) {
+ Util::traceError("Invalid op '$operator' for " . get_class($this) . '::' . $this->column);
+ }
+ }
+
+ /*
+ * Static/Helpers
+ */
+
public static function findBestValue($array, $value, $up)
{
$best = 0;
@@ -557,6 +574,7 @@ class DatabaseFilter
public $argument;
public function __construct(StatisticsFilter $inst, string $op, $argument)
{
+ $inst->validateOperator($op);
$this->inst = $inst;
$this->op = $op;
$this->argument = $argument;