From 9a7a232cef393a829e7e5088ceb5d145c2f942ed Mon Sep 17 00:00:00 2001 From: plegall Date: Thu, 23 Feb 2006 16:53:11 +0000 Subject: 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 --- include/calendar_base.class.php | 342 +++++++++++++++++++++------------------- 1 file changed, 178 insertions(+), 164 deletions(-) (limited to 'include/calendar_base.class.php') 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 @@ -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 .= ''; - $nav_bar .= $label; - } - else - { - $nav_bar .= ''; - $url = $url_base . $item; - $nav_bar .= ''; - $nav_bar .= $label; - $nav_bar .= ''; - } - if ($nb_images>0) - { - $nav_bar .= '('.$nb_images.')'; - } - $nav_bar.= ''; - } - - if ($allow_any and count($items)>1 ) - { - $label = l10n('calendar_any'); - if ( isset($selected_item) and 'any'==$selected_item ) - { - $nav_bar .= ''; - $nav_bar .= $label; - } - else - { - $nav_bar .= ''; - $url = $url_base . 'any'; - $nav_bar .= ''; - $nav_bar .= $label; - $nav_bar .= ''; - } - $nav_bar.= ''; - } - 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) - ); -} -} - +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 .= ''; + $nav_bar .= $label; + } + else + { + $nav_bar .= ''; + $url = $url_base . $item; + $nav_bar .= ''; + $nav_bar .= $label; + $nav_bar .= ''; + } + if ($nb_images > 0) + { + $nav_bar .= '('.$nb_images.')'; + } + $nav_bar.= ''; + } + + if ($allow_any and count($items) > 1) + { + $label = l10n('calendar_any'); + if (isset($selected_item) and 'any' == $selected_item) + { + $nav_bar .= ''; + $nav_bar .= $label; + } + else + { + $nav_bar .= ''; + $url = $url_base . 'any'; + $nav_bar .= ''; + $nav_bar .= $label; + $nav_bar .= ''; + } + $nav_bar.= ''; + } + 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 -- cgit v1.2.3