aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/calendar_base.class.php43
-rw-r--r--include/calendar_monthly.class.php18
-rw-r--r--include/calendar_weekly.class.php17
3 files changed, 46 insertions, 32 deletions
diff --git a/include/calendar_base.class.php b/include/calendar_base.class.php
index c71940830..6f403fb4d 100644
--- a/include/calendar_base.class.php
+++ b/include/calendar_base.class.php
@@ -65,8 +65,11 @@ class CalendarBase
for ($i=0; $i<count($this->date_components); $i++)
{
$res .= $conf['level_separator'];
-
- $url .= $this->date_components[$i].'-';
+ if ($i>0)
+ {
+ $url .= '-';
+ }
+ $url .= $this->date_components[$i];
if ( isset($this->date_components[$i+1]) )
{
$res .=
@@ -96,7 +99,7 @@ class CalendarBase
{
$label = $this->calendar_levels[$level]['labels'][$date_component];
}
- elseif ($date_component == 'any' )
+ elseif ('any' === $date_component )
{
$label = l10n('calendar_any');
}
@@ -112,14 +115,14 @@ class CalendarBase
$res = '';
for ($i=count($date_components)-1; $i>=0; $i--)
{
- if ($date_components[$i]!='any')
+ if ('any' !== $date_components[$i])
{
- $label = $date_components[$i];
- if (isset($this->calendar_levels[$i]['labels'][$date_components[$i]]))
+ $label = $this->get_date_component_label($i, $date_components[$i] );
+ if ( $res!='' )
{
- $label = $this->calendar_levels[$i]['labels'][$date_components[$i]];
+ $res .= ' ';
}
- $res .= $label.' ';
+ $res .= $label;
}
}
return $res;
@@ -192,7 +195,7 @@ class CalendarBase
if ($conf['calendar_show_any'] and $show_any and count($items) > 1)
{
$label = l10n('calendar_any');
- if (isset($selected_item) and 'any' == $selected_item)
+ if (isset($selected_item) and 'any' === $selected_item)
{
$nav_bar .= '<span class="'.$class_prefix.'Sel">';
$nav_bar .= $label;
@@ -289,37 +292,41 @@ SELECT DISTINCT('.$this->calendar_levels[$level]['sql']
$prev = $next =null;
if ( empty($this->date_components) )
return;
-
- $current = '';
$query = 'SELECT CONCAT_WS("-"';
for ($i=0; $i<count($this->date_components); $i++)
{
- if ( $this->date_components[$i] != 'any' )
+ if ( 'any' === $this->date_components[$i] )
{
- $query .= ','.$this->calendar_levels[$i]['sql'];
+ $query .= ','.'"any"';
}
else
{
- $query .= ','.'"any"';
+ $query .= ','.$this->calendar_levels[$i]['sql'];
}
- $current .= '-' . $this->date_components[$i];
}
- $current = substr($current, 1);
+ $current = implode('-', $this->date_components );
$query.=') as period' . $this->inner_sql .'
AND ' . $this->date_field . ' IS NOT NULL
GROUP BY period';
+
$upper_items = array_from_query( $query, 'period');
+
usort($upper_items, 'version_compare');
- //echo ('<pre>'. var_export($upper_items, true) . '</pre>');
$upper_items_rank = array_flip($upper_items);
+ if ( !isset($upper_items_rank[$current]) )
+ {
+ array_push($upper_items, $current);// just in case (external link)
+ usort($upper_items, 'version_compare');
+ $upper_items_rank = array_flip($upper_items);
+ }
$current_rank = $upper_items_rank[$current];
+
if (!$this->has_nav_bar and
($current_rank>0 or $current_rank < count($upper_items)-1 ) )
{
$template->assign_block_vars( 'calendar.navbar', array() );
}
-
if ( $current_rank>0 )
{ // has previous
$prev = $upper_items[$current_rank-1];
diff --git a/include/calendar_monthly.class.php b/include/calendar_monthly.class.php
index 2bced250d..9a43b0ecd 100644
--- a/include/calendar_monthly.class.php
+++ b/include/calendar_monthly.class.php
@@ -139,15 +139,15 @@ function get_date_where($max_levels=3)
array_pop($date);
}
$res = '';
- if (isset($date[CYEAR]) and $date[CYEAR]!='any')
+ if (isset($date[CYEAR]) and $date[CYEAR]!=='any')
{
$b = $date[CYEAR] . '-';
$e = $date[CYEAR] . '-';
- if (isset($date[CMONTH]) and $date[CMONTH]!='any')
+ if (isset($date[CMONTH]) and $date[CMONTH]!=='any')
{
$b .= $date[CMONTH] . '-';
$e .= $date[CMONTH] . '-';
- if (isset($date[CDAY]) and $date[CDAY]!='any')
+ if (isset($date[CDAY]) and $date[CDAY]!=='any')
{
$b .= $date[CDAY];
$e .= $date[CDAY];
@@ -162,11 +162,11 @@ function get_date_where($max_levels=3)
{
$b .= '01-01';
$e .= '12-31';
- if (isset($date[CMONTH]) and $date[CMONTH]!='any')
+ if (isset($date[CMONTH]) and $date[CMONTH]!=='any')
{
$res .= ' AND '.$this->calendar_levels[CMONTH]['sql'].'='.$date[CMONTH];
}
- if (isset($date[CDAY]) and $date[CDAY]!='any')
+ if (isset($date[CDAY]) and $date[CDAY]!=='any')
{
$res .= ' AND '.$this->calendar_levels[CDAY]['sql'].'='.$date[CDAY];
}
@@ -176,11 +176,11 @@ function get_date_where($max_levels=3)
else
{
$res = ' AND '.$this->date_field.' IS NOT NULL';
- if (isset($date[CMONTH]) and $date[CMONTH]!='any')
+ if (isset($date[CMONTH]) and $date[CMONTH]!=='any')
{
$res .= ' AND '.$this->calendar_levels[CMONTH]['sql'].'='.$date[CMONTH];
}
- if (isset($date[CDAY]) and $date[CDAY]!='any')
+ if (isset($date[CDAY]) and $date[CDAY]!=='any')
{
$res .= ' AND '.$this->calendar_levels[CDAY]['sql'].'='.$date[CDAY];
}
@@ -224,7 +224,8 @@ function build_global_calendar()
$query.= $this->inner_sql;
$query.= $this->get_date_where();
$query.= '
- GROUP BY period';
+ GROUP BY period
+ ORDER BY YEAR('.$this->date_field.') DESC';
$result = pwg_query($query);
$items=array();
@@ -290,7 +291,6 @@ function build_year_calendar()
$items[$m]['children'][$d] = $row['count'];
$items[$m]['nb_images'] += $row['count'];
}
- //echo ('<pre>'. var_export($items, true) . '</pre>');
if (count($items)==1)
{ // only one month exists so bail out to month view
list($m) = array_keys($items);
diff --git a/include/calendar_weekly.class.php b/include/calendar_weekly.class.php
index 817acb1b0..023743693 100644
--- a/include/calendar_weekly.class.php
+++ b/include/calendar_weekly.class.php
@@ -46,6 +46,13 @@ class Calendar extends CalendarBase
{
parent::initialize($date_field, $inner_sql, $date_components);
global $lang;
+ $week_no_labels=array();
+ for ($i=1; $i<=53; $i++)
+ {
+ $week_no_labels[$i] = sprintf( l10n("Week %d"), $i);
+ //$week_no_labels[$i] = $i;
+ }
+
$this->calendar_levels = array(
array(
'sql'=> 'YEAR('.$this->date_field.')',
@@ -53,7 +60,7 @@ class Calendar extends CalendarBase
),
array(
'sql'=> 'WEEK('.$this->date_field.')+1',
- 'labels' => null
+ 'labels' => $week_no_labels,
),
array(
'sql'=> 'DAYOFWEEK('.$this->date_field.')-1',
@@ -86,7 +93,7 @@ function generate_category_content($url_base, $view_type)
}
if ( count($this->date_components)==1 )
{
- $this->build_nav_bar(CWEEK); // week nav bar 1-53
+ $this->build_nav_bar(CWEEK, array()); // week nav bar 1-53
}
if ( count($this->date_components)==2 )
{
@@ -111,17 +118,17 @@ function get_date_where($max_levels=3)
array_pop($date);
}
$res = '';
- if (isset($date[CYEAR]) and $date[CYEAR]!='any')
+ if (isset($date[CYEAR]) and $date[CYEAR]!=='any')
{
$y = $date[CYEAR];
$res = " AND $this->date_field BETWEEN '$y-01-01' AND '$y-12-31 23:59:59'";
}
- if (isset($date[CWEEK]) and $date[CWEEK]!='any')
+ if (isset($date[CWEEK]) and $date[CWEEK]!=='any')
{
$res .= ' AND '.$this->calendar_levels[CWEEK]['sql'].'='.$date[CWEEK];
}
- if (isset($date[CDAY]) and $date[CDAY]!='any')
+ if (isset($date[CDAY]) and $date[CDAY]!=='any')
{
$res .= ' AND '.$this->calendar_levels[CDAY]['sql'].'='.$date[CDAY];
}