Files
karczma-aplikacja-stoliki/public/includes/asset_version.php
T

46 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
/**
* Wersja statycznego pliku w public/ — timestamp modyfikacji (cache busting po FTP).
*/
function publicAssetVersion(string $publicDir, string $relativePath): string
{
$path = $publicDir . DIRECTORY_SEPARATOR . str_replace('/', DIRECTORY_SEPARATOR, ltrim($relativePath, '/'));
if (!is_file($path)) {
return '0';
}
$mtime = filemtime($path);
return $mtime !== false ? (string) $mtime : '0';
}
/**
* Najnowszy mtime wśród pliku głównego i wszystkich .js w katalogu modules/.
*/
function publicJsBundleVersion(string $publicDir, string $entryRelativePath, string $modulesRelativeDir = 'assets/js/modules'): string
{
$versions = [(int) publicAssetVersion($publicDir, $entryRelativePath)];
$modulesDir = $publicDir . DIRECTORY_SEPARATOR . str_replace('/', DIRECTORY_SEPARATOR, ltrim($modulesRelativeDir, '/'));
if (is_dir($modulesDir)) {
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($modulesDir, FilesystemIterator::SKIP_DOTS)
);
foreach ($iterator as $file) {
if ($file->isFile() && strtolower($file->getExtension()) === 'js') {
$versions[] = (int) $file->getMTime();
}
}
}
return (string) max($versions);
}
function assetVersionAttr(string $version): string
{
return htmlspecialchars($version, ENT_QUOTES, 'UTF-8');
}