public RecursiveExtensionFilterIterator::accept()
File
- core/lib/Drupal/Core/Extension/Discovery/RecursiveExtensionFilterIterator.php, line 129
Class
- RecursiveExtensionFilterIterator
- Filters a RecursiveDirectoryIterator to discover extensions.
Namespace
Drupal\Core\Extension\Discovery
Code
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->whitelist, 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 name is blacklisted. return !in_array($name, $this->blacklist, TRUE); } else { // Only accept extension info files. return substr($name, -9) == '.info.yml'; } }
Please login to continue.