Spaces:
No application file
No application file
namespace Mautic\FormBundle\Event; | |
use Mautic\CoreBundle\Event\CommonEvent; | |
use Mautic\FormBundle\Entity\Action; | |
use Mautic\FormBundle\Entity\Submission; | |
use Symfony\Component\HttpFoundation\Request; | |
use Symfony\Component\HttpFoundation\Response; | |
use Symfony\Component\HttpFoundation\ServerBag; | |
class SubmissionEvent extends CommonEvent | |
{ | |
/** | |
* Cleaned post results. | |
*/ | |
private array $results = []; | |
/** | |
* Form fields. | |
*/ | |
private array $fields = []; | |
/** | |
* Results converted to tokens. | |
*/ | |
private array $tokens = []; | |
/** | |
* Callback for post form submit. | |
* | |
* @var array<string, mixed[]> | |
*/ | |
private array $callbacks = []; | |
/** | |
* @var mixed[] | |
*/ | |
private array $callbackResponses = []; | |
/** | |
* @var mixed[] | |
*/ | |
private array $contactFieldMatches = []; | |
/** | |
* Array to hold information set by other actions that may be useful to subsequent actions. | |
* | |
* @var mixed[] | |
*/ | |
private array $feedback = []; | |
private ?Action $action = null; | |
private ?string $context = null; | |
/** | |
* @var array|Response|null | |
*/ | |
private $postSubmitResponse; | |
/** | |
* @var array<mixed> | |
*/ | |
private ?array $postSubmitPayload = null; | |
/** | |
* @param mixed[] $post raw POST results | |
* @param mixed[]|array|ServerBag $server | |
*/ | |
public function __construct( | |
Submission $submission, | |
private $post, | |
private $server, | |
private Request $request | |
) { | |
$this->entity = $submission; | |
} | |
public function getSubmission(): Submission | |
{ | |
return $this->entity; | |
} | |
/** | |
* @return array | |
*/ | |
public function getPost() | |
{ | |
return $this->post; | |
} | |
/** | |
* @return array | |
*/ | |
public function getServer() | |
{ | |
return $this->server; | |
} | |
/** | |
* @return Request | |
*/ | |
public function getRequest() | |
{ | |
return $this->request; | |
} | |
/** | |
* @return \Mautic\FormBundle\Entity\Form | |
*/ | |
public function getForm() | |
{ | |
return $this->entity->getForm(); | |
} | |
/** | |
* @return array | |
*/ | |
public function getResults() | |
{ | |
return $this->results; | |
} | |
/** | |
* @param array $results | |
* | |
* @return SubmissionEvent | |
*/ | |
public function setResults($results) | |
{ | |
$this->results = $results; | |
return $this; | |
} | |
/** | |
* @return array | |
*/ | |
public function getFields() | |
{ | |
return $this->fields; | |
} | |
/** | |
* @param array $fields | |
* | |
* @return SubmissionEvent | |
*/ | |
public function setFields($fields) | |
{ | |
$this->fields = $fields; | |
return $this; | |
} | |
/** | |
* @return array | |
*/ | |
public function getTokens() | |
{ | |
return $this->tokens; | |
} | |
/** | |
* @param array $tokens | |
* | |
* @return SubmissionEvent | |
*/ | |
public function setTokens($tokens) | |
{ | |
$this->tokens = $tokens; | |
return $this; | |
} | |
/** | |
* @return array | |
*/ | |
public function getContactFieldMatches() | |
{ | |
return $this->contactFieldMatches; | |
} | |
/** | |
* @param array $contactFieldMatches | |
* | |
* @return SubmissionEvent | |
*/ | |
public function setContactFieldMatches($contactFieldMatches) | |
{ | |
$this->contactFieldMatches = $contactFieldMatches; | |
return $this; | |
} | |
public function setActionFeedback($key, $feedback): void | |
{ | |
$this->feedback[$key] = $feedback; | |
} | |
/** | |
* Get feedback injected by another action. | |
* | |
* @return array|bool|mixed | |
*/ | |
public function getActionFeedback($key = null) | |
{ | |
if (null === $key) { | |
return $this->feedback; | |
} elseif (isset($this->feedback[$key])) { | |
return $this->feedback[$key]; | |
} | |
return false; | |
} | |
public function checkContext(string $context): bool | |
{ | |
return $this->context === $context; | |
} | |
public function setContext(string $context): void | |
{ | |
$this->context = $context; | |
} | |
public function setAction(?Action $action = null): void | |
{ | |
$this->action = $action; | |
if (!is_null($action)) { | |
$this->setContext($action->getType()); | |
} | |
} | |
public function getAction(): ?Action | |
{ | |
return $this->action; | |
} | |
public function getActionConfig(): array | |
{ | |
return $this->action ? $this->action->getProperties() : []; | |
} | |
/** | |
* Set an post submit callback - include $callback['eventName' => '', 'anythingElse' ...]. | |
* | |
* @param string $key | |
*/ | |
public function setPostSubmitCallback($key, array $callback): void | |
{ | |
if (!array_key_exists('eventName', $callback)) { | |
throw new \InvalidArgumentException('eventName required'); | |
} | |
$this->callbacks[$key] = $callback; | |
} | |
/** | |
* @return mixed | |
*/ | |
public function getPostSubmitCallback($key = null) | |
{ | |
return (null === $key) ? $this->callbacks : $this->callbacks[$key]; | |
} | |
public function hasPostSubmitCallbacks(): bool | |
{ | |
return count($this->callbacks) || count($this->callbackResponses); | |
} | |
/** | |
* @return mixed | |
*/ | |
public function getPostSubmitCallbackResponse($key = null) | |
{ | |
return (null === $key) ? $this->callbackResponses : $this->callbackResponses[$key]; | |
} | |
/** | |
* @param mixed $callbackResponse | |
* | |
* @return SubmissionEvent | |
*/ | |
public function setPostSubmitCallbackResponse($key, $callbackResponse) | |
{ | |
$this->callbackResponses[$key] = $callbackResponse; | |
return $this; | |
} | |
public function hasPostSubmitResponse(): bool | |
{ | |
return null !== $this->postSubmitResponse; | |
} | |
public function getPostSubmitResponse() | |
{ | |
return $this->postSubmitResponse; | |
} | |
public function setPostSubmitResponse($response): void | |
{ | |
$this->postSubmitResponse = $response; | |
} | |
/** | |
* @return mixed[] | |
*/ | |
public function getPostSubmitPayload(): array | |
{ | |
return $this->postSubmitPayload; | |
} | |
/** | |
* @param mixed[] $postSubmitPayload | |
*/ | |
public function setPostSubmitPayload(array $postSubmitPayload): void | |
{ | |
$this->postSubmitPayload = $postSubmitPayload; | |
} | |
} | |