Skip to content

Commit 836eff8

Browse files
committed
centralize "initializePaginatorCollection" for content
1 parent b5ae3a5 commit 836eff8

3 files changed

Lines changed: 31 additions & 39 deletions

File tree

src/Dtos/ContentDto.php

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -157,22 +157,7 @@ public function getPaginatedChildren($perPage = 10, $pageName = 'page', $page =
157157
$currLocale = $this->getLocale();
158158

159159
return $query->paginate($perPage, ['*'], $pageName, $page)
160-
->tap(function ($paginator) {
161-
if ($paginator instanceof \Illuminate\Contracts\Pagination\Paginator) {
162-
163-
$items = $paginator->getCollection();
164-
165-
// for "toDto" method
166-
if ($items instanceof ContentCollection) {
167-
$items = $items->setPaginator($paginator);
168-
}
169-
170-
$paginator->setCollection($items);
171-
172-
}
173-
174-
return $paginator;
175-
})
160+
->tap(fn ($paginator) => ContentHelper::initializePaginatorCollection($paginator))
176161
->toDto($currLocale);
177162
}
178163

src/Helpers/ContentHelper.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@
44

55
use Filament\Resources\Pages\CreateRecord;
66
use Filament\Resources\Pages\EditRecord;
7+
use Illuminate\Contracts\Pagination\Paginator;
78
use Illuminate\Database\Eloquent\Model;
9+
use Illuminate\Pagination\AbstractPaginator;
810
use SolutionForest\InspireCms\Base\Filament\Contracts\ContentForm;
11+
use SolutionForest\InspireCms\Collection\ContentCollection;
912
use SolutionForest\InspireCms\Facades\PermissionManifest;
1013
use SolutionForest\InspireCms\InspireCmsConfig;
1114
use SolutionForest\InspireCms\Models\Contracts\Content;
@@ -98,6 +101,28 @@ public static function getDtoRequiredRelations(): array
98101
];
99102
}
100103

104+
/**
105+
* @param Paginator|AbstractPaginator $paginator
106+
* @return Paginator
107+
*/
108+
public static function initializePaginatorCollection($paginator)
109+
{
110+
if ($paginator instanceof Paginator) {
111+
112+
$items = $paginator->getCollection();
113+
114+
// for "toDto" method
115+
if ($items instanceof ContentCollection) {
116+
$items = $items->setPaginator($paginator);
117+
}
118+
119+
$paginator->setCollection($items);
120+
121+
}
122+
123+
return $paginator;
124+
}
125+
101126
/**
102127
* @return class-string<Model | Content>
103128
*/

src/Services/ContentService.php

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
use Illuminate\Database\Eloquent\Model;
66
use Illuminate\Support\Arr;
77
use Illuminate\Support\Facades\DB;
8-
use SolutionForest\InspireCms\Collection\ContentCollection;
98
use SolutionForest\InspireCms\Content\SegmentProviderInterface;
109
use SolutionForest\InspireCms\Factories\ContentSegmentFactory;
10+
use SolutionForest\InspireCms\Helpers\ContentHelper;
1111
use SolutionForest\InspireCms\InspireCmsConfig;
1212
use SolutionForest\InspireCms\Models\Contracts\Content;
1313
use SolutionForest\InspireCms\Models\Scopes\ContentVersionDetailScope;
@@ -95,23 +95,23 @@ public function getPaginatedByIds($ids, $page = 1, $perPage = 10, $pageName = 'p
9595
{
9696
return $this->buildFindByIdsQuery($ids, $isWebPage, $isPublished, $withRelations, $sorting, null)
9797
->paginate($perPage, ['*'], $pageName, $page)
98-
->tap(fn ($paginator) => $this->initializePaginatorCollection($paginator));
98+
->tap(fn ($paginator) => ContentHelper::initializePaginatorCollection($paginator));
9999
}
100100

101101
/** {@inheritDoc} */
102102
public function getPaginatedByRealPath($path, $page = 1, $perPage = 10, $pageName = 'page', $isWebPage = null, $isPublished = null, $withRelations = [], $sorting = [])
103103
{
104104
return $this->buildFindByRealPathQuery($path, $isWebPage, $isPublished, $withRelations, $sorting, null)
105105
->paginate($perPage, ['*'], $pageName, $page)
106-
->tap(fn ($paginator) => $this->initializePaginatorCollection($paginator));
106+
->tap(fn ($paginator) => ContentHelper::initializePaginatorCollection($paginator));
107107
}
108108

109109
/** {@inheritDoc} */
110110
public function getPaginatedUnderRealPath($path, $page = 1, $perPage = 10, $pageName = 'page', $isWebPage = null, $isPublished = null, $withRelations = [], $sorting = [])
111111
{
112112
return $this->buildGetUnderRealPathQuery($path, $isWebPage, $isPublished, $withRelations, $sorting, null)
113113
->paginate($perPage, ['*'], $pageName, $page)
114-
->tap(fn ($paginator) => $this->initializePaginatorCollection($paginator));
114+
->tap(fn ($paginator) => ContentHelper::initializePaginatorCollection($paginator));
115115
}
116116

117117
/** {@inheritDoc} */
@@ -128,7 +128,7 @@ public function getPaginatedByDocumentType($documentType, $page = 1, $perPage =
128128
$query = $this->applySortingAndLimit($query, $sorting, null);
129129

130130
return $query->paginate($perPage, ['*'], $pageName, $page)
131-
->tap(fn ($paginator) => $this->initializePaginatorCollection($paginator));
131+
->tap(fn ($paginator) => ContentHelper::initializePaginatorCollection($paginator));
132132
}
133133

134134
/** {@inheritDoc} */
@@ -339,22 +339,4 @@ private function buildGetUnderRealPathQuery($path, $isWebPage = null, $isPublish
339339

340340
return $query;
341341
}
342-
343-
private function initializePaginatorCollection($paginator)
344-
{
345-
if ($paginator instanceof \Illuminate\Contracts\Pagination\Paginator) {
346-
347-
$items = $paginator->getCollection();
348-
349-
// for "toDto" method
350-
if ($items instanceof ContentCollection) {
351-
$items = $items->setPaginator($paginator);
352-
}
353-
354-
$paginator->setCollection($items);
355-
356-
}
357-
358-
return $paginator;
359-
}
360342
}

0 commit comments

Comments
 (0)