/** * 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); } } } } } }