/** * Return all template files of a particular group as array * * @param string * @param integer * * @return array * @throws Exception */ public static function getTemplateGroupInFolders($prefix, $folders) { $templates = array(); // Find all matching templates foreach ($folders as $sourceName => $folder) { $iterator = new RecursiveDirectoryIterator($folder, RecursiveDirectoryIterator::SKIP_DOTS | RecursiveDirectoryIterator::UNIX_PATHS); $iterator = new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::LEAVES_ONLY); $iterator = new RegexIterator($iterator, '~(^|/)' . preg_quote($prefix, '~') . '.*\\.twig$~i'); /** @var RecursiveDirectoryIterator|RecursiveIteratorIterator|RegexIterator $iterator */ $iterator->next(); while ($iterator->accept()) { $templateName = $iterator->getSubPathname(); $templateName = preg_replace('#\\.[^\\.]+\\.twig$#', '', $templateName); $templates[$sourceName][$templateName] = $templateName; uksort($templates[$sourceName], 'strnatcasecmp'); $iterator->next(); } } uksort($templates, 'strnatcasecmp'); return $templates; }