From 8ca37c501738eb81038e7631cdddd1234c5e4f46 Mon Sep 17 00:00:00 2001 From: Jared Hancock <jared@osticket.com> Date: Thu, 21 Apr 2016 18:25:17 -0500 Subject: [PATCH] queue: Fix quick filter inheritance --- include/class.orm.php | 2 +- include/class.queue.php | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/include/class.orm.php b/include/class.orm.php index 761f91dee..8828103ad 100644 --- a/include/class.orm.php +++ b/include/class.orm.php @@ -2958,7 +2958,7 @@ class MySqlCompiler extends SqlCompiler { } } else { - if (!is_int($alias)) + if (!is_int($alias) && $unaliased != $alias) $f .= ' AS '.$this->quote($alias); $fields[$f] = true; } diff --git a/include/class.queue.php b/include/class.queue.php index 7213d67ce..461f2d023 100644 --- a/include/class.queue.php +++ b/include/class.queue.php @@ -423,7 +423,7 @@ class CustomQueue extends VerySimpleModel { function isolateCriteria($criteria, $root=null) { $searchable = static::getSearchableFields($root ?: $this->getRoot()); $items = array(); - if (!$criteria) + if (!is_array($criteria)) return null; foreach ($criteria as $k=>$v) { if (substr($k, -7) === '+method') { @@ -446,8 +446,10 @@ class CustomQueue extends VerySimpleModel { $items[] = array($name, $method, $value); } } - if (isset($criteria[':keywords'])) { - $items[] = array(':keywords', null, $criteria[':keywords']); + if (isset($criteria[':keywords']) + && ($kw = $criteria[':keywords']) + ) { + $items[] = array(':keywords', null, $kw); } return $items; } @@ -577,9 +579,9 @@ class CustomQueue extends VerySimpleModel { if (isset($quick_filter) && ($qf = $this->getQuickFilterField($quick_filter)) ) { - $this->filter = @self::getOrmPath($this->filter, $query); + $filter = @self::getOrmPath($this->getQuickFilter(), $query); $query = $qf->applyQuickFilter($query, $quick_filter, - $this->filter); + $filter); } // Apply column, annotations and conditions additions @@ -589,6 +591,13 @@ class CustomQueue extends VerySimpleModel { return $query; } + function getQuickFilter() { + if ($this->filter == '::' && $this->parent) { + return $this->parent->getQuickFilter(); + } + return $this->filter; + } + function getQuickFilterField($value=null) { if ($this->filter == '::') { if ($this->parent) { -- GitLab