This now allows for following observance rules.

This commit is contained in:
skeeter 2001-05-03 02:28:26 +00:00
parent f1ac28bc71
commit d6e11dd04a
4 changed files with 48 additions and 12 deletions

View File

@ -26,15 +26,12 @@ class calendar_holiday
global $phpgw, $phpgw_info; global $phpgw, $phpgw_info;
$this->db = $phpgw->db; $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']; $this->users['user'] = $phpgw_info['user']['preferences']['calendar']['locale'];
$owner_id = get_account_id($owner); $owner_id = get_account_id($owner);
if($owner_id != $phpgw_info['user']['account_id']) if($owner_id != $phpgw_info['user']['account_id'])
{ {
$owner_pref = CreateObject('phpgwapi.preferences',$owner_id); $owner_pref = CreateObject('phpgwapi.preferences',$owner_id);
$owner_prefs = $owner_pref->read_repository(); $owner_prefs = $owner_pref->read_repository();
// $owner_prefs['calendar']['locale'] = 'UK';
$this->users['owner'] = $owner_prefs['calendar']['locale']; $this->users['owner'] = $owner_prefs['calendar']['locale'];
} }
if($phpgw_info['server']['auto_load_holidays'] == True) 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; global $phpgw;
@ -134,6 +131,32 @@ class calendar_holiday
else else
{ {
$day = $holiday['day']; $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']).')<br>'."\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']).')<br>'."\n";
}
} }
$datetime = mktime(0,0,0,$holiday['month'],$day,$this->year) - $this->tz_offset; $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).')<br>'."\n"; // 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).')<br>'."\n";
@ -144,24 +167,22 @@ class calendar_holiday
{ {
global $phpgw; global $phpgw;
$this->year = intval($phpgw->calendar->today['year']); $this->year = intval($phpgw->calendar->tempyear);
$this->tz_offset = intval($phpgw->calendar->tz_offset); $this->tz_offset = intval($phpgw->calendar->tz_offset);
$sql = $this->build_holiday_query(); $sql = $this->build_holiday_query();
$this->holidays = Null; $this->holidays = Null;
$this->db->query($sql,__LINE__,__FILE__); $this->db->query($sql,__LINE__,__FILE__);
$i = -1; $i = 0;
while($this->db->next_record()) while($this->db->next_record())
{ {
$i++;
$this->holidays[$i]['locale'] = $this->db->f('locale'); $this->holidays[$i]['locale'] = $this->db->f('locale');
$this->holidays[$i]['name'] = $phpgw->strip_html($this->db->f('name')); $this->holidays[$i]['name'] = $phpgw->strip_html($this->db->f('name'));
$this->holidays[$i]['day'] = intval($this->db->f('mday')); $this->holidays[$i]['day'] = intval($this->db->f('mday'));
$this->holidays[$i]['month'] = intval($this->db->f('month_num')); $this->holidays[$i]['month'] = intval($this->db->f('month_num'));
$this->holidays[$i]['occurence'] = intval($this->db->f('occurence')); $this->holidays[$i]['occurence'] = intval($this->db->f('occurence'));
$this->holidays[$i]['dow'] = intval($this->db->f('dow')); $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(count($find_locale) == 2 && $find_locale[0] != $find_locale[1])
{ {
if($this->holidays[$i]['locale'] == $find_locale[1]) if($this->holidays[$i]['locale'] == $find_locale[1])
@ -177,6 +198,13 @@ class calendar_holiday
{ {
$this->holidays[$i]['owner'] = 'user'; $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); $this->holidays = $this->sort_by_date($this->holidays);
return $this->holidays; return $this->holidays;

View File

@ -75,7 +75,6 @@
} }
$phpgw->calendar = CreateObject('calendar.calendar',$parameters); $phpgw->calendar = CreateObject('calendar.calendar',$parameters);
$phpgw->calendar->holidays->read_holiday();
if (isset($date) && strlen($date) > 0) if (isset($date) && strlen($date) > 0)
{ {
@ -117,4 +116,6 @@
$phpgw->calendar->tempyear = $thisyear; $phpgw->calendar->tempyear = $thisyear;
$phpgw->calendar->tempmonth = $thismonth; $phpgw->calendar->tempmonth = $thismonth;
$phpgw->calendar->tempday = $thisday; $phpgw->calendar->tempday = $thisday;
$phpgw->calendar->holidays->read_holiday();
?> ?>

6
calendar/setup/holidays.CA Executable file
View File

@ -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

View File

@ -1,6 +1,7 @@
US New Years 1 1 0 0 US New Years 1 1 0 0
US Martin Luther King's Birthday 0 1 3 1 US Martin Luther King's Birthday 0 1 3 1
US Inaugeration Day 20 1 0 0 US Inaugeration Day 20 1 0 0
US Presidents Day 0 2 3 1
US Armed Forces Day 0 5 3 6 US Armed Forces Day 0 5 3 6
US Memorial Day 0 5 99 1 US Memorial Day 0 5 99 1
US Flag Day 14 6 0 0 US Flag Day 14 6 0 0