Skip to content

Commit 16f8a1f

Browse files
authored
[Data Object Editor] Consider doDelete when getting brick data (#912)
* consider doDelete when getting brick data * Apply php-cs-fixer changes
1 parent bcb791e commit 16f8a1f

4 files changed

Lines changed: 38 additions & 23 deletions

File tree

src/DataObject/Data/Adapter/ObjectBricksAdapter.php

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -100,22 +100,22 @@ public function normalize(
100100
}
101101

102102
$resultItems = [];
103-
$items = $value->getObjectVars();
104-
foreach ($items as $item) {
103+
$allowedTypes = $value->getAllowedBrickTypes();
104+
foreach ($allowedTypes as $type) {
105+
$resultItems[$type] = null;
106+
$item = $value->get($type);
107+
105108
if (!$item instanceof AbstractData) {
106109
continue;
107110
}
108111

109-
$type = $item->getType();
110-
$resultItems[$type] = [];
111112
$definition = $this->definitionResolver->getByKey($type);
112113
if ($definition === null) {
113114
continue;
114115
}
115116

116117
foreach ($definition->getFieldDefinitions() as $brickFieldDefinition) {
117-
$getter = 'get' . ucfirst($brickFieldDefinition->getName());
118-
$value = $item->$getter();
118+
$value = $item->get($brickFieldDefinition->getName());
119119
$resultItems[$type][$brickFieldDefinition->getName()] = $this->dataService->getNormalizedValue(
120120
$value,
121121
$brickFieldDefinition,
@@ -139,8 +139,7 @@ public function getFieldInheritance(
139139

140140
$inheritanceData = [];
141141
foreach ($value->getAllowedBrickTypes() as $type) {
142-
$brickGetter = 'get' . $type;
143-
$brick = $value->$brickGetter();
142+
$brick = $value->get($type);
144143
if (!$brick) {
145144
continue;
146145
}
@@ -175,24 +174,30 @@ public function getPreviewFieldData(
175174
return $data;
176175
}
177176

178-
$items = $value->getObjectVars();
179-
foreach ($items as $item) {
177+
$allowedTypes = $value->getAllowedBrickTypes();
178+
foreach ($allowedTypes as $type) {
179+
$item = $value->get($type);
180180
if (!$item instanceof AbstractData) {
181+
$data[$type] = null;
182+
181183
continue;
182184
}
183185

184-
$type = $item->getType();
185-
$brickName = ucfirst($type);
186186
$definition = $this->definitionResolver->getByKey($type);
187187
if ($definition === null) {
188+
$data[$type] = null;
189+
188190
continue;
189191
}
190192

191193
foreach ($definition->getFieldDefinitions() as $brickFieldDefinition) {
192-
$getter = 'get' . ucfirst($brickFieldDefinition->getName());
193-
$fieldValues = $this->dataService->getPreviewFieldData($item->$getter(), $brickFieldDefinition, []);
194+
$fieldValues = $this->dataService->getPreviewFieldData(
195+
$item->get($brickFieldDefinition->getName()),
196+
$brickFieldDefinition,
197+
[]
198+
);
194199
foreach ($fieldValues as $fieldKey => $fieldValue) {
195-
$data[$brickName . ' - ' . $fieldKey] = $fieldValue;
200+
$data[ucfirst($type) . ' - ' . $fieldKey] = $fieldValue;
196201
}
197202

198203
}

src/DataObject/Service/DataService.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,8 @@ public function getNormalizedValue(
109109
/**
110110
* {@inheritdoc}
111111
*/
112-
public function getPreviewObjectData(DataObjectModel $dataObject): array
112+
public function getPreviewObjectData(Concrete $dataObject): array
113113
{
114-
if (!$dataObject instanceof Concrete) {
115-
return [];
116-
}
117-
118114
$class = $this->getValidClass($this->classDefinitionResolver, $dataObject->getClassId());
119115
$data = [];
120116
foreach ($class->getFieldDefinitions() as $key => $fieldDefinition) {

src/DataObject/Service/DataServiceInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public function getNormalizedValue(
5050
/**
5151
* @throws DatabaseException|NotFoundException
5252
*/
53-
public function getPreviewObjectData(DataObjectModel $dataObject): array;
53+
public function getPreviewObjectData(Concrete $dataObject): array;
5454

5555
/**
5656
* @throws DatabaseException|NotFoundException

src/Search/Hydrator/Preview/DataObjectHydrator.php

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
use Pimcore\Bundle\StudioBackendBundle\DataObject\Service\DataServiceInterface;
2020
use Pimcore\Bundle\StudioBackendBundle\Search\Schema\DataObjectSearchPreview;
21+
use Pimcore\Bundle\StudioBackendBundle\Security\Service\SecurityServiceInterface;
2122
use Pimcore\Bundle\StudioBackendBundle\User\Service\UserServiceInterface;
2223
use Pimcore\Bundle\StudioBackendBundle\Util\Trait\ElementProviderTrait;
2324
use Pimcore\Model\DataObject;
@@ -33,7 +34,8 @@
3334

3435
public function __construct(
3536
private DataServiceInterface $dataService,
36-
private UserServiceInterface $userService
37+
private SecurityServiceInterface $securityService,
38+
private UserServiceInterface $userService,
3739
) {
3840
}
3941

@@ -54,10 +56,22 @@ public function hydrate(DataObject $dataObject): DataObjectSearchPreview
5456
$dataObject->getCreationDate(),
5557
$dataObject->getModificationDate(),
5658
$this->getClassData($dataObject),
57-
$this->dataService->getPreviewObjectData($dataObject),
59+
$this->hydratePreviewDetailData($dataObject),
5860
);
5961
}
6062

63+
private function hydratePreviewDetailData(DataObject $dataObject): array
64+
{
65+
$version = $this->getLatestVersionForUser($dataObject, $this->securityService->getCurrentUser());
66+
$versionData = $this->getVersionData($dataObject, $version);
67+
68+
if (!$versionData instanceof Concrete) {
69+
return [];
70+
}
71+
72+
return $this->dataService->getPreviewObjectData($versionData);
73+
}
74+
6175
private function getClassData(DataObject $dataObject): ?string
6276
{
6377
if (!$dataObject instanceof Concrete) {

0 commit comments

Comments
 (0)