You are here

public function FeaturesManager::getAllModules in Features 8.3

Same name and namespace in other branches
  1. 8.4 src/FeaturesManager.php \Drupal\features\FeaturesManager::getAllModules()

Returns a list of all modules present on the site's file system.

Return value

Drupal\Core\Extension\Extension[] An array of extension objects.

Overrides FeaturesManagerInterface::getAllModules

2 calls to FeaturesManager::getAllModules()
FeaturesManager::getFeaturesModules in src/FeaturesManager.php
Returns a list of Features modules regardless of if they are installed.
TestFeaturesManager::getAllModules in tests/src/Unit/FeaturesManagerTest.php
Returns a list of all modules present on the site's file system.
1 method overrides FeaturesManager::getAllModules()
TestFeaturesManager::getAllModules in tests/src/Unit/FeaturesManagerTest.php
Returns a list of all modules present on the site's file system.

File

src/FeaturesManager.php, line 464

Class

FeaturesManager
The FeaturesManager provides helper functions for building packages.

Namespace

Drupal\features

Code

public function getAllModules() {
  static $modules;
  if (!isset($modules)) {

    // ModuleHandler::getModuleDirectories() returns data only for installed
    // modules. system_rebuild_module_data() includes only the site's install
    // profile directory, while we may need to include a custom profile.
    // @see _system_rebuild_module_data().
    $listing = new ExtensionDiscovery($this->root);
    $profile_directories = $listing
      ->setProfileDirectoriesFromSettings()
      ->getProfileDirectories();
    $installed_profile = $this
      ->drupalGetProfile();
    if (isset($bundle) && $bundle
      ->isProfile()) {
      $profile_directory = 'profiles/' . $bundle
        ->getProfileName();
      if ($bundle
        ->getProfileName() != $installed_profile && is_dir($profile_directory)) {
        $profile_directories[] = $profile_directory;
      }
    }
    $listing
      ->setProfileDirectories($profile_directories);

    // Find modules.
    $modules = $listing
      ->scan('module');

    // Find installation profiles.
    $profiles = $listing
      ->scan('profile');
    foreach ($profiles as $key => $profile) {
      $modules[$key] = $profile;
    }
  }
  return $modules;
}