From 710b8c35188cad5d364ceacdd337bdbc7f00d8d4 Mon Sep 17 00:00:00 2001 From: Will Rossiter Date: Thu, 14 Mar 2019 22:31:55 +1300 Subject: [PATCH 1/2] Support falsey values in alter (Fixes #152) --- src/Extensions/GoogleSitemapExtension.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Extensions/GoogleSitemapExtension.php b/src/Extensions/GoogleSitemapExtension.php index e81eac3..72c7ba1 100644 --- a/src/Extensions/GoogleSitemapExtension.php +++ b/src/Extensions/GoogleSitemapExtension.php @@ -52,13 +52,16 @@ class GoogleSitemapExtension extends DataExtension return false; } - // Allow override. In this case, since this can return multiple results, we'll use an "and" based policy. - // That is if any value is false then the current value will be false. Only only if all are true will we - // then return true. + // Allow override. invokeWithExtensions will either return a single result (true|false) if defined on the object + // or an array if on extensions. $override = $this->owner->invokeWithExtensions('alterCanIncludeInGoogleSitemap', $can); - if ($override) { - $can = min($override, $can); + if ($override !== null) { + if (is_array($override)) { + $can = min($override, $can); + } else { + $can = $override; + } } return $can; From 2860c390b06969f4742c78978f43f31f26a0747a Mon Sep 17 00:00:00 2001 From: Will Rossiter Date: Tue, 30 Apr 2019 15:45:39 +1200 Subject: [PATCH 2/2] If invokeWithExtensions returns an empty array, don't override --- src/Extensions/GoogleSitemapExtension.php | 4 +++- tests/GoogleSitemapTest.php | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Extensions/GoogleSitemapExtension.php b/src/Extensions/GoogleSitemapExtension.php index 72c7ba1..1e89eba 100644 --- a/src/Extensions/GoogleSitemapExtension.php +++ b/src/Extensions/GoogleSitemapExtension.php @@ -58,7 +58,9 @@ class GoogleSitemapExtension extends DataExtension if ($override !== null) { if (is_array($override)) { - $can = min($override, $can); + if (!empty($override)) { + $can = min($override, $can); + } } else { $can = $override; } diff --git a/tests/GoogleSitemapTest.php b/tests/GoogleSitemapTest.php index 56f022b..9faa31a 100644 --- a/tests/GoogleSitemapTest.php +++ b/tests/GoogleSitemapTest.php @@ -60,6 +60,7 @@ class GoogleSitemapTest extends FunctionalTest $this->assertFalse($unused->canIncludeInGoogleSitemap()); $used = $this->objFromFixture(TestDataObject::class, 'DataObjectTest2'); + $this->assertTrue($used->canIncludeInGoogleSitemap()); }