From 4252878019968cc6989d774f390a07e4980238f3 Mon Sep 17 00:00:00 2001 From: James Collins Date: Mon, 11 Sep 2023 21:03:12 +1000 Subject: [PATCH] support the | (or) operator --- app/Conductors/Conductor.php | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/app/Conductors/Conductor.php b/app/Conductors/Conductor.php index a79e907..bd96064 100644 --- a/app/Conductors/Conductor.php +++ b/app/Conductors/Conductor.php @@ -157,7 +157,6 @@ class Conductor } $filterFields += $this->defaultFilters; - foreach ($filterFields as $field => $value) { if ( is_array($limitFields) === false || @@ -168,7 +167,7 @@ class Conductor $join = 'AND'; // Check if value has a operator and remove it if it's a number - if (preg_match('/^(!?=|[<>]=?|<>|!)([^=!<>].*)*$/', $value, $matches) > 0) { + if (preg_match('/^(!?=|[<>]=?|<>|!|\|)([^=!<>].*)*$/', $value, $matches) > 0) { $operator = $matches[1]; $value = ($matches[2] ?? ''); } @@ -187,15 +186,23 @@ class Conductor break; case '>': case '<': + case '|': + $operator = '='; + $separatorPos = strpos($value, '|'); + if ($separatorPos !== false) { + $valueList = explode('|', $value); + foreach($valueList as $valueItem) { + $this->appendFilter($field, $operator, $valueItem, 'OR'); + } + continue 2; + } + break; case '>=': case '<=': case '!=': break; case '<>': - $separatorPos = strpos($value, '|'); - if ($separatorPos === false) { - $operator = '!='; - } + $operator = '!='; break; default: $operator = 'LIKE';