state = $state; } /** * {@inheritdoc} */ public static function getSubscribedEvents() { return static::getEntityTypeEvents() + static::getFieldStorageDefinitionEvents(); } /** * {@inheritdoc} */ public function onEntityTypeCreate(EntityTypeInterface $entity_type) { $this->storeEvent(EntityTypeEvents::CREATE); } /** * {@inheritdoc} */ public function onEntityTypeUpdate(EntityTypeInterface $entity_type, EntityTypeInterface $original) { $this->storeEvent(EntityTypeEvents::UPDATE); } /** * {@inheritdoc} */ public function onEntityTypeDelete(EntityTypeInterface $entity_type) { $this->storeEvent(EntityTypeEvents::DELETE); } /** * {@inheritdoc} */ public function onFieldStorageDefinitionCreate(FieldStorageDefinitionInterface $storage_definition) { $this->storeEvent(FieldStorageDefinitionEvents::CREATE); } /** * {@inheritdoc} */ public function onFieldStorageDefinitionUpdate(FieldStorageDefinitionInterface $storage_definition, FieldStorageDefinitionInterface $original) { $this->storeEvent(FieldStorageDefinitionEvents::UPDATE); } /** * {@inheritdoc} */ public function onFieldStorageDefinitionDelete(FieldStorageDefinitionInterface $storage_definition) { $this->storeEvent(FieldStorageDefinitionEvents::DELETE); } /** * Enables event tracking. */ public function enableEventTracking() { $this->trackEvents = TRUE; } /** * Checks whether an event has been dispatched. * * @param string $event_name * The event name. * * @return bool * TRUE if the event has been dispatched, FALSE otherwise. */ public function hasEventFired($event_name) { return (bool) $this->state->get($event_name); } /** * Stores the specified event. * * @param string $event_name * The event name. */ protected function storeEvent($event_name) { if ($this->trackEvents) { $this->state->set($event_name, TRUE); } } }