From e9414a13b03d89d38eed34723f96afd4471c484e Mon Sep 17 00:00:00 2001 From: serfreeman1337 Date: Mon, 27 Jan 2020 23:34:32 +0300 Subject: [PATCH] Fix #8366 - V8 API Filtering W/ OR Operator Chained Conditions --- Api/V8/JsonApi/Repository/Filter.php | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/Api/V8/JsonApi/Repository/Filter.php b/Api/V8/JsonApi/Repository/Filter.php index 931dac10f14..e7c8cdec522 100644 --- a/Api/V8/JsonApi/Repository/Filter.php +++ b/Api/V8/JsonApi/Repository/Filter.php @@ -44,7 +44,14 @@ public function parseWhere(\SugarBean $bean, array $params) unset($params['operator']); } - $params = $this->addDeletedParameter($params); + $deleted = false; + if (isset($params['deleted'])) { + if (isset($params['deleted']['eq'])) { + $deleted = ($params['deleted']['eq'] == 1); + } + + unset($params['deleted']); + } $where = []; foreach ($params as $field => $expr) { @@ -75,12 +82,25 @@ public function parseWhere(\SugarBean $bean, array $params) } } - return implode(sprintf(' %s ', $operator), $where); + if (empty($where)) { + return sprintf( + "%s.deleted = '%d'", + $bean->getTableName(), + $deleted + ); + } + + return sprintf( + "(%s) AND %s.deleted = '%d'", + implode(sprintf(' %s ', $operator), $where), + $bean->getTableName(), + $deleted + ); } /** * Only return deleted records if they were explicitly requested - * + * @deprecated * @param array $params * @return array */