aboutsummaryrefslogtreecommitdiffstats
path: root/BSF/include/functions_picture.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'BSF/include/functions_picture.inc.php')
-rw-r--r--BSF/include/functions_picture.inc.php330
1 files changed, 330 insertions, 0 deletions
diff --git a/BSF/include/functions_picture.inc.php b/BSF/include/functions_picture.inc.php
new file mode 100644
index 000000000..1b6403ff3
--- /dev/null
+++ b/BSF/include/functions_picture.inc.php
@@ -0,0 +1,330 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU General Public License |
+// | along with this program; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+/**
+ * @param element_info array containing element information from db;
+ * at least 'id', 'path' should be present
+ */
+function get_element_path($element_info)
+{
+ $path = get_element_location($element_info);
+ if ( !url_is_remote($path) )
+ {
+ $path = PHPWG_ROOT_PATH.$path;
+ }
+ return $path;
+}
+
+/*
+ * @param element_info array containing element information from db;
+ * at least 'id', 'path' should be present
+ */
+function get_element_url($element_info)
+{
+ $url = get_element_location($element_info);
+ if ( !url_is_remote($url) )
+ {
+ $url = embellish_url(get_root_url().$url);
+ }
+ // plugins want another url ?
+ return trigger_event('get_element_url', $url, $element_info);
+}
+
+/**
+ * Returns the relative path of the element with regards to to the root
+ * of PWG (not the current page). This function is not intended to be
+ * called directly from code.
+ * @param element_info array containing element information from db;
+ * at least 'id', 'path' should be present
+ */
+function get_element_location($element_info)
+{
+ // maybe a cached watermark ?
+ return trigger_event('get_element_location',
+ $element_info['path'], $element_info);
+}
+
+
+/**
+ * Returns the PATH to the image to be displayed in the picture page. If the
+ * element is not a picture, then the representative image or the default
+ * mime image. The path can be used in the php script, but not sent to the
+ * browser.
+ * @param element_info array containing element information from db;
+ * at least 'id', 'path', 'representative_ext' should be present
+ */
+function get_image_path($element_info)
+{
+ global $conf;
+ $ext = get_extension($element_info['path']);
+ if (in_array($ext, $conf['picture_ext']))
+ {
+ if (isset($element_info['element_path']) )
+ {
+ return $element_info['element_path'];
+ }
+ return get_element_path($element_info);
+ }
+
+ $path = get_image_location($element_info);
+ if ( !url_is_remote($path) )
+ {
+ $path = PHPWG_ROOT_PATH.$path;
+ }
+ return $path;
+}
+
+/**
+ * Returns the URL of the image to be displayed in the picture page. If the
+ * element is not a picture, then the representative image or the default
+ * mime image. The URL can't be used in the php script, but can be sent to the
+ * browser.
+ * @param element_info array containing element information from db;
+ * at least 'id', 'path', 'representative_ext' should be present
+ */
+function get_image_url($element_info)
+{
+ global $conf;
+ $ext = get_extension($element_info['path']);
+ if (in_array($ext, $conf['picture_ext']))
+ {
+ if (isset($element_info['element_url']) )
+ {
+ return $element_info['element_url'];
+ }
+ return get_element_url($element_info);
+ }
+
+ $url = get_image_location($element_info);
+ if ( !url_is_remote($url) )
+ {
+ $url = embellish_url(get_root_url().$url);
+ }
+ return $url;
+}
+
+/**
+ * Returns the relative path of the image (element/representative/mimetype)
+ * with regards to the root of PWG (not the current page). This function
+ * is not intended to be called directly from code.
+ * @param element_info array containing element information from db;
+ * at least 'id', 'path', 'representative_ext' should be present
+ */
+function get_image_location($element_info)
+{
+ if (isset($element_info['representative_ext'])
+ and $element_info['representative_ext'] != '')
+ {
+ $pi = pathinfo($element_info['path']);
+ $file_wo_ext = get_filename_wo_extension($pi['basename']);
+ $path =
+ $pi['dirname'].'/pwg_representative/'
+ .$file_wo_ext.'.'.$element_info['representative_ext'];
+ }
+ else
+ {
+ $ext = get_extension($element_info['path']);
+ $path = get_themeconf('mime_icon_dir');
+ $path.= strtolower($ext).'.png';
+ if ( !file_exists(PHPWG_ROOT_PATH.$path)
+ and !empty($element_info['tn_ext']) )
+ {
+ $path = get_thumbnail_location($element_info);
+ }
+ }
+
+ // plugins want another location ?
+ return trigger_event( 'get_image_location', $path, $element_info);
+}
+
+
+/*
+ * @param element_info array containing element information from db;
+ * at least 'id', 'path', 'has_high' should be present
+ */
+function get_high_path($element_info)
+{
+ $path = get_high_location($element_info);
+ if (!empty($path) and !url_is_remote($path) )
+ {
+ $path = PHPWG_ROOT_PATH.$path;
+ }
+ return $path;
+}
+
+/**
+ * @param element_info array containing element information from db;
+ * at least 'id', 'path', 'has_high' should be present
+ */
+function get_high_url($element_info)
+{
+ $url = get_high_location($element_info);
+ if (!empty($url) and !url_is_remote($url) )
+ {
+ $url = embellish_url(get_root_url().$url);
+ }
+ // plugins want another url ?
+ return trigger_event('get_high_url', $url, $element_info);
+}
+
+/**
+ * @param element_info array containing element information from db;
+ * at least 'id', 'path', 'has_high' should be present
+ */
+function get_high_location($element_info)
+{
+ $location = '';
+ if ($element_info['has_high'] == 'true')
+ {
+ $pi = pathinfo($element_info['path']);
+ $location=$pi['dirname'].'/pwg_high/'.$pi['basename'];
+ }
+ return trigger_event( 'get_high_location', $location, $element_info);
+}
+
+
+/**
+ * @param what_part string one of 't' (thumbnail), 'e' (element), 'i' (image),
+ * 'h' (high resolution image)
+ * @param element_info array containing element information from db;
+ * at least 'id', 'path' should be present
+ */
+function get_download_url($what_part, $element_info)
+{
+ $url = get_root_url().'action.php';
+ $url = add_url_params($url,
+ array(
+ 'id' => $element_info['id'],
+ 'part' => $what_part,
+ )
+ );
+ return trigger_event( 'get_download_url', $url, $element_info);
+}
+
+/*
+ * get slideshow default params into array
+ *
+ * @param void
+ *
+ * @return slideshow default values into array
+ */
+function get_default_slideshow_params()
+{
+ global $conf;
+
+ return array(
+ 'period' => $conf['slideshow_period'],
+ 'repeat' => $conf['slideshow_repeat'],
+ 'play' => true,
+ );
+}
+
+/*
+ * check and correct slideshow params from array
+ *
+ * @param array of params
+ *
+ * @return slideshow corrected values into 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;
+}
+
+/*
+ * Decode slideshow string params into array
+ *
+ * @param string params like ""
+ *
+ * @return slideshow values into 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);
+}
+
+/*
+ * Encode slideshow array params into array
+ *
+ * @param array params
+ *
+ * @return slideshow values into 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;
+}
+
+?>