diff --git a/calendar/inc/class.calendar_holiday.inc.php b/calendar/inc/class.calendar_holiday.inc.php
index 105318f756..11fcbaca5e 100755
--- a/calendar/inc/class.calendar_holiday.inc.php
+++ b/calendar/inc/class.calendar_holiday.inc.php
@@ -26,15 +26,12 @@ class calendar_holiday
global $phpgw, $phpgw_info;
$this->db = $phpgw->db;
-// $this->cal = CreateObject('calendar.calendar');
-// $phpgw_info['user']['preferences']['calendar']['locale'] = 'US';
$this->users['user'] = $phpgw_info['user']['preferences']['calendar']['locale'];
$owner_id = get_account_id($owner);
if($owner_id != $phpgw_info['user']['account_id'])
{
$owner_pref = CreateObject('phpgwapi.preferences',$owner_id);
$owner_prefs = $owner_pref->read_repository();
-// $owner_prefs['calendar']['locale'] = 'UK';
$this->users['owner'] = $owner_prefs['calendar']['locale'];
}
if($phpgw_info['server']['auto_load_holidays'] == True)
@@ -113,7 +110,7 @@ class calendar_holiday
}
}
- function calculate_date($holiday)
+ function calculate_date($holiday,&$i)
{
global $phpgw;
@@ -134,6 +131,32 @@ class calendar_holiday
else
{
$day = $holiday['day'];
+ $dow = $phpgw->calendar->day_of_week($this->year,$holiday['month'],$day);
+ // This now calulates Observed holidays and creates a new entry for them.
+ if($dow == 0)
+ {
+ $i++;
+ $this->holidays[$i]['locale'] = $holiday['locale'].' (Observed)';
+ $this->holidays[$i]['name'] = $holiday['name'];
+ $this->holidays[$i]['day'] = $holiday['day'] + 1;
+ $this->holidays[$i]['month'] = $holiday['month'];
+ $this->holidays[$i]['occurence'] = $holiday['occurence'];
+ $this->holidays[$i]['dow'] = $holiday['dow'];
+ $this->holidays[$i]['date'] = mktime(0,0,0,$holiday['month'],$day+1,$this->year) - $this->tz_offset;
+// echo 'Calculating for year('.$this->year.') month('.$this->holidays[$i]['month'].') dow('.$this->holidays[$i]['dow'].') occurence('.$this->holidays[$i]['occurence'].') datetime('.$this->holidays[$i]['date'].') DATE('.date('Y.m.d H:i:s',$this->holidays[$i]['date']).')
'."\n";
+ }
+ elseif($dow == 6)
+ {
+ $i++;
+ $this->holidays[$i]['locale'] = $holiday['locale'].' (Observed)';
+ $this->holidays[$i]['name'] = $holiday['name'];
+ $this->holidays[$i]['day'] = $holiday['day'] - 1;
+ $this->holidays[$i]['month'] = $holiday['month'];
+ $this->holidays[$i]['occurence'] = $holiday['occurence'];
+ $this->holidays[$i]['dow'] = $holiday['dow'];
+ $this->holidays[$i]['date'] = mktime(0,0,0,$holiday['month'],$day-1,$this->year) - $this->tz_offset;
+// echo 'Calculating for year('.$this->year.') month('.$this->holidays[$i]['month'].') dow('.$this->holidays[$i]['dow'].') occurence('.$this->holidays[$i]['occurence'].') datetime('.$this->holidays[$i]['date'].') DATE('.date('Y.m.d H:i:s',$this->holidays[$i]['date']).')
'."\n";
+ }
}
$datetime = mktime(0,0,0,$holiday['month'],$day,$this->year) - $this->tz_offset;
// echo 'Calculating for year('.$this->year.') month('.$holiday['month'].') dow('.$holiday['dow'].') occurence('.$holiday['occurence'].') datetime('.$datetime.') DATE('.date('Y.m.d H:i:s',$datetime).')
'."\n";
@@ -144,24 +167,22 @@ class calendar_holiday
{
global $phpgw;
- $this->year = intval($phpgw->calendar->today['year']);
+ $this->year = intval($phpgw->calendar->tempyear);
$this->tz_offset = intval($phpgw->calendar->tz_offset);
$sql = $this->build_holiday_query();
$this->holidays = Null;
$this->db->query($sql,__LINE__,__FILE__);
- $i = -1;
+ $i = 0;
while($this->db->next_record())
{
- $i++;
$this->holidays[$i]['locale'] = $this->db->f('locale');
$this->holidays[$i]['name'] = $phpgw->strip_html($this->db->f('name'));
$this->holidays[$i]['day'] = intval($this->db->f('mday'));
$this->holidays[$i]['month'] = intval($this->db->f('month_num'));
$this->holidays[$i]['occurence'] = intval($this->db->f('occurence'));
$this->holidays[$i]['dow'] = intval($this->db->f('dow'));
- $this->holidays[$i]['date'] = $this->calculate_date($this->holidays[$i]);
if(count($find_locale) == 2 && $find_locale[0] != $find_locale[1])
{
if($this->holidays[$i]['locale'] == $find_locale[1])
@@ -177,6 +198,13 @@ class calendar_holiday
{
$this->holidays[$i]['owner'] = 'user';
}
+ $c = $i;
+ $this->holidays[$i]['date'] = $this->calculate_date($this->holidays[$i],$c);
+ if($c != $i)
+ {
+ $i = $c;
+ }
+ $i++;
}
$this->holidays = $this->sort_by_date($this->holidays);
return $this->holidays;
diff --git a/calendar/inc/functions.inc.php b/calendar/inc/functions.inc.php
index 1e2249c472..1d128541ab 100755
--- a/calendar/inc/functions.inc.php
+++ b/calendar/inc/functions.inc.php
@@ -75,7 +75,6 @@
}
$phpgw->calendar = CreateObject('calendar.calendar',$parameters);
- $phpgw->calendar->holidays->read_holiday();
if (isset($date) && strlen($date) > 0)
{
@@ -114,7 +113,9 @@
}
- $phpgw->calendar->tempyear = $thisyear;
- $phpgw->calendar->tempmonth = $thismonth;
- $phpgw->calendar->tempday = $thisday;
+ $phpgw->calendar->tempyear = $thisyear;
+ $phpgw->calendar->tempmonth = $thismonth;
+ $phpgw->calendar->tempday = $thisday;
+
+ $phpgw->calendar->holidays->read_holiday();
?>
diff --git a/calendar/setup/holidays.CA b/calendar/setup/holidays.CA
new file mode 100755
index 0000000000..f807ce2458
--- /dev/null
+++ b/calendar/setup/holidays.CA
@@ -0,0 +1,6 @@
+CA Quebec Civic Holiday 3 1 0 0
+CA Canadian Civic Holiday 0 8 1 1
+CA Rememberence Day 11 11 0 0
+CA Christmas Day 25 12 0 0
+CA Boxing Day 26 12 0 0
+
diff --git a/calendar/setup/holidays.US b/calendar/setup/holidays.US
index 51abdfac27..10bb423942 100755
--- a/calendar/setup/holidays.US
+++ b/calendar/setup/holidays.US
@@ -1,6 +1,7 @@
US New Years 1 1 0 0
US Martin Luther King's Birthday 0 1 3 1
US Inaugeration Day 20 1 0 0
+US Presidents Day 0 2 3 1
US Armed Forces Day 0 5 3 6
US Memorial Day 0 5 99 1
US Flag Day 14 6 0 0