From 03ce1510de34dbbfac4339d8eab956c1e492e18b Mon Sep 17 00:00:00 2001 From: Hamza Bakri Date: Mon, 19 Aug 2024 11:51:06 +0200 Subject: [PATCH 1/5] fix handle conditions: in some cases however conditions do have values, we do need the OPERATORS 'IS NULL' and 'IS NOT NULL' and since they are only available in the condition without values, some filters are not working anymore --- .../Drupal/DrupalConditionParser.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/extra/src/Querying/ConditionParsers/Drupal/DrupalConditionParser.php b/packages/extra/src/Querying/ConditionParsers/Drupal/DrupalConditionParser.php index 71f825da..74c58512 100644 --- a/packages/extra/src/Querying/ConditionParsers/Drupal/DrupalConditionParser.php +++ b/packages/extra/src/Querying/ConditionParsers/Drupal/DrupalConditionParser.php @@ -51,8 +51,15 @@ public function parseCondition($condition): PathsBasedInterface return $pathSegment; }, explode('.', $pathString)); - return array_key_exists(DrupalFilterParser::VALUE, $condition) - ? $this->drupalConditionFactory->createConditionWithValue($operatorName, $condition[DrupalFilterParser::VALUE], $path) - : $this->drupalConditionFactory->createConditionWithoutValue($operatorName, $path); + if (array_key_exists(DrupalFilterParser::VALUE, $condition )) { + if (!array_key_exists(DrupalFilterParser::OPERATOR, $condition ) + || (array_key_exists(DrupalFilterParser::OPERATOR, $condition ) + && ($condition[DrupalFilterParser::OPERATOR] !== 'IS NULL' + && $condition[DrupalFilterParser::OPERATOR] !== 'IS NOT NULL'))) { + return $this->drupalConditionFactory->createConditionWithValue($operatorName, $condition[DrupalFilterParser::VALUE], $path); + } + } + + return $this->drupalConditionFactory->createConditionWithoutValue($operatorName, $path); } } From 3f822b54621d7d03cfc045520391b4f05a2b4bba Mon Sep 17 00:00:00 2001 From: Hamza Bakri Date: Mon, 19 Aug 2024 11:53:25 +0200 Subject: [PATCH 2/5] revert adjustements in direct merge --- .../Drupal/DrupalConditionParser.php | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/packages/extra/src/Querying/ConditionParsers/Drupal/DrupalConditionParser.php b/packages/extra/src/Querying/ConditionParsers/Drupal/DrupalConditionParser.php index 74c58512..71f825da 100644 --- a/packages/extra/src/Querying/ConditionParsers/Drupal/DrupalConditionParser.php +++ b/packages/extra/src/Querying/ConditionParsers/Drupal/DrupalConditionParser.php @@ -51,15 +51,8 @@ public function parseCondition($condition): PathsBasedInterface return $pathSegment; }, explode('.', $pathString)); - if (array_key_exists(DrupalFilterParser::VALUE, $condition )) { - if (!array_key_exists(DrupalFilterParser::OPERATOR, $condition ) - || (array_key_exists(DrupalFilterParser::OPERATOR, $condition ) - && ($condition[DrupalFilterParser::OPERATOR] !== 'IS NULL' - && $condition[DrupalFilterParser::OPERATOR] !== 'IS NOT NULL'))) { - return $this->drupalConditionFactory->createConditionWithValue($operatorName, $condition[DrupalFilterParser::VALUE], $path); - } - } - - return $this->drupalConditionFactory->createConditionWithoutValue($operatorName, $path); + return array_key_exists(DrupalFilterParser::VALUE, $condition) + ? $this->drupalConditionFactory->createConditionWithValue($operatorName, $condition[DrupalFilterParser::VALUE], $path) + : $this->drupalConditionFactory->createConditionWithoutValue($operatorName, $path); } } From a0d972e7b49aa2b2ed4ba185a366bc73f4193bba Mon Sep 17 00:00:00 2001 From: Hamza Bakri Date: Mon, 19 Aug 2024 11:58:25 +0200 Subject: [PATCH 3/5] fix handle conditions: in some cases however conditions do have values, we do need the OPERATORS 'IS NULL' and 'IS NOT NULL' and since they are only available in the condition without values, some filters are not working anymore --- .../Drupal/DrupalConditionParser.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/extra/src/Querying/ConditionParsers/Drupal/DrupalConditionParser.php b/packages/extra/src/Querying/ConditionParsers/Drupal/DrupalConditionParser.php index 71f825da..74c58512 100644 --- a/packages/extra/src/Querying/ConditionParsers/Drupal/DrupalConditionParser.php +++ b/packages/extra/src/Querying/ConditionParsers/Drupal/DrupalConditionParser.php @@ -51,8 +51,15 @@ public function parseCondition($condition): PathsBasedInterface return $pathSegment; }, explode('.', $pathString)); - return array_key_exists(DrupalFilterParser::VALUE, $condition) - ? $this->drupalConditionFactory->createConditionWithValue($operatorName, $condition[DrupalFilterParser::VALUE], $path) - : $this->drupalConditionFactory->createConditionWithoutValue($operatorName, $path); + if (array_key_exists(DrupalFilterParser::VALUE, $condition )) { + if (!array_key_exists(DrupalFilterParser::OPERATOR, $condition ) + || (array_key_exists(DrupalFilterParser::OPERATOR, $condition ) + && ($condition[DrupalFilterParser::OPERATOR] !== 'IS NULL' + && $condition[DrupalFilterParser::OPERATOR] !== 'IS NOT NULL'))) { + return $this->drupalConditionFactory->createConditionWithValue($operatorName, $condition[DrupalFilterParser::VALUE], $path); + } + } + + return $this->drupalConditionFactory->createConditionWithoutValue($operatorName, $path); } } From 4d80f67cd10b8c0e8d2e18c5585ea91fdd6f1d9f Mon Sep 17 00:00:00 2001 From: Hamza Bakri Date: Mon, 19 Aug 2024 12:20:31 +0200 Subject: [PATCH 4/5] fix handle conditions: in some cases however conditions do have values, we do need the OPERATORS 'IS NULL' and 'IS NOT NULL' and since they are only available in the condition without values, some filters are not working anymore --- .../ConditionParsers/Drupal/DrupalConditionParser.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/extra/src/Querying/ConditionParsers/Drupal/DrupalConditionParser.php b/packages/extra/src/Querying/ConditionParsers/Drupal/DrupalConditionParser.php index 74c58512..6e7cd893 100644 --- a/packages/extra/src/Querying/ConditionParsers/Drupal/DrupalConditionParser.php +++ b/packages/extra/src/Querying/ConditionParsers/Drupal/DrupalConditionParser.php @@ -53,9 +53,8 @@ public function parseCondition($condition): PathsBasedInterface if (array_key_exists(DrupalFilterParser::VALUE, $condition )) { if (!array_key_exists(DrupalFilterParser::OPERATOR, $condition ) - || (array_key_exists(DrupalFilterParser::OPERATOR, $condition ) - && ($condition[DrupalFilterParser::OPERATOR] !== 'IS NULL' - && $condition[DrupalFilterParser::OPERATOR] !== 'IS NOT NULL'))) { + || ($condition[DrupalFilterParser::OPERATOR] !== 'IS NULL' + && $condition[DrupalFilterParser::OPERATOR] !== 'IS NOT NULL')) { return $this->drupalConditionFactory->createConditionWithValue($operatorName, $condition[DrupalFilterParser::VALUE], $path); } } From 823e35f90d7f30a2b397648e0d8a15560d76da0f Mon Sep 17 00:00:00 2001 From: Hamza Bakri Date: Mon, 19 Aug 2024 12:25:42 +0200 Subject: [PATCH 5/5] adjust CHANGELOG --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61e57dde..06163c52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## Unreleased +- handle condition: in some cases however conditions do have values, we do need the OPERATORS 'IS NULL' and 'IS NOT NULL' and since they + are only available in the condition without values, some filters are not working anymore. + ## 0.24.42 - 2024-02-13 * feature: add classes to programmatically create Drupal filters