Spaces:
No application file
No application file
File size: 2,703 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
<?php
namespace Mautic\FormBundle\Event\Service;
use Mautic\FormBundle\Entity\Field;
use Mautic\FormBundle\Event\SubmissionEvent;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Routing\RouterInterface;
class FieldValueTransformer
{
private array $contactFieldsToUpdate = [];
private array $tokensToUpdate = [];
private bool $isTransformed = false;
public function __construct(
private RouterInterface $router
) {
}
public function transformValuesAfterSubmit(SubmissionEvent $submissionEvent): void
{
if (true === $this->isTransformed) {
return;
}
$fields = $submissionEvent->getForm()->getFields();
$contactFieldMatches = $submissionEvent->getContactFieldMatches();
$tokens = $submissionEvent->getTokens();
/** @var Field $field */
foreach ($fields as $field) {
switch ($field->getType()) {
case 'file':
$newValue = $this->router->generate(
'mautic_form_file_download',
[
'submissionId' => $submissionEvent->getSubmission()->getId(),
'field' => $field->getAlias(),
],
UrlGeneratorInterface::ABSOLUTE_URL
);
$tokenAlias = "{formfield={$field->getAlias()}}";
if (!empty($tokens[$tokenAlias])) {
$this->tokensToUpdate[$tokenAlias] = $tokens[$tokenAlias] = $newValue;
}
$contactFieldAlias = $field->getMappedField();
if ('contact' === $field->getMappedObject() && !empty($contactFieldMatches[$contactFieldAlias])) {
$this->contactFieldsToUpdate[$contactFieldAlias] = $contactFieldMatches[$contactFieldAlias] = $newValue;
}
break;
}
}
$submissionEvent->setTokens($tokens);
$submissionEvent->setContactFieldMatches($contactFieldMatches);
$this->isTransformed = true;
}
/**
* @return array
*/
public function getContactFieldsToUpdate()
{
return $this->contactFieldsToUpdate;
}
/**
* @return array
*/
public function getTokensToUpdate()
{
return $this->tokensToUpdate;
}
/**
* @deprecated will be removed in Mautic 4. This should have been a private method. Not actually needed.
*/
public function isIsTransformed(): bool
{
return $this->isTransformed;
}
}
|