You are here

trait ModuleDependencyMessageTrait in Drupal 9

Messages for missing or incompatible dependencies on modules.

@internal The trait simply helps core classes that display user messages regarding missing or incompatible module dependencies share exact same wording and markup.

Hierarchy

2 files declare their use of ModuleDependencyMessageTrait
ModulesListForm.php in core/modules/system/src/Form/ModulesListForm.php
SystemController.php in core/modules/system/src/Controller/SystemController.php

File

core/lib/Drupal/Core/Extension/ModuleDependencyMessageTrait.php, line 12

Namespace

Drupal\Core\Extension
View source
trait ModuleDependencyMessageTrait {

  /**
   * Provides messages for missing modules or incompatible dependencies.
   *
   * @param array $modules
   *   The list of existing modules.
   * @param string $dependency
   *   The module dependency to check.
   * @param \Drupal\Core\Extension\Dependency $dependency_object
   *   Dependency object used for comparing version requirement data.
   *
   * @return string|null
   *   NULL if compatible, otherwise a string describing the incompatibility.
   */
  public function checkDependencyMessage(array $modules, $dependency, Dependency $dependency_object) {
    if (!isset($modules[$dependency])) {
      return $this
        ->t('@module_name (<span class="admin-missing">missing</span>)', [
        '@module_name' => $dependency,
      ]);
    }
    else {
      $module_name = $modules[$dependency]->info['name'];

      // Check if the module is compatible with the installed version of core.
      if ($modules[$dependency]->info['core_incompatible']) {
        return $this
          ->t('@module_name (<span class="admin-missing">incompatible with</span> this version of Drupal core)', [
          '@module_name' => $module_name,
        ]);
      }

      // Check if the module is incompatible with the dependency constraints.
      $version = str_replace(\Drupal::CORE_COMPATIBILITY . '-', '', $modules[$dependency]->info['version']);
      if (!$dependency_object
        ->isCompatible($version)) {
        $constraint_string = $dependency_object
          ->getConstraintString();
        return $this
          ->t('@module_name (<span class="admin-missing">incompatible with</span> version @version)', [
          '@module_name' => "{$module_name} ({$constraint_string})",
          '@version' => $modules[$dependency]->info['version'],
        ]);
      }
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ModuleDependencyMessageTrait::checkDependencyMessage public function Provides messages for missing modules or incompatible dependencies.