function RecursiveExtensionFilterIterator::accept
Same name in other branches
- 8.9.x core/lib/Drupal/Core/Extension/Discovery/RecursiveExtensionFilterIterator.php \Drupal\Core\Extension\Discovery\RecursiveExtensionFilterIterator::accept()
- 10 core/lib/Drupal/Core/Extension/Discovery/RecursiveExtensionFilterIterator.php \Drupal\Core\Extension\Discovery\RecursiveExtensionFilterIterator::accept()
- 11.x core/lib/Drupal/Core/Extension/Discovery/RecursiveExtensionFilterIterator.php \Drupal\Core\Extension\Discovery\RecursiveExtensionFilterIterator::accept()
File
-
core/
lib/ Drupal/ Core/ Extension/ Discovery/ RecursiveExtensionFilterIterator.php, line 131
Class
- RecursiveExtensionFilterIterator
- Filters a RecursiveDirectoryIterator to discover extensions.
Namespace
Drupal\Core\Extension\DiscoveryCode
public function accept() {
$name = $this->current()
->getFilename();
// FilesystemIterator::SKIP_DOTS only skips '.' and '..', but not hidden
// directories (like '.git').
if ($name[0] == '.') {
return FALSE;
}
if ($this->isDir()) {
// If this is a subdirectory of a base search path, only recurse into the
// fixed list of expected extension type directory names. Required for
// scanning the top-level/root directory; without this condition, we would
// recurse into the whole filesystem tree that possibly contains other
// files aside from Drupal.
if ($this->current()
->getSubPath() == '') {
return in_array($name, $this->allowedExtensionTypes, TRUE);
}
// 'config' directories are special-cased here, because every extension
// contains one. However, those default configuration directories cannot
// contain extensions. The directory name cannot be globally skipped,
// because core happens to have a directory of an actual module that is
// named 'config'. By explicitly testing for that case, we can skip all
// other config directories, and at the same time, still allow the core
// config module to be overridden/replaced in a profile/site directory
// (whereas it must be located directly in a modules directory).
if ($name == 'config') {
return substr($this->current()
->getPathname(), -14) == 'modules/config';
}
// Accept the directory unless the folder is skipped.
return !in_array($name, $this->skippedFolders, TRUE);
}
else {
// Only accept extension info files.
return substr($name, -9) == '.info.yml';
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.