mirror of
https://github.com/Terranom674/Piwigo_Bratonien_Tools.git
synced 2026-09-19 15:14:34 +00:00
Separate Bratonien base watermark configuration from Piwigo native watermark
This commit is contained in:
102
include/watermark_base.inc.php
Normal file
102
include/watermark_base.inc.php
Normal file
@@ -0,0 +1,102 @@
|
||||
<?php
|
||||
if (!defined('PHPWG_ROOT_PATH'))
|
||||
{
|
||||
die('Hacking attempt!');
|
||||
}
|
||||
|
||||
function bratonien_tools_load_derivative_params()
|
||||
{
|
||||
if (!class_exists('ImageStdParams'))
|
||||
{
|
||||
require_once(PHPWG_ROOT_PATH . 'include/derivative_std_params.inc.php');
|
||||
}
|
||||
}
|
||||
|
||||
function bratonien_tools_watermark_params_to_array($watermark)
|
||||
{
|
||||
return array(
|
||||
'file' => (string)($watermark->file ?? ''),
|
||||
'xpos' => (int)($watermark->xpos ?? 50),
|
||||
'ypos' => (int)($watermark->ypos ?? 50),
|
||||
'xrepeat' => (int)($watermark->xrepeat ?? 0),
|
||||
'yrepeat' => (int)($watermark->yrepeat ?? 0),
|
||||
'opacity' => (int)($watermark->opacity ?? 100),
|
||||
'minw' => isset($watermark->min_size[0]) ? (int)$watermark->min_size[0] : 500,
|
||||
'minh' => isset($watermark->min_size[1]) ? (int)$watermark->min_size[1] : 500,
|
||||
);
|
||||
}
|
||||
|
||||
function bratonien_tools_array_to_watermark_params(array $data)
|
||||
{
|
||||
bratonien_tools_load_derivative_params();
|
||||
|
||||
$watermark = new WatermarkParams();
|
||||
$watermark->file = (string)($data['file'] ?? '');
|
||||
$watermark->xpos = (int)($data['xpos'] ?? 50);
|
||||
$watermark->ypos = (int)($data['ypos'] ?? 50);
|
||||
$watermark->xrepeat = (int)($data['xrepeat'] ?? 0);
|
||||
$watermark->yrepeat = (int)($data['yrepeat'] ?? 0);
|
||||
$watermark->opacity = (int)($data['opacity'] ?? 100);
|
||||
$watermark->min_size = array(
|
||||
(int)($data['minw'] ?? 500),
|
||||
(int)($data['minh'] ?? 500),
|
||||
);
|
||||
return $watermark;
|
||||
}
|
||||
|
||||
function bratonien_tools_default_base_watermark_config()
|
||||
{
|
||||
return array(
|
||||
'file' => '',
|
||||
'xpos' => 90,
|
||||
'ypos' => 90,
|
||||
'xrepeat' => 0,
|
||||
'yrepeat' => 0,
|
||||
'opacity' => 35,
|
||||
'minw' => 10,
|
||||
'minh' => 10,
|
||||
'scale_percent' => 100.0,
|
||||
);
|
||||
}
|
||||
|
||||
function bratonien_tools_save_base_watermark_config(array $config)
|
||||
{
|
||||
if (!function_exists('conf_update_param'))
|
||||
{
|
||||
throw new RuntimeException('Piwigo-Konfiguration ist nicht verfuegbar.');
|
||||
}
|
||||
|
||||
$config = array_merge(bratonien_tools_default_base_watermark_config(), $config);
|
||||
$config['scale_percent'] = max(1.0, min(1000.0, (float)$config['scale_percent']));
|
||||
conf_update_param('bratonien_watermark_base', json_encode($config));
|
||||
// Keep the old single-value setting in sync for compatibility with 0.3.0.
|
||||
conf_update_param('bratonien_watermark_base_scale_percent', (string)$config['scale_percent']);
|
||||
}
|
||||
|
||||
function bratonien_tools_get_base_watermark_config()
|
||||
{
|
||||
$default = bratonien_tools_default_base_watermark_config();
|
||||
if (!function_exists('conf_get_param'))
|
||||
{
|
||||
return $default;
|
||||
}
|
||||
|
||||
$stored = conf_get_param('bratonien_watermark_base', null);
|
||||
if (!empty($stored))
|
||||
{
|
||||
$decoded = json_decode($stored, true);
|
||||
if (is_array($decoded))
|
||||
{
|
||||
return array_merge($default, $decoded);
|
||||
}
|
||||
}
|
||||
|
||||
// Migration from the previous implementation: before 0.3.1 the base
|
||||
// watermark was stored directly in Piwigo's native watermark parameters.
|
||||
bratonien_tools_load_derivative_params();
|
||||
$native = bratonien_tools_watermark_params_to_array(ImageStdParams::get_watermark());
|
||||
$native['scale_percent'] = (float)conf_get_param('bratonien_watermark_base_scale_percent', 100);
|
||||
$config = array_merge($default, $native);
|
||||
bratonien_tools_save_base_watermark_config($config);
|
||||
return $config;
|
||||
}
|
||||
Reference in New Issue
Block a user