trait ModuleDependencyMessageTrait

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Extension/ModuleDependencyMessageTrait.php \Drupal\Core\Extension\ModuleDependencyMessageTrait
  2. 8.9.x core/modules/system/src/ModuleDependencyMessageTrait.php \Drupal\system\ModuleDependencyMessageTrait
  3. 11.x core/lib/Drupal/Core/Extension/ModuleDependencyMessageTrait.php \Drupal\Core\Extension\ModuleDependencyMessageTrait

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.
      // Remove CORE_COMPATIBILITY- only from the start of the string.
      $version = preg_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

Title Sort descending Modifiers Object type Summary
ModuleDependencyMessageTrait::checkDependencyMessage public function Provides messages for missing modules or incompatible dependencies.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.