Add constants for file extensions Extract helper functions for common operations Improve PDF file detection Simplify directory scanning operations Standardize template resolution Optimize content rendering pipeline
69 lines
2.3 KiB
PHP
69 lines
2.3 KiB
PHP
<?php
|
|
|
|
function resolveTemplate(string $templateName): string {
|
|
$customTemplate = dirname(__DIR__) . "/custom/templates/$templateName.php";
|
|
$defaultTemplate = __DIR__ . "/default/templates/$templateName.php";
|
|
return file_exists($customTemplate) ? $customTemplate : $defaultTemplate;
|
|
}
|
|
|
|
function getSubdirectories(string $dir): array {
|
|
if (!is_dir($dir)) return [];
|
|
return array_filter(
|
|
scandir($dir) ?: [],
|
|
fn($item) => !in_array($item, ['.', '..']) && is_dir("$dir/$item")
|
|
);
|
|
}
|
|
|
|
function getLangPrefix(string $currentLang, string $defaultLang): string {
|
|
return $currentLang !== $defaultLang ? "/$currentLang" : '';
|
|
}
|
|
|
|
function extractTitle(string $filePath, string $lang, string $defaultLang): ?string {
|
|
$files = findAllContentFiles($filePath, $lang, $defaultLang);
|
|
if (empty($files)) return null;
|
|
|
|
// Check the first content file for a title
|
|
$file = $files[0];
|
|
$ext = pathinfo($file, PATHINFO_EXTENSION);
|
|
$content = file_get_contents($file);
|
|
|
|
if ($ext === 'md' && preg_match('/^#\s+(.+)$/m', $content, $matches)) {
|
|
return trim($matches[1]);
|
|
}
|
|
if (in_array($ext, ['html', 'php']) && preg_match('/<h1[^>]*>(.*?)<\/h1>/i', $content, $matches)) {
|
|
return strip_tags($matches[1]);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function formatNorwegianDate(string $dateString): string {
|
|
if (preg_match('/^(\d{4})-(\d{2})-(\d{2})/', $dateString, $matches)) {
|
|
$months = ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'];
|
|
$day = (int)$matches[3];
|
|
$month = $months[(int)$matches[2] - 1];
|
|
$year = $matches[1];
|
|
return "$day. $month $year";
|
|
}
|
|
return $dateString;
|
|
}
|
|
|
|
function extractDateFromFolder(string $folderName): ?string {
|
|
if (preg_match('/^(\d{4})-(\d{2})-(\d{2})-/', $folderName, $matches)) {
|
|
return formatNorwegianDate($matches[1] . '-' . $matches[2] . '-' . $matches[3]);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function findCoverImage(string $dirPath): ?string {
|
|
foreach (COVER_IMAGE_EXTENSIONS as $ext) {
|
|
if (file_exists("$dirPath/cover.$ext")) {
|
|
return "cover.$ext";
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function findPdfFile(string $dirPath): ?string {
|
|
$pdfs = glob("$dirPath/*.pdf");
|
|
return $pdfs ? basename($pdfs[0]) : null;
|
|
}
|