diff --git a/core/lib/Drupal/Core/Entity/EntityEvent.php b/core/lib/Drupal/Core/Entity/EntityEvent.php index 539f6d6..f504666 100644 --- a/core/lib/Drupal/Core/Entity/EntityEvent.php +++ b/core/lib/Drupal/Core/Entity/EntityEvent.php @@ -5,11 +5,16 @@ use Symfony\Component\EventDispatcher\Event; /** - * @todo. + * Represents various entity events. + * + * @see \Drupal\Core\Entity\EntityEvents + * @see \Drupal\Core\Entity\EntityStorageBase::invokeHook() */ class EntityEvent extends Event { /** + * The entity object. + * * @var \Drupal\Core\Entity\EntityInterface */ protected $entity; @@ -18,13 +23,17 @@ class EntityEvent extends Event { * EntityEvent constructor. * * @param \Drupal\Core\Entity\EntityInterface $entity + * The entity object. */ public function __construct(EntityInterface $entity) { $this->entity = $entity; } /** + * Returns the entity wrapped by this event. + * * @return \Drupal\Core\Entity\EntityInterface + * The entity object. */ public function getEntity() { return $this->entity; diff --git a/core/lib/Drupal/Core/Entity/EntityEvents.php b/core/lib/Drupal/Core/Entity/EntityEvents.php index aae0066..3c62b17 100644 --- a/core/lib/Drupal/Core/Entity/EntityEvents.php +++ b/core/lib/Drupal/Core/Entity/EntityEvents.php @@ -3,12 +3,33 @@ namespace Drupal\Core\Entity; /** - * @todo. + * Defines events for entity CRUD. + * + * @see \Drupal\Core\Entity\EntityEvent + * @see \Drupal\Core\Entity\EntityStorageBase::invokeHook() */ final class EntityEvents { /** - * @todo. + * Maps entity hook names to event names. + * + * @var string[] + */ + const HOOK_TO_EVENT_MAP = [ + 'create' => self::CREATE, + 'presave' => self::PRESAVE, + 'insert' => self::INSERT, + 'update' => self::UPDATE, + 'predelete' => self::PREDELETE, + 'delete' => self::DELETE, + ]; + + /** + * Name of the event fired when creating an entity. + * + * This hook runs after a new entity object has just been instantiated. + * + * @see hook_entity_create() * * @Event * @@ -17,48 +38,68 @@ const CREATE = 'entity.create'; /** - * @todo. + * Name of the event fired before an entity is created or updated. + * + * You can get the original entity object from $entity->original when it is an + * update of the entity. + * + * @see hook_entity_presave() * * @Event * * @var string */ - const INSERT = 'entity.insert'; + const PRESAVE = 'entity.presave'; /** - * @todo. + * Name of the event fired after creating an entity. + * + * This event fires once the entity has been stored. Note that changes to the + * entity made by subscribers to the event will not be saved. + * + * @see hook_entity_insert() * * @Event * * @var string */ - const UPDATE = 'entity.update'; + const INSERT = 'entity.insert'; /** - * @todo. + * Name of the event fired after updating an existing entity. + * + * This event fires once the entity has been stored. Note that changes to the + * entity made by subscribers to the event will not be saved. Get the original + * entity object from $entity->original. + * + * @see hook_entity_update() * * @Event * * @var string */ - const PRESAVE = 'entity.presave'; + const UPDATE = 'entity.update'; /** - * @todo. + * Name of the event fired before deleting an entity. + * + * @see hook_entity_predelete() * * @Event * * @var string */ - const DELETE = 'entity.delete'; + const PREDELETE = 'entity.predelete'; /** - * @todo. + * Name of the event fired after deleting an entity. + * + * @see hook_entity_delete() * * @Event * * @var string */ - const PREDELETE = 'entity.predelete'; + const DELETE = 'entity.delete'; } diff --git a/core/lib/Drupal/Core/Entity/EntityStorageBase.php b/core/lib/Drupal/Core/Entity/EntityStorageBase.php index 06f3e2c..2173485 100644 --- a/core/lib/Drupal/Core/Entity/EntityStorageBase.php +++ b/core/lib/Drupal/Core/Entity/EntityStorageBase.php @@ -168,14 +168,7 @@ protected function invokeHook($hook, EntityInterface $entity) { // Invoke the respective entity-level hook. $this->moduleHandler()->invokeAll('entity_' . $hook, array($entity)); - $hook_to_event_map = [ - 'create' => EntityEvents::CREATE, - 'insert' => EntityEvents::INSERT, - 'update' => EntityEvents::UPDATE, - 'presave' => EntityEvents::PRESAVE, - 'delete' => EntityEvents::DELETE, - 'predelete' => EntityEvents::PREDELETE, - ]; + $hook_to_event_map = EntityEvents::HOOK_TO_EVENT_MAP; if (isset($hook_to_event_map[$hook])) { \Drupal::service('event_dispatcher')->dispatch($hook_to_event_map[$hook], new EntityEvent($entity)); }