/**
  * Generates the template manifest - a list of all the .SS files in the
  * application
  */
 private static function getTemplateManifest($baseDir, $folder, &$templateManifest, &$cssManifest, $themeName = null)
 {
     $items = scandir("{$baseDir}/{$folder}");
     if ($items) {
         foreach ($items as $item) {
             if (substr($item, 0, 1) == '.') {
                 continue;
             }
             if (substr($item, -3) == '.ss') {
                 $templateName = substr($item, 0, -3);
                 $templateType = substr($folder, strrpos($folder, '/') + 1);
                 if ($templateType == "templates") {
                     $templateType = "main";
                 }
                 if ($themeName) {
                     $templateManifest[$templateName]['themes'][$themeName][$templateType] = "{$baseDir}/{$folder}/{$item}";
                 } else {
                     $templateManifest[$templateName][$templateType] = "{$baseDir}/{$folder}/{$item}";
                 }
             } else {
                 if (substr($item, -4) == '.css') {
                     $cssName = substr($item, 0, -4);
                     // Debug::message($item);
                     if ($themeName) {
                         $cssManifest[$cssName]['themes'][$themeName] = "{$folder}/{$item}";
                     } else {
                         $cssManifest[$cssName]['unthemed'] = "{$folder}/{$item}";
                     }
                 } else {
                     if (@is_dir("{$baseDir}/{$folder}/{$item}")) {
                         ManifestBuilder::getTemplateManifest($baseDir, "{$folder}/{$item}", $templateManifest, $cssManifest, $themeName);
                     }
                 }
             }
         }
     }
 }
 /**
  * Generates the template manifest - a list of all the .ss files in the
  * application.
  * 
  * See {@link SSViewer} for an overview on the array structure this class creates.
  * 
  * @param String $baseDir
  * @param String $folder
  */
 private static function getTemplateManifest($baseDir, $folder, $excludedFolders, &$templateManifest, &$cssManifest, $themeName = null)
 {
     $items = scandir("{$baseDir}/{$folder}");
     if ($items) {
         foreach ($items as $item) {
             // Skip hidden files/folders
             if (substr($item, 0, 1) == '.') {
                 continue;
             }
             // Parse *.ss files
             if (substr($item, -3) == '.ss') {
                 // Remove extension from template name
                 $templateName = substr($item, 0, -3);
                 // The "type" is effectively a subfolder underneath $folder,
                 // mostly "Includes" or "Layout".
                 $templateType = substr($folder, strrpos($folder, '/') + 1);
                 // The parent folder counts as type "main"
                 if ($templateType == "templates") {
                     $templateType = "main";
                 }
                 // Write either to theme or to non-themed array
                 if ($themeName) {
                     $templateManifest[$templateName]['themes'][$themeName][$templateType] = "{$baseDir}/{$folder}/{$item}";
                 } else {
                     $templateManifest[$templateName][$templateType] = "{$baseDir}/{$folder}/{$item}";
                 }
             } else {
                 if (substr($item, -4) == '.css') {
                     $cssName = substr($item, 0, -4);
                     // Debug::message($item);
                     if ($themeName) {
                         $cssManifest[$cssName]['themes'][$themeName] = "{$folder}/{$item}";
                     } else {
                         $cssManifest[$cssName]['unthemed'] = "{$folder}/{$item}";
                     }
                 } else {
                     if (@is_dir("{$baseDir}/{$folder}/{$item}")) {
                         // Folder exclusion - used to skip over tests/ folders
                         if (in_array($item, $excludedFolders)) {
                             continue;
                         }
                         ManifestBuilder::getTemplateManifest($baseDir, "{$folder}/{$item}", $excludedFolders, $templateManifest, $cssManifest, $themeName);
                     }
                 }
             }
         }
     }
 }