Piwigo/include/functions_picture.inc.php
HWFord 983d943548 issue #2170 update picture tpl to embed pdf reader
Add default config pdf_viewer_filesize_threshold
Add function to get number of PDF pages
Add translations
update picture.php to send pdf filesize threshold and nb page to tpl
update picture.tpl to add number of pages for PDF
picture_content.tpl update for new config name and add translation functions. use embed for pdf if file ext = pdf
2024-06-20 11:56:19 +02:00

152 lines
No EOL
3.2 KiB
PHP

<?php
// +-----------------------------------------------------------------------+
// | This file is part of Piwigo. |
// | |
// | For copyright and license information, please view the COPYING.txt |
// | file that was distributed with this source code. |
// +-----------------------------------------------------------------------+
/**
* @package functions\picture
*/
/**
* Returns slideshow default params.
* - period
* - repeat
* - play
*
* @return array
*/
function get_default_slideshow_params()
{
global $conf;
return array(
'period' => $conf['slideshow_period'],
'repeat' => $conf['slideshow_repeat'],
'play' => true,
);
}
/**
* Checks and corrects slideshow params
*
* @param array $params
* @return array
*/
function correct_slideshow_params($params=array())
{
global $conf;
if ($params['period'] < $conf['slideshow_period_min'])
{
$params['period'] = $conf['slideshow_period_min'];
}
else if ($params['period'] > $conf['slideshow_period_max'])
{
$params['period'] = $conf['slideshow_period_max'];
}
return $params;
}
/**
* Decodes slideshow string params into array
*
* @param string $encode_params
* @return array
*/
function decode_slideshow_params($encode_params=null)
{
global $conf;
$result = get_default_slideshow_params();
if (is_numeric($encode_params))
{
$result['period'] = $encode_params;
}
else
{
$matches = array();
if (preg_match_all('/([a-z]+)-(\d+)/', $encode_params, $matches))
{
$matchcount = count($matches[1]);
for ($i = 0; $i < $matchcount; $i++)
{
$result[$matches[1][$i]] = $matches[2][$i];
}
}
if (preg_match_all('/([a-z]+)-(true|false)/', $encode_params, $matches))
{
$matchcount = count($matches[1]);
for ($i = 0; $i < $matchcount; $i++)
{
$result[$matches[1][$i]] = get_boolean($matches[2][$i]);
}
}
}
return correct_slideshow_params($result);
}
/**
* Encodes slideshow array params into a string
*
* @param array $decode_params
* @return string
*/
function encode_slideshow_params($decode_params=array())
{
global $conf;
$params = array_diff_assoc(correct_slideshow_params($decode_params), get_default_slideshow_params());
$result = '';
foreach ($params as $name => $value)
{
// boolean_to_string return $value, if it's not a bool
$result .= '+'.$name.'-'.boolean_to_string($value);
}
return $result;
}
/**
* Increase the number of visits for a given photo.
*
* Code moved from picture.php to be used by both the API and picture.php
*
* @since 14
* @param int $image_id
*/
function increase_image_visit_counter($image_id)
{
// avoiding auto update of "lastmodified" field
$query = '
UPDATE
'.IMAGES_TABLE.'
SET hit = hit+1, lastmodified = lastmodified
WHERE id = '.$image_id.'
;';
pwg_query($query);
}
/**
* Returns the number of pages of a PDF file
*
* @param string $pdfPath
* @return int
*/
function count_pdf_pages($pdfPath)
{
$pdftext = file_get_contents($pdfPath);
$num = preg_match_all("/\/Page\W/", $pdftext, $dummy);
return $num;
}
?>