Skip to content

Commit f1a7540

Browse files
authored
IBX-8019: Replaced LocationService::loadLocationChildren use with SearchService (#2119)
1 parent ef36131 commit f1a7540

File tree

1 file changed

+23
-18
lines changed

1 file changed

+23
-18
lines changed

src/lib/UI/Module/Subitems/ContentViewParameterSupplier.php

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@
1212
use eZ\Publish\API\Repository\ContentTypeService;
1313
use eZ\Publish\API\Repository\LocationService;
1414
use eZ\Publish\API\Repository\PermissionResolver;
15+
use eZ\Publish\API\Repository\SearchService;
1516
use eZ\Publish\API\Repository\Values\Content\Content;
1617
use eZ\Publish\API\Repository\Values\Content\Location;
1718
use eZ\Publish\API\Repository\Values\ContentType\ContentType;
1819
use eZ\Publish\Core\MVC\Symfony\View\ContentView;
20+
use eZ\Publish\Core\Query\QueryFactoryInterface;
1921
use EzSystems\EzPlatformAdminUi\UI\Config\Provider\ContentTypeMappings;
2022
use EzSystems\EzPlatformAdminUi\UI\Module\Subitems\ValueObjectVisitor\SubitemsList as SubitemsListValueObjectVisitor;
2123
use EzSystems\EzPlatformAdminUi\UI\Module\Subitems\Values\SubitemsList;
@@ -63,18 +65,12 @@ class ContentViewParameterSupplier
6365
/** @var \EzSystems\EzPlatformUser\UserSetting\UserSettingService */
6466
private $userSettingService;
6567

66-
/**
67-
* @param \EzSystems\EzPlatformRest\Output\Visitor $outputVisitor
68-
* @param \EzSystems\EzPlatformRest\Output\Generator\Json $outputGenerator
69-
* @param \EzSystems\EzPlatformRest\Server\Output\ValueObjectVisitor\ContentTypeInfoList $contentTypeInfoListValueObjectVisitor
70-
* @param \EzSystems\EzPlatformAdminUi\UI\Module\Subitems\ValueObjectVisitor\SubitemsList $subitemsListValueObjectVisitor
71-
* @param \eZ\Publish\API\Repository\LocationService $locationService
72-
* @param \eZ\Publish\API\Repository\ContentService $contentService
73-
* @param \eZ\Publish\API\Repository\ContentTypeService $contentTypeService
74-
* @param \eZ\Publish\API\Repository\PermissionResolver $permissionResolver
75-
* @param \EzSystems\EzPlatformAdminUi\UI\Config\Provider\ContentTypeMappings $contentTypeMappings
76-
* @param \EzSystems\EzPlatformUser\UserSetting\UserSettingService $userSettingService
77-
*/
68+
/** @var \eZ\Publish\Core\Query\QueryFactoryInterface */
69+
private $queryFactory;
70+
71+
/** @var \eZ\Publish\API\Repository\SearchService */
72+
private $searchService;
73+
7874
public function __construct(
7975
Visitor $outputVisitor,
8076
JsonOutputGenerator $outputGenerator,
@@ -85,7 +81,9 @@ public function __construct(
8581
ContentTypeService $contentTypeService,
8682
PermissionResolver $permissionResolver,
8783
ContentTypeMappings $contentTypeMappings,
88-
UserSettingService $userSettingService
84+
UserSettingService $userSettingService,
85+
QueryFactoryInterface $queryFactory,
86+
SearchService $searchService
8987
) {
9088
$this->outputVisitor = $outputVisitor;
9189
$this->outputGenerator = $outputGenerator;
@@ -97,6 +95,8 @@ public function __construct(
9795
$this->permissionResolver = $permissionResolver;
9896
$this->contentTypeMappings = $contentTypeMappings;
9997
$this->userSettingService = $userSettingService;
98+
$this->queryFactory = $queryFactory;
99+
$this->searchService = $searchService;
100100
}
101101

102102
/**
@@ -121,12 +121,17 @@ public function supply(ContentView $view)
121121
$contentTypes = [];
122122
$subitemsRows = [];
123123
$location = $view->getLocation();
124-
$childrenCount = $this->locationService->getLocationChildCount($location);
125-
126124
$subitemsLimit = (int)$this->userSettingService->getUserSetting('subitems_limit')->value;
127125

128-
$locationChildren = $this->locationService->loadLocationChildren($location, 0, $subitemsLimit);
129-
foreach ($locationChildren->locations as $locationChild) {
126+
/** @var \eZ\Publish\API\Repository\Values\Content\LocationQuery $locationChildrenQuery */
127+
$locationChildrenQuery = $this->queryFactory->create('Children', ['location' => $location]);
128+
$locationChildrenQuery->offset = 0;
129+
$locationChildrenQuery->limit = $subitemsLimit;
130+
131+
$searchResult = $this->searchService->findLocations($locationChildrenQuery);
132+
foreach ($searchResult->searchHits as $searchHit) {
133+
/** @var \eZ\Publish\API\Repository\Values\Content\Location $locationChild */
134+
$locationChild = $searchHit->valueObject;
130135
$contentType = $locationChild->getContent()->getContentType();
131136

132137
if (!isset($contentTypes[$contentType->identifier])) {
@@ -136,7 +141,7 @@ public function supply(ContentView $view)
136141
$subitemsRows[] = $this->createSubitemsRow($locationChild, $contentType);
137142
}
138143

139-
$subitemsList = new SubitemsList($subitemsRows, $childrenCount);
144+
$subitemsList = new SubitemsList($subitemsRows, $searchResult->totalCount);
140145
$contentTypeInfoList = new ContentTypeInfoList($contentTypes, '');
141146

142147
$subitemsListJson = $this->visitSubitemsList($subitemsList);

0 commit comments

Comments
 (0)