eca-1.0.x-dev/src/Event/AfterActionExecutionEvent.php
src/Event/AfterActionExecutionEvent.php
<?php namespace Drupal\eca\Event; use Drupal\eca\Entity\Objects\EcaAction; use Drupal\eca\Entity\Objects\EcaObject; use Symfony\Contracts\EventDispatcher\Event; /** * Dispatches after a single action got executed. */ class AfterActionExecutionEvent extends Event { /** * The ECA configuration. * * @var \Drupal\eca\Entity\Objects\EcaAction */ protected EcaAction $ecaAction; /** * The object that the action operates on. * * @var mixed */ protected mixed $object; /** * The triggering system event. * * @var \Symfony\Contracts\EventDispatcher\Event */ protected Event $event; /** * The predecessor. * * @var \Drupal\eca\Entity\Objects\EcaObject */ protected EcaObject $predecessor; /** * Array holding arbitrary variables the represent a pre-execution state. * * Can be used to hold and restore values after execution. * * @var array */ protected array $prestate = []; /** * Whether access was granted or not. * * @var bool */ protected bool $accessGranted; /** * Whether an exception was thrown or not. * * @var bool */ protected bool $exceptionThrown; /** * The AfterActionExecutionEvent constructor. * * @param \Drupal\eca\Entity\Objects\EcaAction $ecaAction * The action object as part of an ECA configuration. * @param mixed &$object * The object that the action operates on. * @param \Symfony\Contracts\EventDispatcher\Event $event * The triggering system event. * @param \Drupal\eca\Entity\Objects\EcaObject $predecessor * The predecessor. * @param array &$prestate * Array holding arbitrary variables of a prestate (if any). * @param bool $access_granted * Whether access was granted or not. * @param bool $exception_thrown * Whether an exception was thrown or not. */ public function __construct(EcaAction $ecaAction, mixed &$object, Event $event, EcaObject $predecessor, array &$prestate, bool $access_granted, bool $exception_thrown) { $this->ecaAction = $ecaAction; $this->object = &$object; $this->event = $event; $this->predecessor = $predecessor; $this->prestate = &$prestate; $this->accessGranted = $access_granted; $this->exceptionThrown = $exception_thrown; } /** * Get the ECA action object. * * @return \Drupal\eca\Entity\Objects\EcaAction * The ECA action object. */ public function getEcaAction(): EcaAction { return $this->ecaAction; } /** * Get the object that the action operates on. * * @return mixed * The object. */ public function &getObject(): mixed { return $this->object; } /** * Get the applying system event. * * @return \Symfony\Contracts\EventDispatcher\Event * The applying system event. */ public function getEvent(): Event { return $this->event; } /** * Get the predecessor. * * @return \Drupal\eca\Entity\Objects\EcaObject * The predecessor. */ public function getPredecessor(): EcaObject { return $this->predecessor; } /** * Get the value of a prestate variable. * * @param string|null $name * The name of the variable. Set to NULL to return the whole array. * * @return mixed * The value. Returns NULL if not present. */ public function &getPrestate(?string $name): mixed { if (!isset($name)) { return $this->prestate; } $value = NULL; if (isset($this->prestate[$name])) { $value = &$this->prestate[$name]; } return $value; } /** * Whether access was granted or not. * * @return bool * Returns TRUE if it was granted, FALSE otherwise. */ public function accessGranted(): bool { return $this->accessGranted; } /** * Whether an exception was thrown or not. * * @return bool * Returns TRUE if there was an exception, FALSE otherwise. */ public function exceptionThrown(): bool { return $this->exceptionThrown; } }