cloud-8.x-2.0-beta1/modules/cloud_service_providers/aws_cloud/src/Plugin/cloud/server_template/AwsCloudServerTemplatePluginUninstallValidator.php
modules/cloud_service_providers/aws_cloud/src/Plugin/cloud/server_template/AwsCloudServerTemplatePluginUninstallValidator.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | <?php namespace Drupal\aws_cloud\Plugin\cloud\server_template; use Drupal\Core\Entity\ContentEntityTypeInterface; use Drupal\Core\Entity\EntityManagerInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\DependencyInjection\DeprecatedServicePropertyTrait; use Drupal\Core\Extension\ModuleUninstallValidatorInterface; use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\Core\StringTranslation\TranslationInterface; use Drupal\Core\Url; /** * Validates module uninstall readiness based on existing content entities. */ class AwsCloudServerTemplatePluginUninstallValidator implements ModuleUninstallValidatorInterface { use StringTranslationTrait; use DeprecatedServicePropertyTrait; /** * {@inheritdoc} */ protected $deprecatedProperties = [ 'entityManager' => 'entity.manager' ]; /** * The entity type manager service. * * @var \Drupal\Core\Entity\EntityTypeManagerInterface */ protected $entityTypeManager ; /** * The entity field manager. * * @var \Drupal\Core\Entity\EntityTypeBundleInfo */ protected $entityTypeBundleInfo ; /** * The entity field manager. * * @var \Drupal\Core\Entity\EntityFieldManager */ protected $entityFieldManager ; /** * Constructs a new AwsCloudUninstallValidator. * * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager * The entity type manager service. * @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation * The string translation service. */ public function __construct(EntityTypeManagerInterface $entity_type_manager , TranslationInterface $string_translation ) { if ( $entity_type_manager instanceof EntityManagerInterface) { @trigger_error( 'Passing the entity.manager service to AwsCloudUninstallValidator::__construct() is deprecated in "Drupal 8.7.0" and will be removed before "Drupal 9.0.0". Pass the new dependencies instead. See https://www.drupal.org/node/2549139' , E_USER_DEPRECATED); $this ->entityTypeManager = \Drupal::entityTypeManager(); } else { $this ->entityTypeManager = $entity_type_manager ; } $this ->stringTranslation = $string_translation ; } /** * {@inheritdoc} */ public function validate( $module ) { field_purge_batch(10000); // First, check if there are entities related to aws_cloud module. $entity_types = $this ->entityTypeManager->getDefinitions(); foreach ( $entity_types as $entity_type ) { if ( $module == $entity_type ->getProvider() && $entity_type instanceof ContentEntityTypeInterface && $this ->entityTypeManager->getStorage( $entity_type ->id())->hasData()) { // If there are still entities related ows_cloud module, // return an empty value [] ('no reason') by skipping the // cloud_server_template_type.aws_cloud check as shown below. return []; } } // Second, if there are no entities related to aws_cloud module, ask a user // to delete all cloud_server_template_type.aws_cloud entities. $bundle = $this ->entityTypeManager->getStorage( 'cloud_server_template_type' )->load( 'aws_cloud' ); $reasons = []; if ( $module == 'aws_cloud' && ! empty ( $bundle )) { $entity_type = $this ->entityTypeManager->getDefinition( 'cloud_server_template_type' ); $reasons [] = $this ->t( 'There is content for the entity type: @entity_type. <a href=":url">Remove @entity_type_plural</a>.' , [ '@entity_type' => $entity_type ->getLabel(), '@entity_type_plural' => $entity_type ->getPluralLabel(), ':url' => Url::fromRoute( 'system.prepare_modules_entity_uninstall' , [ 'entity_type_id' => $entity_type ->id()])->toString(), ]); } return $reasons ; } } |