Esempio n. 1
0
 /**
  * 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;
 }