Skip to content

Commit 24d7a09

Browse files
committed
fix: Respect site and dimensions
Fixes #12
1 parent ed9a369 commit 24d7a09

File tree

4 files changed

+20
-9
lines changed

4 files changed

+20
-9
lines changed

Classes/Controller/Backend/FormDataController.php

+6-4
Original file line numberDiff line numberDiff line change
@@ -79,14 +79,16 @@ public function indexAction(): void
7979
/**
8080
* @param string $formIdentifier
8181
* @param string $hash
82+
* @param string $siteName
83+
* @param string $dimensionsHash
8284
* @param string $exportDefinitionIdentifier
8385
* @throws InvalidConfigurationTypeException
8486
* @throws CannotBuildObjectException
8587
* @throws UnknownObjectException
8688
* @throws ConfigurationException
8789
* @throws InvalidQueryException
8890
*/
89-
public function downloadAction(string $formIdentifier, string $hash, string $exportDefinitionIdentifier): void
91+
public function downloadAction(string $formIdentifier, string $hash, string $siteName, string $dimensionsHash, string $exportDefinitionIdentifier): void
9092
{
9193
/** @var FormData[] $formDataItems */
9294

@@ -97,7 +99,7 @@ public function downloadAction(string $formIdentifier, string $hash, string $exp
9799

98100
$formDataItems = array_map(static function (FormData $formData) use ($exportDefinition) {
99101
return $formData->getProcessedFormData($exportDefinition);
100-
}, $this->formDataRepository->findByFormIdentifierAndHash($formIdentifier, $hash)->toArray());
102+
}, $this->formDataRepository->findByFormProperties($formIdentifier, $hash, $siteName, $dimensionsHash)->toArray());
101103

102104
$exporter->setFileName($fileName)->compileAndSend($formDataItems);
103105
die();
@@ -110,7 +112,7 @@ public function downloadAction(string $formIdentifier, string $hash, string $exp
110112
*/
111113
public function previewAction(FormData $formDataEntry): void
112114
{
113-
$formDataEntries = $this->formDataRepository->findByFormIdentifierAndHash($formDataEntry->getFormIdentifier(), $formDataEntry->getHash());
115+
$formDataEntries = $this->formDataRepository->findByFormProperties($formDataEntry->getFormIdentifier(), $formDataEntry->getHash(), $formDataEntry->getSiteName(), $formDataEntry->getDimensionsHash());
114116
$scheduledExport = $this->scheduledExportRepository->findOneByFormIdentifier($formDataEntry->getFormIdentifier());
115117

116118
if ($formDataEntries->count() === 0) {
@@ -134,7 +136,7 @@ public function previewAction(FormData $formDataEntry): void
134136
*/
135137
public function deleteAction(FormData $formDataEntry): void
136138
{
137-
$this->formDataRepository->removeByFormIdentifierAndHash($formDataEntry->getFormIdentifier(), $formDataEntry->getHash());
139+
$this->formDataRepository->removeByFormIdentifierAndHash($formDataEntry->getFormIdentifier(), $formDataEntry->getHash(), $formDataEntry->getSitename(), $formDataEntry->getDimensionsHash());
138140
$this->redirect('index');
139141
}
140142

Classes/Domain/Repository/FormDataRepository.php

+10-4
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,10 @@ public function findAllUniqueForms(): iterable
6565
{
6666
$queryBuilder = $this->createQueryBuilder('form');
6767
return $queryBuilder
68-
->groupBy('form.formIdentifier')
68+
->groupBy('form.siteName')
69+
->addgroupBy('form.formIdentifier')
6970
->addGroupBy('form.hash')
71+
->addGroupBy('form.dimensionsHash')
7072
->addSelect('count(form) AS entryCount')
7173
->addSelect('MAX(form.date) as latestDate')
7274
->orderBy('latestDate', QueryInterface::ORDER_DESCENDING)
@@ -76,17 +78,21 @@ public function findAllUniqueForms(): iterable
7678
/**
7779
* @param string $formIdentifier
7880
* @param string $hash
81+
* @param string $siteName
82+
* @param string $dimensionsHash
7983
* @return QueryResultInterface
8084
* @throws InvalidQueryException
8185
*/
82-
public function findByFormIdentifierAndHash(string $formIdentifier, string $hash): QueryResultInterface
86+
public function findByFormProperties(string $formIdentifier, string $hash, string $siteName, string $dimensionsHash): QueryResultInterface
8387
{
8488
$query = $this->createQuery();
8589

8690
return $query->matching(
8791
$query->logicalAnd(
8892
$query->equals('formIdentifier', $formIdentifier),
8993
$query->equals('hash', $hash),
94+
$query->equals('siteName', $siteName),
95+
$query->equals('dimensionsHash', $dimensionsHash),
9096
$query->in('siteName', $this->accessibleSites)
9197
)
9298
)->execute();
@@ -101,9 +107,9 @@ public function findLatestVersionOfForm(string $formIdentifier): ?FormData
101107
->execute()->getFirst();
102108
}
103109

104-
public function removeByFormIdentifierAndHash(string $formIdentifier, string $hash): void
110+
public function removeByFormIdentifierAndHash(string $formIdentifier, string $hash, string $siteName, string $dimensionsHash): void
105111
{
106-
foreach ($this->findByFormIdentifierAndHash($formIdentifier, $hash) as $formData) {
112+
foreach ($this->findByFormProperties($formIdentifier, $hash, $siteName, $dimensionsHash) as $formData) {
107113
$this->remove($formData);
108114
}
109115
}

Classes/Domain/ScheduledExport/ScheduledExportSender.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ protected function prepareExportDefinitionNotSuitableMail(Message $mail, FormDat
201201
*/
202202
protected function prepareExportMail(FormData $formDataRepresentative, ExportDefinitionInterface $exportDefinition, string $exportFilePath, string $fileName, Message $mail): void
203203
{
204-
$formDataCollection = $this->formDataRepository->findByFormIdentifierAndHash($formDataRepresentative->getFormIdentifier(), $formDataRepresentative->getHash());
204+
$formDataCollection = $this->formDataRepository->findByFormProperties($formDataRepresentative->getFormIdentifier(), $formDataRepresentative->getHash(), $formDataRepresentative->getSiteName(), $formDataRepresentative->getDimensionsHash());
205205

206206
$formDataItems = array_map(static function (FormData $formData) use ($exportDefinition) {
207207
return $formData->getProcessedFormData($exportDefinition);

Resources/Private/Fusion/Controller/Backend/FormData/Index.fusion

+3
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ prototype(PunktDe.Form.Persistence:Backend.FormData.Index) < prototype(Neos.Fusi
5656
<Neos.Fusion.Form:Select field.name="exportDefinitionIdentifier">{props.options}</Neos.Fusion.Form:Select>
5757
<Neos.Fusion.Form:Hidden field.name="formIdentifier" attributes.value={formData.formIdentifier}/>
5858
<Neos.Fusion.Form:Hidden field.name="hash" attributes.value={formData.hash}/>
59+
<Neos.Fusion.Form:Hidden field.name="siteName" attributes.value={formData.siteName}/>
60+
<Neos.Fusion.Form:Hidden field.name="dimensionsHash" attributes.value={formData.dimensionsHash}/>
61+
<Neos.Fusion.Form:Hidden field.name="hash" attributes.value={formData.hash}/>
5962
<Neos.Fusion.Form:Button attributes.class="neos-button neos-button-primary">Download</Neos.Fusion.Form:Button>
6063
</Neos.Fusion.Form:Form>
6164
</td>

0 commit comments

Comments
 (0)