source: branches/branch-1_5/include/functions_html.inc.php @ 1005

Last change on this file since 1005 was 1005, checked in by nikrou, 19 years ago

Revert to revision 1002

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 11.7 KB
Line 
1<?php
2// +-----------------------------------------------------------------------+
3// | PhpWebGallery - a PHP based picture gallery                           |
4// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
5// | Copyright (C) 2003-2005 PhpWebGallery Team - http://phpwebgallery.net |
6// +-----------------------------------------------------------------------+
7// | branch        : BSF (Best So Far)
8// | file          : $RCSfile$
9// | last update   : $Date: 2006-01-15 13:49:29 +0000 (Sun, 15 Jan 2006) $
10// | last modifier : $Author: nikrou $
11// | revision      : $Revision: 1005 $
12// +-----------------------------------------------------------------------+
13// | This program is free software; you can redistribute it and/or modify  |
14// | it under the terms of the GNU General Public License as published by  |
15// | the Free Software Foundation                                          |
16// |                                                                       |
17// | This program is distributed in the hope that it will be useful, but   |
18// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
19// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
20// | General Public License for more details.                              |
21// |                                                                       |
22// | You should have received a copy of the GNU General Public License     |
23// | along with this program; if not, write to the Free Software           |
24// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
25// | USA.                                                                  |
26// +-----------------------------------------------------------------------+
27
28function get_icon( $date )
29{
30  global $user, $conf, $lang;
31
32  if (!preg_match('/\d{4}-\d{2}-\d{2}/', $date))
33  {
34    return '';
35  }
36
37  list( $year,$month,$day ) = explode( '-', $date );
38  $unixtime = mktime( 0, 0, 0, $month, $day, $year );
39 
40  $diff = time() - $unixtime;
41  $day_in_seconds = 24*60*60;
42  $output = '';
43  $title = $lang['recent_image'].'&nbsp;';
44  if ( $diff < $user['recent_period'] * $day_in_seconds )
45  {
46    $icon_url = './template/'.$user['template'].'/theme/';
47    $icon_url.= 'recent.png';
48    $title .= $user['recent_period'];
49    $title .=  '&nbsp;'.$lang['days'];
50    $size = getimagesize( $icon_url );
51    $output = '<img title="'.$title.'" src="'.$icon_url.'" class="icon" style="border:0;';
52    $output.= 'height:'.$size[1].'px;width:'.$size[0].'px" alt="(!)" />';
53  }
54  return $output;
55}
56
57function create_navigation_bar($url, $nb_element, $start,
58                               $nb_element_page, $link_class)
59{
60  global $lang, $conf;
61
62  $pages_around = $conf['paginate_pages_around'];
63 
64  $navbar = '';
65 
66  // current page detection
67  if (!isset($start)
68      or !is_numeric($start)
69      or (is_numeric($start) and $start < 0))
70  {
71    $start = 0;
72  }
73 
74  // navigation bar useful only if more than one page to display !
75  if ($nb_element > $nb_element_page)
76  {
77    // current page and last page
78    $cur_page = ceil($start / $nb_element_page) + 1;
79    $maximum = ceil($nb_element / $nb_element_page);
80
81    // link to first page ?
82    if ($cur_page != 1)
83    {
84      $navbar.= '<a href="';
85      $navbar.= add_session_id($url.'&amp;start=0');
86      $navbar.= '" class="'.$link_class.'">'.$lang['first_page'];
87      $navbar.= '</a>';
88    }
89    else
90    {
91      $navbar.= $lang['first_page'];
92    }
93    $navbar.= ' | ';
94    // link on previous page ?
95    if ( $start != 0 )
96    {
97      $previous = $start - $nb_element_page;
98      $navbar.= '<a href="';
99      $navbar.= add_session_id( $url.'&amp;start='.$previous );
100      $navbar.= '" class="'.$link_class.'">'.$lang['previous_page'];
101      $navbar.= '</a>';
102    }
103    else
104    {
105      $navbar.= $lang['previous_page'];
106    }
107    $navbar.= ' | ';
108
109    if ($cur_page > $pages_around + 1)
110    {
111      $navbar.= '&nbsp;<a href="';
112      $navbar.= add_session_id($url.'&amp;start=0');
113      $navbar.= '" class="'.$link_class.'">1</a>';
114      if ($cur_page > $pages_around + 2)
115      {
116        $navbar.= ' ...';
117      }
118    }
119   
120    // inspired from punbb source code
121    for ($i = $cur_page - $pages_around, $stop = $cur_page + $pages_around + 1;
122         $i < $stop;
123         $i++)
124    {
125      if ($i < 1 or $i > $maximum)
126      {
127        continue;
128      }
129      else if ($i != $cur_page)
130      {
131        $temp_start = ($i - 1) * $nb_element_page;
132        $navbar.= '&nbsp;<a href="';
133        $navbar.= add_session_id($url.'&amp;start='.$temp_start);
134        $navbar.= '" class="'.$link_class.'">'.$i.'</a>';
135      }
136      else
137      {
138        $navbar.= '&nbsp;<span class="pageNumberSelected">';
139        $navbar.= $i.'</span>';
140      }
141    }
142
143    if ($cur_page < ($maximum - $pages_around))
144    {
145      $temp_start = ($maximum - 1) * $nb_element_page;
146      if ($cur_page < ($maximum - $pages_around - 1))
147      {
148        $navbar.= ' ...';
149      }
150      $navbar.= ' <a href="';
151      $navbar.= add_session_id($url.'&amp;start='.$temp_start);
152      $navbar.= '" class="'.$link_class.'">'.$maximum.'</a>';
153    }
154   
155    $navbar.= ' | ';
156    // link on next page ?
157    if ( $nb_element > $nb_element_page
158         && $start + $nb_element_page < $nb_element )
159    {
160      $next = $start + $nb_element_page;
161      $navbar.= '<a href="';
162      $navbar.= add_session_id( $url.'&amp;start='.$next );
163      $navbar.= '" class="'.$link_class.'">'.$lang['next_page'].'</a>';
164    }
165    else
166    {
167      $navbar.= $lang['next_page'];
168    }
169   
170    $navbar.= ' | ';
171    // link to last page ?
172    if ($cur_page != $maximum)
173    {
174      $temp_start = ($maximum - 1) * $nb_element_page;
175      $navbar.= '<a href="';
176      $navbar.= add_session_id($url.'&amp;start='.$temp_start);
177      $navbar.= '" class="'.$link_class.'">'.$lang['last_page'];
178      $navbar.= '</a>';
179    }
180    else
181    {
182      $navbar.= $lang['last_page'];
183    }
184  }
185  return $navbar;
186}
187
188//
189// Pick a language, any language ...
190//
191function language_select($default, $select_name = "language")
192{
193  $available_lang = get_languages();
194
195  $lang_select = '<select name="' . $select_name . '">';
196  foreach ($available_lang as $code => $displayname)
197  {
198    $selected = ( strtolower($default) == strtolower($code) ) ? ' selected="selected"' : '';
199    $lang_select .= '<option value="' . $code . '"' . $selected . '>' . ucwords($displayname) . '</option>';
200  }
201  $lang_select .= '</select>';
202
203  return $lang_select;
204}
205
206/**
207 * returns the list of categories as a HTML string
208 *
209 * categories string returned contains categories as given in the input
210 * array $cat_informations. $cat_informations array must be an association
211 * of {category_id => category_name}. If url input parameter is empty,
212 * returns only the categories name without links.
213 *
214 * @param array cat_informations
215 * @param string url
216 * @param boolean replace_space
217 * @return string
218 */
219function get_cat_display_name($cat_informations,
220                              $url = 'category.php?cat=',
221                              $replace_space = true)
222{
223  global $conf;
224 
225  $output = '';
226  $is_first = true;
227  foreach ($cat_informations as $id => $name)
228  {
229    if ($is_first)
230    {
231      $is_first = false;
232    }
233    else
234    {
235      $output.= $conf['level_separator'];
236    }
237
238    if ($url == '')
239    {
240      $output.= $name;
241    }
242    else
243    {
244      $output.= '<a class=""';
245      $output.= ' href="'.add_session_id(PHPWG_ROOT_PATH.$url.$id).'">';
246      $output.= $name.'</a>';
247    }
248  }
249  if ($replace_space)
250  {
251    return replace_space($output);
252  }
253  else
254  {
255    return $output;
256  }
257}
258
259/**
260 * returns the list of categories as a HTML string, with cache of names
261 *
262 * categories string returned contains categories as given in the input
263 * array $cat_informations. $uppercats is the list of category ids to
264 * display in the right order. If url input parameter is empty, returns only
265 * the categories name without links.
266 *
267 * @param string uppercats
268 * @param string url
269 * @param boolean replace_space
270 * @return string
271 */
272function get_cat_display_name_cache($uppercats,
273                                    $url = 'category.php?cat=',
274                                    $replace_space = true)
275{
276  global $cat_names, $conf;
277
278  if (!isset($cat_names))
279  {
280    $query = '
281SELECT id,name
282  FROM '.CATEGORIES_TABLE.'
283;';
284    $result = pwg_query($query);
285    while ($row = mysql_fetch_array($result))
286    {
287      $cat_names[$row['id']] = $row['name'];
288    }
289  }
290 
291  $output = '';
292  $is_first = true;
293  foreach (explode(',', $uppercats) as $category_id)
294  {
295    $name = $cat_names[$category_id];
296   
297    if ($is_first)
298    {
299      $is_first = false;
300    }
301    else
302    {
303      $output.= $conf['level_separator'];
304    }
305
306    if ($url == '')
307    {
308      $output.= $name;
309    }
310    else
311    {
312      $output.= '
313<a class=""
314   href="'.add_session_id(PHPWG_ROOT_PATH.$url.$category_id).'">'.$name.'</a>';
315    }
316  }
317  if ($replace_space)
318  {
319    return replace_space($output);
320  }
321  else
322  {
323    return $output;
324  }
325}
326
327/**
328 * returns the HTML code for a category item in the menu (for category.php)
329 *
330 * HTML code generated uses logical list tags ul and each category is an
331 * item li. The paramter given is the category informations as an array,
332 * used keys are : id, name, nb_images, date_last
333 *
334 * @param array categories
335 * @return string
336 */
337function get_html_menu_category($categories)
338{
339  global $page, $lang;
340
341  $ref_level = 0;
342  $level = 0;
343  $menu = '';
344 
345  foreach ($categories as $category)
346  {
347    $level = substr_count($category['global_rank'], '.') + 1;
348    if ($level > $ref_level)
349    {
350      $menu.= "\n<ul>";
351    }
352    else if ($level == $ref_level)
353    {
354      $menu.= "\n</li>";
355    }
356    else if ($level < $ref_level)
357    {
358      // we may have to close more than one level at the same time...
359      $menu.= "\n</li>";
360      $menu.= str_repeat("\n</ul></li>",($ref_level-$level));
361    }
362    $ref_level = $level;
363
364    $menu.= "\n\n".'<li';
365    if (isset($page['cat'])
366        and is_numeric($page['cat'])
367        and $category['id'] == $page['cat'])
368    {
369      $menu.= ' class="selected"';
370    }
371    $menu.= '>';
372 
373    $url = add_session_id(PHPWG_ROOT_PATH.'category.php?cat='.$category['id']);
374    $menu.= "\n".'<a href="'.$url.'">'.$category['name'].'</a>';
375
376    if ($category['nb_images'] > 0)
377    {
378      $menu.= "\n".'<span class="menuInfoCat"';
379      $menu.= ' title="'.$category['nb_images'];
380      $menu.= ' '.$lang['images_available'].'">';
381      $menu.= '['.$category['nb_images'].']';
382      $menu.= '</span>';
383      $menu.= get_icon($category['date_last']);
384    }
385  }
386
387  $menu.= str_repeat("\n</li></ul>",($level));
388 
389  return $menu;
390}
391
392/**
393 * returns HTMLized comment contents retrieved from database
394 *
395 * newlines becomes br tags, _word_ becomes underline, /word/ becomes
396 * italic, *word* becomes bolded
397 *
398 * @param string content
399 * @return string
400 */
401function parse_comment_content($content)
402{
403  $content = nl2br($content);
404
405  $pattern = '/(http?:\/\/\S*)/';
406  $replacement = '<a href="$1">$1</a>';
407  $content = preg_replace($pattern, $replacement, $content);
408 
409  // replace _word_ by an underlined word
410  $pattern = '/\b_(\S*)_\b/';
411  $replacement = '<span style="text-decoration:underline;">$1</span>';
412  $content = preg_replace($pattern, $replacement, $content);
413 
414  // replace *word* by a bolded word
415  $pattern = '/\b\*(\S*)\*\b/';
416  $replacement = '<span style="font-weight:bold;">$1</span>';
417  $content = preg_replace($pattern, $replacement, $content);
418 
419  // replace /word/ by an italic word
420   $pattern = "/\/(\S*)\/(\s)/";
421   $replacement = '<span style="font-style:italic;">$1$2</span>';
422   $content = preg_replace($pattern, $replacement, $content);
423
424  return $content;
425}
426
427function get_cat_display_name_from_id($cat_id,
428                                      $url = 'category.php?cat=',
429                                      $replace_space = true)
430{
431  $cat_info = get_cat_info($cat_id);
432  return get_cat_display_name($cat_info['name'], $url, $replace_space);
433}
434?>
Note: See TracBrowser for help on using the repository browser.