aboutsummaryrefslogtreecommitdiffstats
path: root/include/calendar_base.class.php
diff options
context:
space:
mode:
authorplegall <plg@piwigo.org>2006-02-23 16:53:11 +0000
committerplegall <plg@piwigo.org>2006-02-23 16:53:11 +0000
commit9a7a232cef393a829e7e5088ceb5d145c2f942ed (patch)
tree685ec57e3114110a3bcf9db49258cb3aa75b7c98 /include/calendar_base.class.php
parent347d2e34b3972ec1d0022b831dd5a1fe13adbaa5 (diff)
modification: DAY() MySQL function replaced by DAYOFMONTH() to improve
backward compatibility (this function was added in MySQL 4.1) bug fixed: with chronology mode, PWG displays thumbnails on main page if even if no category (which will soon be called "section") is set. This was producing warnings on category.php from include/category_default.inc.php. refactoring: on include/calendar_base.class.php and include/functions_calendar.inc.php. Unix file format, coding guidelines, etc. While trying to understand the code, I've made some presentation modification to clarify variable names and so on. git-svn-id: http://piwigo.org/svn/trunk@1053 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'include/calendar_base.class.php')
-rw-r--r--include/calendar_base.class.php342
1 files changed, 178 insertions, 164 deletions
diff --git a/include/calendar_base.class.php b/include/calendar_base.class.php
index 1f120c811..26472bf1b 100644
--- a/include/calendar_base.class.php
+++ b/include/calendar_base.class.php
@@ -1,165 +1,179 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | PhpWebGallery - a PHP based picture gallery |
-// | Copyright (C) 2003-2006 PhpWebGallery Team - http://phpwebgallery.net |
-// +-----------------------------------------------------------------------+
-// | branch : BSF (Best So Far)
-// | file : $RCSfile$
-// | last update : $Date: 2006-01-27 02:11:43 +0100 (ven, 27 jan 2006) $
-// | last modifier : $Author: rvelices $
-// | revision : $Revision: 1014 $
-// +-----------------------------------------------------------------------+
-// | 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. |
-// +-----------------------------------------------------------------------+
-
-/**
- * Base class for monthly and weekly calendar styles
- */
-class CalendarBase
-{
-// db column on which this calendar works
-var $date_field;
-// used for queries (INNER JOIN or normal)
-var $inner_sql;
-// base url used when generating html links
-var $url_base;
-
-function get_date_where()
-{
- die("get_date_where not extended");
-}
-
-/**
- * Initialize the calendar
- * @param string date_field db column on which this calendar works
- * @param string inner_sql used for queries (INNER JOIN or normal)
- */
-function initialize($date_field, $inner_sql)
-{
- $this->date_field = $date_field;
- $this->inner_sql = $inner_sql;
-}
-
-//--------------------------------------------------------- private members ---
-/**
- * Creates a calendar navigation bar.
- * @param string url_base - links start with this root
- * @param array items - hash of items to put in the bar (e.g. 2005,2006)
- * @param array selected_item - item currently selected (e.g. 2005)
- * @param string class_prefix - html class attribute prefix for span elements
- * @param bool allow_any - adds any to the end of the bar
- * @param array labels - optional labels for items (e.g. Jan,Feb,...)
- * @return string the navigation bar
- */
-function get_nav_bar_from_items($url_base, $items, $selected_item,
- $class_prefix, $allow_any, $labels=null)
-{
- $nav_bar='';
- foreach ($items as $item => $nb_images)
- {
- $label = $item;
- if (isset($labels[$item]))
- {
- $label = $labels[$item];
- }
- if ( isset($selected_item) and $item==$selected_item )
- {
- $nav_bar .= '<span class="'.$class_prefix.'Sel">';
- $nav_bar .= $label;
- }
- else
- {
- $nav_bar .= '<span class="'.$class_prefix.'">';
- $url = $url_base . $item;
- $nav_bar .= '<a href="'.$url.'">';
- $nav_bar .= $label;
- $nav_bar .= '</a>';
- }
- if ($nb_images>0)
- {
- $nav_bar .= '('.$nb_images.')';
- }
- $nav_bar.= '</span>';
- }
-
- if ($allow_any and count($items)>1 )
- {
- $label = l10n('calendar_any');
- if ( isset($selected_item) and 'any'==$selected_item )
- {
- $nav_bar .= '<span class="'.$class_prefix.'Sel">';
- $nav_bar .= $label;
- }
- else
- {
- $nav_bar .= '<span class="'.$class_prefix.'">';
- $url = $url_base . 'any';
- $nav_bar .= '<a href="'.$url.'">';
- $nav_bar .= $label;
- $nav_bar .= '</a>';
- }
- $nav_bar.= '</span>';
- }
- return $nav_bar;
-}
-
-
-/**
- * Creates a calendar navigation bar for a given level.
- * @param string view_type - list or calendar (e.g. 'l' or 'c')
- * @param array requested - array of current selected elements (e.g. 2005,10)
- * @param string sql_func - YEAR/MONTH/DAY/WEEK/DAYOFWEEK ...
- * @param string sql_offset - (e.g. +1 for WEEK - first in year is 1)
- * @param array labels - optional labels to show in the navigation bar
- * @return void
- */
-function build_nav_bar($view_type, $requested, $level, $sql_func,
- $sql_offset='', $labels=null)
-{
- global $template;
- $query = 'SELECT DISTINCT('.$sql_func.'('.$this->date_field.')'.$sql_offset
- .') as period';
- $query.= $this->inner_sql;
- $query.= $this->get_date_where($requested, $level);
- $query.= '
- GROUP BY period';
-
- $level_items=array();
- $result = pwg_query($query);
- while ($row = mysql_fetch_array($result))
- {
- $level_items[$row['period']] = 0;
- }
-
- $url_base = $this->url_base;
- $url_base .= $view_type.'-';
- for ($i=0; $i<$level; $i++)
- {
- if (isset($requested[$i]))
- {
- $url_base .= $requested[$i].'-';
- }
- }
-
- $nav_bar = $this->get_nav_bar_from_items( $url_base, $level_items,
- $requested[$level], 'cal', true, $labels);
-
- $template->assign_block_vars( 'calendar.navbar',
- array( 'BAR' => $nav_bar)
- );
-}
-}
-
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery |
+// | Copyright (C) 2003-2006 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | branch : BSF (Best So Far)
+// | file : $RCSfile$
+// | last update : $Date: 2006-01-27 02:11:43 +0100 (ven, 27 jan 2006) $
+// | last modifier : $Author: rvelices $
+// | revision : $Revision: 1014 $
+// +-----------------------------------------------------------------------+
+// | 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. |
+// +-----------------------------------------------------------------------+
+
+/**
+ * Base class for monthly and weekly calendar styles
+ */
+class CalendarBase
+{
+ // db column on which this calendar works
+ var $date_field;
+ // used for queries (INNER JOIN or normal)
+ var $inner_sql;
+ // base url used when generating html links
+ var $url_base;
+
+ function get_date_where()
+ {
+ die("get_date_where not extended");
+ }
+
+ /**
+ * Initialize the calendar
+ * @param string date_field db column on which this calendar works
+ * @param string inner_sql used for queries (INNER JOIN or normal)
+ */
+ function initialize($date_field, $inner_sql)
+ {
+ $this->date_field = $date_field;
+ $this->inner_sql = $inner_sql;
+ }
+
+//--------------------------------------------------------- private members ---
+
+ /**
+ * Creates a calendar navigation bar.
+ *
+ * @param string url_base - links start with this root
+ * @param array items - hash of items to put in the bar (e.g. 2005,2006)
+ * @param array selected_item - item currently selected (e.g. 2005)
+ * @param string class_prefix - html class attribute prefix for span elements
+ * @param bool allow_any - adds any to the end of the bar
+ * @param array labels - optional labels for items (e.g. Jan,Feb,...)
+ * @return string the navigation bar
+ */
+ function get_nav_bar_from_items($url_base, $items, $selected_item,
+ $class_prefix, $allow_any, $labels=null)
+ {
+ $nav_bar = '';
+
+ foreach ($items as $item => $nb_images)
+ {
+ $label = $item;
+ if (isset($labels[$item]))
+ {
+ $label = $labels[$item];
+ }
+ if (isset($selected_item) and $item == $selected_item)
+ {
+ $nav_bar .= '<span class="'.$class_prefix.'Sel">';
+ $nav_bar .= $label;
+ }
+ else
+ {
+ $nav_bar .= '<span class="'.$class_prefix.'">';
+ $url = $url_base . $item;
+ $nav_bar .= '<a href="'.$url.'">';
+ $nav_bar .= $label;
+ $nav_bar .= '</a>';
+ }
+ if ($nb_images > 0)
+ {
+ $nav_bar .= '('.$nb_images.')';
+ }
+ $nav_bar.= '</span>';
+ }
+
+ if ($allow_any and count($items) > 1)
+ {
+ $label = l10n('calendar_any');
+ if (isset($selected_item) and 'any' == $selected_item)
+ {
+ $nav_bar .= '<span class="'.$class_prefix.'Sel">';
+ $nav_bar .= $label;
+ }
+ else
+ {
+ $nav_bar .= '<span class="'.$class_prefix.'">';
+ $url = $url_base . 'any';
+ $nav_bar .= '<a href="'.$url.'">';
+ $nav_bar .= $label;
+ $nav_bar .= '</a>';
+ }
+ $nav_bar.= '</span>';
+ }
+ return $nav_bar;
+ }
+
+ /**
+ * Creates a calendar navigation bar for a given level.
+ *
+ * @param string view_type - list or calendar (e.g. 'l' or 'c')
+ * @param array requested - array of current selected elements (e.g. 2005,10)
+ * @param string sql_func - YEAR/MONTH/DAY/WEEK/DAYOFWEEK ...
+ * @param string sql_offset - (e.g. +1 for WEEK - first in year is 1)
+ * @param array labels - optional labels to show in the navigation bar
+ * @return void
+ */
+ function build_nav_bar($view_type, $requested, $level, $sql_func,
+ $sql_offset='', $labels=null)
+ {
+ global $template;
+
+ $query = '
+SELECT DISTINCT('.$sql_func.'('.$this->date_field.')'.$sql_offset
+ .') as period';
+ $query.= $this->inner_sql;
+ $query.= $this->get_date_where($requested, $level);
+ $query.= '
+ GROUP BY period
+;';
+
+ $level_items = array();
+ $result = pwg_query($query);
+ while ($row = mysql_fetch_array($result))
+ {
+ $level_items[$row['period']] = 0;
+ }
+
+ $url_base = $this->url_base;
+ $url_base .= $view_type.'-';
+ for ($i=0; $i<$level; $i++)
+ {
+ if (isset($requested[$i]))
+ {
+ $url_base .= $requested[$i].'-';
+ }
+ }
+
+ $nav_bar = $this->get_nav_bar_from_items(
+ $url_base,
+ $level_items,
+ $requested[$level],
+ 'cal',
+ true,
+ $labels
+ );
+
+ $template->assign_block_vars(
+ 'calendar.navbar',
+ array(
+ 'BAR' => $nav_bar
+ )
+ );
+ }
+}
?> \ No newline at end of file