X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fentity%2Fsrc%2FBundlePlugin%2FBundlePluginInstaller.php;fp=web%2Fmodules%2Fcontrib%2Fentity%2Fsrc%2FBundlePlugin%2FBundlePluginInstaller.php;h=555407fc6c8deae4fb8bacb91281cc364095de50;hp=0000000000000000000000000000000000000000;hb=f3baf763d342a5f82576890e2a8111a5aaf139dc;hpb=059867c3f96750652c80f39e44c442a58c2549ee diff --git a/web/modules/contrib/entity/src/BundlePlugin/BundlePluginInstaller.php b/web/modules/contrib/entity/src/BundlePlugin/BundlePluginInstaller.php new file mode 100644 index 000000000..555407fc6 --- /dev/null +++ b/web/modules/contrib/entity/src/BundlePlugin/BundlePluginInstaller.php @@ -0,0 +1,94 @@ +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); + } + } + } + +}