entityTypeManager = $entity_type_manager; $this->entityBundleListener = $entity_bundle_listener; $this->fieldStorageDefinitionListener = $field_storage_definition_listener; $this->fieldDefinitionListener = $field_definition_listener; } /** * {@inheritdoc} */ public function installBundles(EntityTypeInterface $entity_type, array $modules) { $bundle_handler = $this->entityTypeManager->getHandler($entity_type->id(), 'bundle_plugin'); $bundles = array_filter($bundle_handler->getBundleInfo(), function ($bundle_info) use ($modules) { return in_array($bundle_info['provider'], $modules, TRUE); }); foreach (array_keys($bundles) as $bundle) { $this->entityBundleListener->onBundleCreate($bundle, $entity_type->id()); foreach ($bundle_handler->getFieldDefinitions($bundle) as $definition) { $this->fieldStorageDefinitionListener->onFieldStorageDefinitionCreate($definition); $this->fieldDefinitionListener->onFieldDefinitionCreate($definition); } } } /** * {@inheritdoc} */ public function uninstallBundles(EntityTypeInterface $entity_type, array $modules) { $bundle_handler = $this->entityTypeManager->getHandler($entity_type->id(), 'bundle_plugin'); $bundles = array_filter($bundle_handler->getBundleInfo(), function ($bundle_info) use ($modules) { return in_array($bundle_info['provider'], $modules, TRUE); }); foreach (array_keys($bundles) as $bundle) { $this->entityBundleListener->onBundleDelete($bundle, $entity_type->id()); foreach ($bundle_handler->getFieldDefinitions($bundle) as $definition) { $this->fieldDefinitionListener->onFieldDefinitionDelete($definition); $this->fieldStorageDefinitionListener->onFieldStorageDefinitionDelete($definition); } } } }