ModuleUninstallValidatorInterface.php 1.42 KB
Newer Older
1 2 3 4
<?php

/**
 * @file
5
 * Contains \Drupal\Core\Extension\ModuleUninstallValidatorInterface.
6 7 8 9 10 11
 */

namespace Drupal\Core\Extension;

/**
 * Common interface for module uninstall validators.
12 13 14 15
 *
 * A module uninstall validator must implement this interface and be defined in
 * a Drupal @link container service @endlink that is tagged
 * module_install.uninstall_validator.
16 17 18 19 20 21
 */
interface ModuleUninstallValidatorInterface {

  /**
   * Determines the reasons a module can not be uninstalled.
   *
22 23 24 25 26 27 28 29 30 31 32 33 34 35
   * Example implementation:
   * @code
   * public function validate($module) {
   *   $entity_types = $this->entityManager->getDefinitions();
   *   $reasons = array();
   *   foreach ($entity_types as $entity_type) {
   *     if ($module == $entity_type->getProvider() && $entity_type instanceof ContentEntityTypeInterface && $this->entityManager->getStorage($entity_type->id())->hasData()) {
   *       $reasons[] = $this->t('There is content for the entity type: @entity_type', array('@entity_type' => $entity_type->getLabel()));
   *     }
   *   }
   *   return $reasons;
   * }
   * @endcode
   *
36 37 38 39 40
   * @param string $module
   *   A module name.
   *
   * @return string[]
   *   An array of reasons the module can not be uninstalled, empty if it can.
41 42 43 44
   *   Each reason should not end with any punctuation since multiple reasons
   *   can be displayed together.
   *
   * @see theme_system_modules_uninstall()
45 46 47
   */
  public function validate($module);
}