protected function SystemListingInfo::process

Overrides Drupal\Core\SystemListing::process().

Overrides SystemListing::process

File

drupal/core/lib/Drupal/Core/SystemListingInfo.php, line 46
Definition of Drupal\Core\SystemListingInfo.

Class

SystemListingInfo
Returns information about system object files (modules, themes, etc.).

Namespace

Drupal\Core

Code

protected function process(array $files, array $files_to_add) {

  // Duplicate files found in later search directories take precedence over
  // earlier ones, so we want them to overwrite keys in our resulting
  // $files array.
  // The exception to this is if the later file is from a module or theme not
  // compatible with Drupal core. This may occur during upgrades of Drupal
  // core when new modules exist in core while older contrib modules with the
  // same name exist in a directory such as /modules.
  foreach (array_intersect_key($files_to_add, $files) as $file_key => $file) {

    // If it has no info file, then we just behave liberally and accept the
    // new resource on the list for merging.
    if (file_exists($info_file = dirname($file->uri) . '/' . $file->name . '.info.yml')) {

      // Get the .info.yml file for the module or theme this file belongs to.
      $info = drupal_parse_info_file($info_file);

      // If the module or theme is incompatible with Drupal core, remove it
      // from the array for the current search directory, so it is not
      // overwritten when merged with the $files array.
      if (isset($info['core']) && $info['core'] != DRUPAL_CORE_COMPATIBILITY) {
        unset($files_to_add[$file_key]);
      }
    }
  }
  return $files_to_add;
}