From c95078ff921237540716a8f87ec90fe8b840463e Mon Sep 17 00:00:00 2001 From: edalzell Date: Thu, 4 Jun 2026 15:46:04 -0700 Subject: [PATCH 1/6] refactor to simplify --- src/Events.php | 28 ++++++++++++++-------------- src/Tags/Events.php | 29 +++++++++++------------------ 2 files changed, 25 insertions(+), 32 deletions(-) diff --git a/src/Events.php b/src/Events.php index f16fe71..bcfa81a 100644 --- a/src/Events.php +++ b/src/Events.php @@ -51,14 +51,12 @@ public static function defaultTimezone(): string return static::setting('timezone'); } - public static function fromCollection(string $handle): self + public function __construct(private $collectionParams) { - return tap(new static)->collection($handle); - } - - public static function fromEntry(string $id): self - { - return tap(new static)->event($id); + match (true) { + $collectionParams->has('event') => $this->event($collectionParams->get('event')), + default => $this->collection($collectionParams->get('collection', 'events')), + }; } public static function setting(string $key, $default = null): mixed @@ -66,11 +64,9 @@ public static function setting(string $key, $default = null): mixed return Addon::get('transformstudios/events')->settings()->get($key, $default); } - private function __construct() {} - - public function collapseMultiDays(): self + public function collapseMultiDays(bool $collapseMultiDays): self { - $this->collapseMultiDays = true; + $this->collapseMultiDays = $collapseMultiDays; return $this; } @@ -107,15 +103,19 @@ public function filter(string $fieldCondition, $value): self public function offset(int $offset): self { - $this->offset = $offset; + if ($offset > 0) { + $this->offset = $offset; + } return $this; } public function pagination(int $page = 1, int $perPage = 10): self { - $this->page = $page; - $this->perPage = $perPage; + if ($perPage > 0) { + $this->page = $page; + $this->perPage = $perPage; + } return $this; } diff --git a/src/Tags/Events.php b/src/Tags/Events.php index 99e5e20..79d644f 100755 --- a/src/Tags/Events.php +++ b/src/Tags/Events.php @@ -19,6 +19,7 @@ use Statamic\Support\Arr; use Statamic\Support\Str; use Statamic\Tags\Concerns\OutputsItems; +use Statamic\Tags\Parameters; use Statamic\Tags\Tags; use TransformStudios\Events\Events as Generator; @@ -175,34 +176,26 @@ private function explodeTerms(array|Builder|string $terms): array private function generator(): Generator { - $generator = $this->params->has('event') ? - Generator::fromEntry($this->params->get('event')) : - Generator::fromCollection($this->params->get('collection', 'events')); + /** + * @var Parameters + */ + $params = $this->params->except(['paginate', 'limit', 'offset', 'chunk', 'sort']); + + $generator = new Generator($params); return $generator + ->collapseMultiDays($this->params->bool('collapse_multi_days')) + ->offset(offset: $this->params->int('offset')) + ->pagination(page: Paginator::resolveCurrentPage(), perPage: $this->params->int('paginate')) ->site($this->params->get('site')) ->sort($this->params->get('sort', 'asc')) + ->timezone(timezone: $this->params->get('timezone', Generator::defaultTimezone())) ->when( value: $this->parseTerms(), callback: fn (Generator $generator, array $terms) => $generator->terms(terms: $terms) )->when( value: $this->parseFilters(), callback: fn (Generator $generator, array $filters) => $generator->filters(filters: $filters) - )->when( - value: $this->params->int('offset'), - callback: fn (Generator $generator, int $offset) => $generator->offset(offset: $offset) - )->when( - value: $this->params->int('paginate'), - callback: fn (Generator $generator, int $perPage) => $generator->pagination( - page: Paginator::resolveCurrentPage(), - perPage: $perPage - ) - )->when( - value: $this->params->bool('collapse_multi_days'), - callback: fn (Generator $generator) => $generator->collapseMultiDays() - )->when( - value: $this->params->get('timezone', Generator::defaultTimezone()), - callback: fn (Generator $generator, string $tz) => $generator->timezone(timezone: $tz) ); } From cf96f97dba82dfc8e22b41fd0e37b252d0d4c9a0 Mon Sep 17 00:00:00 2001 From: edalzell Date: Thu, 4 Jun 2026 16:25:01 -0700 Subject: [PATCH 2/6] fix refactor --- src/Events.php | 14 +++++++++----- src/Tags/Events.php | 5 +++-- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/Events.php b/src/Events.php index bcfa81a..d830a3a 100644 --- a/src/Events.php +++ b/src/Events.php @@ -51,12 +51,14 @@ public static function defaultTimezone(): string return static::setting('timezone'); } - public function __construct(private $collectionParams) + public static function fromCollection(string $handle): self { - match (true) { - $collectionParams->has('event') => $this->event($collectionParams->get('event')), - default => $this->collection($collectionParams->get('collection', 'events')), - }; + return tap(new static)->collection($handle); + } + + public static function fromEntry(string $id): self + { + return tap(new static)->event($id); } public static function setting(string $key, $default = null): mixed @@ -64,6 +66,8 @@ public static function setting(string $key, $default = null): mixed return Addon::get('transformstudios/events')->settings()->get($key, $default); } + private function __construct() {} + public function collapseMultiDays(bool $collapseMultiDays): self { $this->collapseMultiDays = $collapseMultiDays; diff --git a/src/Tags/Events.php b/src/Tags/Events.php index 79d644f..cf4fa55 100755 --- a/src/Tags/Events.php +++ b/src/Tags/Events.php @@ -179,9 +179,10 @@ private function generator(): Generator /** * @var Parameters */ - $params = $this->params->except(['paginate', 'limit', 'offset', 'chunk', 'sort']); - $generator = new Generator($params); + $generator = $this->params->has('event') ? + Generator::fromEntry($this->params->get('event')) : + Generator::fromCollection($this->params->get('collection', 'events')); return $generator ->collapseMultiDays($this->params->bool('collapse_multi_days')) From d5768b632a33e191bf8314c72b2712e1d0f20069 Mon Sep 17 00:00:00 2001 From: edalzell Date: Thu, 4 Jun 2026 16:25:48 -0700 Subject: [PATCH 3/6] not used --- src/Tags/Events.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/Tags/Events.php b/src/Tags/Events.php index cf4fa55..3b8fa62 100755 --- a/src/Tags/Events.php +++ b/src/Tags/Events.php @@ -19,7 +19,6 @@ use Statamic\Support\Arr; use Statamic\Support\Str; use Statamic\Tags\Concerns\OutputsItems; -use Statamic\Tags\Parameters; use Statamic\Tags\Tags; use TransformStudios\Events\Events as Generator; @@ -176,10 +175,6 @@ private function explodeTerms(array|Builder|string $terms): array private function generator(): Generator { - /** - * @var Parameters - */ - $generator = $this->params->has('event') ? Generator::fromEntry($this->params->get('event')) : Generator::fromCollection($this->params->get('collection', 'events')); From 167f120094c41dc4e59e9af95b0cee469d4cba63 Mon Sep 17 00:00:00 2001 From: edalzell Date: Tue, 9 Jun 2026 13:56:24 -0700 Subject: [PATCH 4/6] wip --- src/Entries.php | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/Entries.php diff --git a/src/Entries.php b/src/Entries.php new file mode 100644 index 0000000..6c99d71 --- /dev/null +++ b/src/Entries.php @@ -0,0 +1,34 @@ +query(); + // } catch (NoResultsExpected $exception) { + // return new EntryCollection; + // } + + // return $this->results($query); + // } + + protected function query() + { + $query = Entry::query() + ->whereIn('collection', $this->collections->map->handle()->all()); + + $this->querySelect($query); + $this->querySite($query); + $this->queryPublished($query); + $this->queryTaxonomies($query); + $this->queryConditions($query); + $this->queryScopes($query); + + return $query; + } +} From a09539950308568a17d4f84596c6e3776609b8c8 Mon Sep 17 00:00:00 2001 From: edalzell Date: Tue, 9 Jun 2026 13:59:33 -0700 Subject: [PATCH 5/6] Revert "wip" This reverts commit 167f120094c41dc4e59e9af95b0cee469d4cba63. --- src/Entries.php | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 src/Entries.php diff --git a/src/Entries.php b/src/Entries.php deleted file mode 100644 index 6c99d71..0000000 --- a/src/Entries.php +++ /dev/null @@ -1,34 +0,0 @@ -query(); - // } catch (NoResultsExpected $exception) { - // return new EntryCollection; - // } - - // return $this->results($query); - // } - - protected function query() - { - $query = Entry::query() - ->whereIn('collection', $this->collections->map->handle()->all()); - - $this->querySelect($query); - $this->querySite($query); - $this->queryPublished($query); - $this->queryTaxonomies($query); - $this->queryConditions($query); - $this->queryScopes($query); - - return $query; - } -} From 7e85accfe193ab29e7fe05869d5723251f9e628d Mon Sep 17 00:00:00 2001 From: edalzell Date: Tue, 9 Jun 2026 14:04:05 -0700 Subject: [PATCH 6/6] non-breaking --- src/Events.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Events.php b/src/Events.php index d830a3a..deda2fe 100644 --- a/src/Events.php +++ b/src/Events.php @@ -68,7 +68,7 @@ public static function setting(string $key, $default = null): mixed private function __construct() {} - public function collapseMultiDays(bool $collapseMultiDays): self + public function collapseMultiDays(?bool $collapseMultiDays = true): self { $this->collapseMultiDays = $collapseMultiDays;