mirror of
https://github.com/Terranom674/Piwigo_Bratonien_Tools.git
synced 2026-09-20 14:33:19 +00:00
Redirect first watermark request to generated static cache
This commit is contained in:
@@ -38,6 +38,7 @@ function bratonien_tools_watermark_fail($code, $message)
|
|||||||
|
|
||||||
function bratonien_tools_output_image($path)
|
function bratonien_tools_output_image($path)
|
||||||
{
|
{
|
||||||
|
clearstatcache(true, $path);
|
||||||
$ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));
|
$ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));
|
||||||
$types = array('jpg'=>'image/jpeg','jpeg'=>'image/jpeg','png'=>'image/png','gif'=>'image/gif','webp'=>'image/webp');
|
$types = array('jpg'=>'image/jpeg','jpeg'=>'image/jpeg','png'=>'image/png','gif'=>'image/gif','webp'=>'image/webp');
|
||||||
$mtime = @filemtime($path) ?: time();
|
$mtime = @filemtime($path) ?: time();
|
||||||
@@ -63,6 +64,13 @@ function bratonien_tools_output_image($path)
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function bratonien_tools_redirect_to_cache($url)
|
||||||
|
{
|
||||||
|
header('Cache-Control: no-store, max-age=0');
|
||||||
|
header('Location: '.$url, true, 302);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
function bratonien_tools_url_to_size($value)
|
function bratonien_tools_url_to_size($value)
|
||||||
{
|
{
|
||||||
$parts = explode('x', (string)$value, 2);
|
$parts = explode('x', (string)$value, 2);
|
||||||
@@ -249,12 +257,10 @@ function bratonien_tools_ensure_piwigo_derivative(array $derivative)
|
|||||||
$image->sharpen($params->sharpen);
|
$image->sharpen($params->sharpen);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bewusst kein natives Piwigo-Wasserzeichen. Die Bratonien-Engine hält
|
|
||||||
// WatermarkParams.file leer und use_watermark=false. Dieser Cache bleibt
|
|
||||||
// damit auch für private Albumkontexte unverändert nutzbar.
|
|
||||||
$image->write($path);
|
$image->write($path);
|
||||||
$image->destroy();
|
$image->destroy();
|
||||||
@chmod($path, 0644);
|
@chmod($path, 0644);
|
||||||
|
clearstatcache(true, $path);
|
||||||
|
|
||||||
return is_file($path) && is_readable($path) ? $path : null;
|
return is_file($path) && is_readable($path) ? $path : null;
|
||||||
}
|
}
|
||||||
@@ -319,7 +325,7 @@ if (!$descriptor)
|
|||||||
|
|
||||||
if (is_file($descriptor['path']) && is_readable($descriptor['path']))
|
if (is_file($descriptor['path']) && is_readable($descriptor['path']))
|
||||||
{
|
{
|
||||||
bratonien_tools_output_image($descriptor['path']);
|
bratonien_tools_redirect_to_cache($descriptor['url']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_dir($descriptor['dir']) && !mkdir($descriptor['dir'], 0755, true) && !is_dir($descriptor['dir']))
|
if (!is_dir($descriptor['dir']) && !mkdir($descriptor['dir'], 0755, true) && !is_dir($descriptor['dir']))
|
||||||
@@ -342,7 +348,7 @@ if (is_file($descriptor['path']) && is_readable($descriptor['path']))
|
|||||||
{
|
{
|
||||||
flock($lock, LOCK_UN);
|
flock($lock, LOCK_UN);
|
||||||
fclose($lock);
|
fclose($lock);
|
||||||
bratonien_tools_output_image($descriptor['path']);
|
bratonien_tools_redirect_to_cache($descriptor['url']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$piwigo_derivative = bratonien_tools_ensure_piwigo_derivative($derivative);
|
$piwigo_derivative = bratonien_tools_ensure_piwigo_derivative($derivative);
|
||||||
@@ -416,8 +422,14 @@ if ($width >= (int)$profile['min_width'] && $height >= (int)$profile['min_height
|
|||||||
$image->write($descriptor['path']);
|
$image->write($descriptor['path']);
|
||||||
$image->destroy();
|
$image->destroy();
|
||||||
@chmod($descriptor['path'], 0644);
|
@chmod($descriptor['path'], 0644);
|
||||||
|
clearstatcache(true, $descriptor['path']);
|
||||||
|
|
||||||
flock($lock, LOCK_UN);
|
flock($lock, LOCK_UN);
|
||||||
fclose($lock);
|
fclose($lock);
|
||||||
|
|
||||||
bratonien_tools_output_image($descriptor['path']);
|
if (!is_file($descriptor['path']) || !is_readable($descriptor['path']))
|
||||||
|
{
|
||||||
|
bratonien_tools_watermark_fail(500, 'Generated watermark cache unavailable');
|
||||||
|
}
|
||||||
|
|
||||||
|
bratonien_tools_redirect_to_cache($descriptor['url']);
|
||||||
|
|||||||
Reference in New Issue
Block a user