diff options
Diffstat (limited to 'BSF/include/functions_html.inc.php')
-rw-r--r-- | BSF/include/functions_html.inc.php | 751 |
1 files changed, 0 insertions, 751 deletions
diff --git a/BSF/include/functions_html.inc.php b/BSF/include/functions_html.inc.php deleted file mode 100644 index b51f6f9df..000000000 --- a/BSF/include/functions_html.inc.php +++ /dev/null @@ -1,751 +0,0 @@ -<?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. | -// +-----------------------------------------------------------------------+ - -function get_icon($date, $is_child_date = false) -{ - global $page, $user; - - if (empty($date)) - { - return ''; - } - - if (isset($page['get_icon_cache'][$date])) - { - if (! $page['get_icon_cache'][$date] ) - return ''; - return $page['get_icon_cache']['_icons_'][$is_child_date]; - } - - if (!isset($page['get_icon_cache']['sql_recent_date'])) - { - // Use MySql date in order to standardize all recent "actions/queries" - list($page['get_icon_cache']['sql_recent_date']) = - mysql_fetch_array(pwg_query('select SUBDATE( - CURRENT_DATE,INTERVAL '.$user['recent_period'].' DAY)')); - } - - $page['get_icon_cache'][$date] = false; - if ( $date > $page['get_icon_cache']['sql_recent_date'] ) - { - if ( !isset($page['get_icon_cache']['_icons_'] ) ) - { - $icons = array(false => 'recent', true => 'recent_by_child' ); - $title = sprintf( - l10n('elements posted during the last %d days'), - $user['recent_period'] - ); - foreach ($icons as $key => $icon) - { - $icon_url = get_themeconf('icon_dir').'/'.$icon.'.png'; - $size = getimagesize( PHPWG_ROOT_PATH.$icon_url ); - $icon_url = get_root_url().$icon_url; - $output = '<img title="'.$title.'" src="'.$icon_url.'" class="icon" style="border:0;'; - $output.= 'height:'.$size[1].'px;width:'.$size[0].'px" alt="(!)" />'; - $page['get_icon_cache']['_icons_'][$key] = $output; - } - } - $page['get_icon_cache'][$date] = true; - } - - if (! $page['get_icon_cache'][$date] ) - return ''; - return $page['get_icon_cache']['_icons_'][$is_child_date]; -} - -function create_navigation_bar( - $url, $nb_element, $start, $nb_element_page, $clean_url = false - ) -{ - global $conf; - - $pages_around = $conf['paginate_pages_around']; - $start_str = $clean_url ? '/start-' : - ( ( strstr($url, '?')===false ? '?':'&') . 'start=' ); - - $navbar = ''; - - // current page detection - if (!isset($start) - or !is_numeric($start) - or (is_numeric($start) and $start < 0)) - { - $start = 0; - } - - // navigation bar useful only if more than one page to display ! - if ($nb_element > $nb_element_page) - { - // current page and last page - $cur_page = ceil($start / $nb_element_page) + 1; - $maximum = ceil($nb_element / $nb_element_page); - - // link to first page ? - if ($cur_page != 1) - { - $navbar.= - '<a href="'.$url.'" rel="first">' - .l10n('first_page') - .'</a>'; - } - else - { - $navbar.= l10n('first_page'); - } - $navbar.= ' | '; - // link on previous page ? - if ($start != 0) - { - $previous = $start - $nb_element_page; - - $navbar.= - '<a href="' - .$url.($previous > 0 ? $start_str.$previous : '') - .'" rel="prev">' - .l10n('previous_page') - .'</a>'; - } - else - { - $navbar.= l10n('previous_page'); - } - $navbar.= ' |'; - - if ($cur_page > $pages_around + 1) - { - $navbar.= ' <a href="'.$url.'">1</a>'; - - if ($cur_page > $pages_around + 2) - { - $navbar.= ' ...'; - } - } - - // inspired from punbb source code - for ($i = $cur_page - $pages_around, $stop = $cur_page + $pages_around + 1; - $i < $stop; - $i++) - { - if ($i < 1 or $i > $maximum) - { - continue; - } - else if ($i != $cur_page) - { - $temp_start = ($i - 1) * $nb_element_page; - - $navbar.= - ' ' - .'<a href="'.$url - .($temp_start > 0 ? $start_str.$temp_start : '') - .'">' - .$i - .'</a>'; - } - else - { - $navbar.= - ' ' - .'<span class="pageNumberSelected">' - .$i - .'</span>'; - } - } - - if ($cur_page < ($maximum - $pages_around)) - { - $temp_start = ($maximum - 1) * $nb_element_page; - - if ($cur_page < ($maximum - $pages_around - 1)) - { - $navbar.= ' ...'; - } - - $navbar.= ' <a href="'.$url.$start_str.$temp_start.'">'.$maximum.'</a>'; - } - - $navbar.= ' | '; - // link on next page ? - if ($nb_element > $nb_element_page - and $start + $nb_element_page < $nb_element) - { - $next = $start + $nb_element_page; - - $navbar.= - '<a href="'.$url.$start_str.$next.'" rel="next">' - .l10n('next_page') - .'</a>'; - } - else - { - $navbar.= l10n('next_page'); - } - - $navbar.= ' | '; - // link to last page ? - if ($cur_page != $maximum) - { - $temp_start = ($maximum - 1) * $nb_element_page; - - $navbar.= - '<a href="'.$url.$start_str.$temp_start.'" rel="last">' - .l10n('last_page') - .'</a>'; - } - else - { - $navbar.= l10n('last_page'); - } - } - return $navbar; -} - -/** - * returns the list of categories as a HTML string - * - * categories string returned contains categories as given in the input - * array $cat_informations. $cat_informations array must be an array - * of array( id=>?, name=>?, permalink=>?). If url input parameter is null, - * returns only the categories name without links. - * - * @param array cat_informations - * @param string url - * @param boolean replace_space - * @return string - */ -function get_cat_display_name($cat_informations, - $url = '', - $replace_space = true) -{ - global $conf; - - $output = ''; - $is_first = true; - foreach ($cat_informations as $cat) - { - is_array($cat) or trigger_error( - 'get_cat_display_name wrong type for category ', E_USER_WARNING - ); - if ($is_first) - { - $is_first = false; - } - else - { - $output.= $conf['level_separator']; - } - - if ( !isset($url) ) - { - $output.= $cat['name']; - } - elseif ($url == '') - { - $output.= '<a href="' - .make_index_url( - array( - 'category' => $cat, - ) - ) - .'">'; - $output.= $cat['name'].'</a>'; - } - else - { - $output.= '<a href="'.PHPWG_ROOT_PATH.$url.$cat['id'].'">'; - $output.= $cat['name'].'</a>'; - } - } - if ($replace_space) - { - return replace_space($output); - } - else - { - return $output; - } -} - -/** - * returns the list of categories as a HTML string, with cache of names - * - * categories string returned contains categories as given in the input - * array $cat_informations. $uppercats is the list of category ids to - * display in the right order. If url input parameter is empty, returns only - * the categories name without links. - * - * @param string uppercats - * @param string url - * @param boolean replace_space - * @return string - */ -function get_cat_display_name_cache($uppercats, - $url = '', - $replace_space = true) -{ - global $cache, $conf; - - if (!isset($cache['cat_names'])) - { - $query = ' -SELECT id, name, permalink - FROM '.CATEGORIES_TABLE.' -;'; - $cache['cat_names'] = hash_from_query($query, 'id'); - } - - $output = ''; - $is_first = true; - foreach (explode(',', $uppercats) as $category_id) - { - $cat = $cache['cat_names'][$category_id]; - - if ($is_first) - { - $is_first = false; - } - else - { - $output.= $conf['level_separator']; - } - - if ( !isset($url) ) - { - $output.= $cat['name']; - } - elseif ($url == '') - { - $output.= ' -<a href="' - .make_index_url( - array( - 'category' => $cat, - ) - ) - .'">'.$cat['name'].'</a>'; - } - else - { - $output.= ' -<a href="'.PHPWG_ROOT_PATH.$url.$category_id.'">'.$cat['name'].'</a>'; - } - } - if ($replace_space) - { - return replace_space($output); - } - else - { - return $output; - } -} - -/** - * returns the HTML code for a category item in the menu (for the main page) - * - * HTML code generated uses logical list tags ul and each category is an - * item li. The paramter given is the category informations as an array, - * used keys are : id, name, nb_images, max_date_last, date_last - * count_images, count_categories - * - * @param array categories - * @return string - */ -function get_html_menu_category($categories, $selected_category) -{ - $ref_level = 0; - $level = 0; - - $menu = trigger_event('get_html_menu_category', '', - $categories, $selected_category); - if (strlen($menu)) - { - return $menu; - } - - foreach ($categories as $category) - { - $level = substr_count($category['global_rank'], '.') + 1; - if ($level > $ref_level) - { - $menu.= "\n<ul>"; - } - else if ($level == $ref_level) - { - $menu.= "\n</li>"; - } - else if ($level < $ref_level) - { - // we may have to close more than one level at the same time... - $menu.= "\n</li>"; - $menu.= str_repeat("\n</ul></li>",($ref_level-$level)); - } - $ref_level = $level; - - $menu.= "\n\n".'<li'; - if ($category['id'] == @$selected_category['id']) - { - $menu.= ' class="selected"'; - } - $menu.= '>'; - - $url = make_index_url( - array( - 'category' => $category - ) - ); - - $title = get_display_images_count - ( - $category['nb_images'], - $category['count_images'], - $category['count_categories'], - false, - ' / ' - ); - - $menu.= '<a href="'.$url.'"'; - if ($selected_category!=null - and $category['id'] == $selected_category['id_uppercat']) - { - $menu.= ' rel="up"'; - } - $menu.= ' title="'.$title.'">'.$category['name'].'</a>'; - - if ( $category['count_images']>0 ) - {// at least one direct or indirect image - $menu.= "\n".'<span class="'; - // at least one image in this category -> class menuInfoCat - $menu.= ($category['nb_images'] > 0 ? "menuInfoCat" - : "menuInfoCatByChild").'"'; - $menu.= ' title=" '.$title.'">'; - // show total number of images - $menu.= '['.$category['count_images'].']'; - $menu.= '</span>'; - } - $child_date_last = @$category['max_date_last']> @$category['date_last']; - $menu.= get_icon($category['max_date_last'], $child_date_last); - } - - $menu.= str_repeat("\n</li></ul>",($level)); - - return $menu; -} - -/** - * returns HTMLized comment contents retrieved from database - * - * newlines becomes br tags, _word_ becomes underline, /word/ becomes - * italic, *word* becomes bolded - * - * @param string content - * @return string - */ -function parse_comment_content($content) -{ - $pattern = '/(https?:\/\/\S*)/'; - $replacement = '<a href="$1" rel="nofollow">$1</a>'; - $content = preg_replace($pattern, $replacement, $content); - - $content = nl2br($content); - - // replace _word_ by an underlined word - $pattern = '/\b_(\S*)_\b/'; - $replacement = '<span style="text-decoration:underline;">$1</span>'; - $content = preg_replace($pattern, $replacement, $content); - - // replace *word* by a bolded word - $pattern = '/\b\*(\S*)\*\b/'; - $replacement = '<span style="font-weight:bold;">$1</span>'; - $content = preg_replace($pattern, $replacement, $content); - - // replace /word/ by an italic word - $pattern = "/\/(\S*)\/(\s)/"; - $replacement = '<span style="font-style:italic;">$1$2</span>'; - $content = preg_replace($pattern, $replacement, $content); - - $content = '<div>'.$content.'</div>'; - return $content; -} - -function get_cat_display_name_from_id($cat_id, - $url = '', - $replace_space = true) -{ - $cat_info = get_cat_info($cat_id); - return get_cat_display_name($cat_info['upper_names'], $url, $replace_space); -} - -/** - * Returns an HTML list of tags. It can be a multi select field or a list of - * checkboxes. - * - * @param string HTML field name - * @param array selected tag ids - * @return array - */ -function get_html_tag_selection( - $tags, - $fieldname, - $selecteds = array(), - $forbidden_categories = null - ) -{ - global $conf; - - if (count ($tags) == 0 ) - { - return ''; - } - $output = '<ul class="tagSelection">'; - foreach ($tags as $tag) - { - $output.= - '<li>' - .'<label>' - .'<input type="checkbox" name="'.$fieldname.'[]"' - .' value="'.$tag['id'].'"' - ; - - if (in_array($tag['id'], $selecteds)) - { - $output.= ' checked="checked"'; - } - - $output.= - ' />' - .' '. $tag['name'] - .'</label>' - .'</li>' - ."\n" - ; - } - $output.= '</ul>'; - - return $output; -} - -function name_compare($a, $b) -{ - return strcmp(strtolower($a['name']), strtolower($b['name'])); -} - -/** - * exits the current script (either exit or redirect) - */ -function access_denied() -{ - global $user; - - $login_url = - get_root_url().'identification.php?redirect=' - .urlencode(urlencode($_SERVER['REQUEST_URI'])); - - if ( isset($user) and !is_a_guest() ) - { - echo '<div style="text-align:center;">'.l10n('access_forbiden').'<br />'; - echo '<a href="'.get_root_url().'identification.php">'.l10n('identification').'</a> '; - echo '<a href="'.make_index_url().'">'.l10n('home').'</a></div>'; - exit(); - } - else - { - set_status_header(401); - redirect_html($login_url); - } -} - -/** - * exits the current script with 403 code - * @param string msg a message to display - * @param string alternate_url redirect to this url - */ -function page_forbidden($msg, $alternate_url=null) -{ - set_status_header(403); - if ($alternate_url==null) - $alternate_url = make_index_url(); - redirect_html( $alternate_url, - '<div style="text-align:left; margin-left:5em;margin-bottom:5em;"> -<h1 style="text-align:left; font-size:36px;">Forbidden</h1><br/>' -.$msg.'</div>', - 5 ); -} - -/** - * exits the current script with 400 code - * @param string msg a message to display - * @param string alternate_url redirect to this url - */ -function bad_request($msg, $alternate_url=null) -{ - set_status_header(400); - if ($alternate_url==null) - $alternate_url = make_index_url(); - redirect_html( $alternate_url, - '<div style="text-align:left; margin-left:5em;margin-bottom:5em;"> -<h1 style="text-align:left; font-size:36px;">Bad request</h1><br/>' -.$msg.'</div>', - 5 ); -} - -/** - * exits the current script with 404 code when a page cannot be found - * @param string msg a message to display - * @param string alternate_url redirect to this url - */ -function page_not_found($msg, $alternate_url=null) -{ - set_status_header(404); - if ($alternate_url==null) - $alternate_url = make_index_url(); - redirect_html( $alternate_url, - '<div style="text-align:left; margin-left:5em;margin-bottom:5em;"> -<h1 style="text-align:left; font-size:36px;">Page not found</h1><br/>' -.$msg.'</div>', - 5 ); -} - -/* returns the title to be displayed above thumbnails on tag page - */ -function get_tags_content_title() -{ - global $page; - $title = count($page['tags']) > 1 ? l10n('Tags') : l10n('Tag'); - $title.= ' '; - - for ($i=0; $i<count($page['tags']); $i++) - { - $title.= $i>0 ? ' + ' : ''; - - $title.= - '<a href="' - .make_index_url( - array( - 'tags' => array( $page['tags'][$i] ) - ) - ) - .'" title="' - .l10n('See elements linked to this tag only') - .'">' - .$page['tags'][$i]['name'] - .'</a>'; - - if ( count($page['tags'])>2 ) - { - $other_tags = $page['tags']; - unset ( $other_tags[$i] ); - $title.= - '<a href="' - .make_index_url( - array( - 'tags' => $other_tags - ) - ) - .'" style="border:none;" title="' - .l10n('remove this tag') - .'"><img src="' - .get_root_url().get_themeconf('icon_dir').'/remove_s.png' - .'" alt="x" style="vertical-align:bottom;" class="button"/>' - .'</a>'; - } - - } - return $title; -} - -/** - Sets the http status header (200,401,...) - */ -function set_status_header($code, $text='') -{ - if (empty($text)) - { - switch ($code) - { - case 200: $text='OK';break; - case 301: $text='Moved permanently';break; - case 302: $text='Moved temporarily';break; - case 304: $text='Not modified';break; - case 400: $text='Bad request';break; - case 401: $text='Authorization required';break; - case 403: $text='Forbidden';break; - case 404: $text='Not found';break; - case 500: $text='Server error';break; - case 503: $text='Service unavailable';break; - } - } - $protocol = $_SERVER["SERVER_PROTOCOL"]; - if ( ('HTTP/1.1' != $protocol) && ('HTTP/1.0' != $protocol) ) - $protocol = 'HTTP/1.0'; - - if ( version_compare( phpversion(), '4.3.0', '>=' ) ) - { - header( "$protocol $code $text", true, $code ); - } - else - { - header( "$protocol $code $text" ); - } - trigger_action('set_status_header', $code, $text); -} - -/** returns the category comment for rendering in html. - * this is an event handler. don't call directly - */ -function render_category_description($desc) -{ - global $conf; - if ( !( $conf['allow_html_descriptions'] and - preg_match('/<(div|br|img|script).*>/i', $desc) ) ) - { - $desc = nl2br($desc); - } - return $desc; -} - -/** returns the category comment for rendering in html textual mode (subcatify) - * this is an event handler. don't call directly - */ -function render_category_literal_description($desc) -{ - return strip_tags($desc, '<span><p><a><br><b><i><small><big><strong><em>'); -} - -/** returns the argument_ids array with new sequenced keys based on related - * names. Sequence is not case sensitive. - * Warning: By definition, this function breaks original keys - */ -function order_by_name($element_ids,$name) -{ - $ordered_element_ids = array(); - foreach ($element_ids as $k_id => $element_id) - { - $key = strtolower($name[$element_id]) .'-'. $name[$element_id] .'-'. $k_id; - $ordered_element_ids[$key] = $element_id; - } - ksort($ordered_element_ids); - return $ordered_element_ids; -} - -?> |