mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-08 00:54:15 +01:00
Now using ithearts holidaycalc class.
This commit is contained in:
parent
a16f958a22
commit
cb59dd20f7
@ -149,65 +149,6 @@ class calendar_holiday
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function calculate_date($holiday,&$i)
|
|
||||||
{
|
|
||||||
global $phpgw;
|
|
||||||
|
|
||||||
if($holiday['day'] == 0 && $holiday['dow'] != 0 && $holiday['occurence'] != 0)
|
|
||||||
{
|
|
||||||
if($holiday['occurence'] != 99)
|
|
||||||
{
|
|
||||||
$dow = $this->datetime->day_of_week($this->year,$holiday['month'],1);
|
|
||||||
$day = (7 * $holiday['occurence'] - 6 + ($holiday['dow'] - $dow) % 7);
|
|
||||||
$day += ($day < 1 ? 7 : 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$ld = $this->datetime->days_in_month($holiday['month'],$this->year);
|
|
||||||
$dow = $this->datetime->day_of_week($this->year,$holiday['month'],$ld);
|
|
||||||
$day = $ld - ($dow - $holiday['dow']) % 7 ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$day = $holiday['day'];
|
|
||||||
if($holiday['observance_rule'] == True)
|
|
||||||
{
|
|
||||||
$dow = $this->datetime->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->datetime->tz_offset;
|
|
||||||
$this->holidays[$i]['obervance_rule'] = 0;
|
|
||||||
// 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->datetime->tz_offset;
|
|
||||||
$this->holidays[$i]['obervance_rule'] = 0;
|
|
||||||
// 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->datetime->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";
|
|
||||||
return $datetime;
|
|
||||||
}
|
|
||||||
|
|
||||||
function read_holiday()
|
function read_holiday()
|
||||||
{
|
{
|
||||||
global $phpgw;
|
global $phpgw;
|
||||||
@ -222,6 +163,7 @@ class calendar_holiday
|
|||||||
$this->db->query($sql,__LINE__,__FILE__);
|
$this->db->query($sql,__LINE__,__FILE__);
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
$holidaycalc = CreateObject('calendar.holidaycalc');
|
||||||
while($this->db->next_record())
|
while($this->db->next_record())
|
||||||
{
|
{
|
||||||
$this->index[$this->db->f('hol_id')] = $i;
|
$this->index[$this->db->f('hol_id')] = $i;
|
||||||
@ -248,7 +190,7 @@ class calendar_holiday
|
|||||||
$this->holidays[$i]['owner'] = 'user';
|
$this->holidays[$i]['owner'] = 'user';
|
||||||
}
|
}
|
||||||
$c = $i;
|
$c = $i;
|
||||||
$this->holidays[$i]['date'] = $this->calculate_date($this->holidays[$i],$c);
|
$this->holidays[$i]['date'] = $holidaycalc->calculate_date($this->holidays[$i], $this->holidays, $this->year, $this->datetime, $c);
|
||||||
if($c != $i)
|
if($c != $i)
|
||||||
{
|
{
|
||||||
$i = $c;
|
$i = $c;
|
||||||
|
26
calendar/inc/class.holidaycalc.inc.php
Executable file
26
calendar/inc/class.holidaycalc.inc.php
Executable file
@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
/**************************************************************************\
|
||||||
|
* phpGroupWare - holidaycalc *
|
||||||
|
* http://www.phpgroupware.org *
|
||||||
|
* Based on Yoshihiro Kamimura <your@itheart.com> *
|
||||||
|
* http://www.itheart.com *
|
||||||
|
* -------------------------------------------- *
|
||||||
|
* 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; either version 2 of the License, or (at your *
|
||||||
|
* option) any later version. *
|
||||||
|
\**************************************************************************/
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
if (empty($phpgw_info['user']['preferences']['calendar']['locale']))
|
||||||
|
{
|
||||||
|
$rule = 'EN';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$rule = $phpgw_info['user']['preferences']['calendar']['locale'];
|
||||||
|
}
|
||||||
|
|
||||||
|
include(PHPGW_INCLUDE_ROOT.'/calendar/inc/class.holidaycalc_'.$rule.'.inc.php');
|
||||||
|
?>
|
105
calendar/inc/class.holidaycalc_JP.inc.php
Executable file
105
calendar/inc/class.holidaycalc_JP.inc.php
Executable file
@ -0,0 +1,105 @@
|
|||||||
|
<?php
|
||||||
|
/**************************************************************************\
|
||||||
|
* phpGroupWare - holidaycalc_JP *
|
||||||
|
* http://www.phpgroupware.org *
|
||||||
|
* Based on Yoshihiro Kamimura <your@itheart.com> *
|
||||||
|
* http://www.itheart.com *
|
||||||
|
* -------------------------------------------- *
|
||||||
|
* 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; either version 2 of the License, or (at your *
|
||||||
|
* option) any later version. *
|
||||||
|
\**************************************************************************/
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
class holidaycalc {
|
||||||
|
|
||||||
|
function calculate_date($holiday, &$holidays, $year, $datetime, &$i)
|
||||||
|
{
|
||||||
|
|
||||||
|
if($holiday['day'] == 0 && $holiday['dow'] != 0 && $holiday['occurence'] != 0)
|
||||||
|
{
|
||||||
|
// for Coming of Age Day and Health and Sports Day
|
||||||
|
// Happy monday law.
|
||||||
|
if ($year >= 2000)
|
||||||
|
{
|
||||||
|
$dow = $datetime->day_of_week($year, $holiday['month'], 1);
|
||||||
|
$dayshift = (($holiday['dow'] + 7) - $dow) % 7;
|
||||||
|
$day = ($holiday['occurence'] - 1) * 7 + $dayshift + 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// non Happy monday law.
|
||||||
|
if ($holiday['month'] == 1)
|
||||||
|
{
|
||||||
|
$day = 15;
|
||||||
|
}
|
||||||
|
elseif ($holiday['month'] == 10)
|
||||||
|
{
|
||||||
|
$day = 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif ($holiday['day'] == 0 && $holiday['dow'] == 0 && $holiday['occurence'] == 0)
|
||||||
|
{
|
||||||
|
// For the next generation.
|
||||||
|
// over 2151, please set $factor...
|
||||||
|
if ($holiday['month'] == 3)
|
||||||
|
{
|
||||||
|
// for Vernal Equinox
|
||||||
|
if ($year >= 1980 && $year <= 2099)
|
||||||
|
{
|
||||||
|
$factor = 20.8431;
|
||||||
|
}
|
||||||
|
elseif ($year >= 2100 && $year <= 2150)
|
||||||
|
{
|
||||||
|
$factor = 21.851;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif ($holiday['month'] == 9)
|
||||||
|
{
|
||||||
|
// for Autumnal Equinox
|
||||||
|
if ($year >= 1980 && $year <= 2099)
|
||||||
|
{
|
||||||
|
$factor = 23.2488;
|
||||||
|
}
|
||||||
|
elseif ($year >= 2100 && $year <= 2150)
|
||||||
|
{
|
||||||
|
$factor = 24.2488;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$day = (int)($factor + 0.242194 * ($year - 1980)
|
||||||
|
- (int)(($year - 1980) / 4));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// normal holiday
|
||||||
|
$day = $holiday['day'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if($holiday['observance_rule'] == True)
|
||||||
|
{
|
||||||
|
$dow = $datetime->day_of_week($year,$holiday['month'],$day);
|
||||||
|
// This now calulates Observed holidays and creates a new entry for them.
|
||||||
|
if($dow == 0)
|
||||||
|
{
|
||||||
|
$i++;
|
||||||
|
$holidays[$i]['locale'] = $holiday['locale'].' (Observed)';
|
||||||
|
$holidays[$i]['name'] = lang('overlap holiday');
|
||||||
|
$holidays[$i]['day'] = $holiday['day'] + 1;
|
||||||
|
$holidays[$i]['month'] = $holiday['month'];
|
||||||
|
$holidays[$i]['occurence'] = $holiday['occurence'];
|
||||||
|
$holidays[$i]['dow'] = $holiday['dow'];
|
||||||
|
$holidays[$i]['date'] = mktime(0,0,0,$holiday['month'],$day+1,$year) - $datetime->tz_offset;
|
||||||
|
$holidays[$i]['obervance_rule'] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$date = mktime(0,0,0,$holiday['month'],$day,$year) - $datetime->tz_offset;
|
||||||
|
|
||||||
|
return $date;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
73
calendar/inc/class.holidaycalc_US.inc.php
Executable file
73
calendar/inc/class.holidaycalc_US.inc.php
Executable file
@ -0,0 +1,73 @@
|
|||||||
|
<?php
|
||||||
|
/**************************************************************************\
|
||||||
|
* phpGroupWare - holidaycalc_US *
|
||||||
|
* http://www.phpgroupware.org *
|
||||||
|
* Based on Yoshihiro Kamimura <your@itheart.com> *
|
||||||
|
* http://www.itheart.com *
|
||||||
|
* -------------------------------------------- *
|
||||||
|
* 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; either version 2 of the License, or (at your *
|
||||||
|
* option) any later version. *
|
||||||
|
\**************************************************************************/
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
class holidaycalc {
|
||||||
|
|
||||||
|
function calculate_date($holiday, &$holidays, $year, $datetime, &$i)
|
||||||
|
{
|
||||||
|
if($holiday['day'] == 0 && $holiday['dow'] != 0 && $holiday['occurence'] != 0)
|
||||||
|
{
|
||||||
|
if($holiday['occurence'] != 99)
|
||||||
|
{
|
||||||
|
$dow = $datetime->day_of_week($year,$holiday['month'],1);
|
||||||
|
$day = (7 * $holiday['occurence'] - 6 + ($holiday['dow'] - $dow) % 7);
|
||||||
|
$day += ($day < 1 ? 7 : 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$ld = $datetime->days_in_month($holiday['month'],$this->year);
|
||||||
|
$dow = $datetime->day_of_week($year,$holiday['month'],$ld);
|
||||||
|
$day = $ld - ($dow - $holiday['dow']) % 7 ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$day = $holiday['day'];
|
||||||
|
if($holiday['observance_rule'] == True)
|
||||||
|
{
|
||||||
|
$dow = $datetime->day_of_week($year,$holiday['month'],$day);
|
||||||
|
// This now calulates Observed holidays and creates a new entry for them.
|
||||||
|
if($dow == 0)
|
||||||
|
{
|
||||||
|
$i++;
|
||||||
|
$holidays[$i]['locale'] = $holiday['locale'].' (Observed)';
|
||||||
|
$holidays[$i]['name'] = $holiday['name'];
|
||||||
|
$holidays[$i]['day'] = $holiday['day'] + 1;
|
||||||
|
$holidays[$i]['month'] = $holiday['month'];
|
||||||
|
$holidays[$i]['occurence'] = $holiday['occurence'];
|
||||||
|
$holidays[$i]['dow'] = $holiday['dow'];
|
||||||
|
$holidays[$i]['date'] = mktime(0,0,0,$holiday['month'],$day+1,$year) - $datetime->tz_offset;
|
||||||
|
$holidays[$i]['obervance_rule'] = 0;
|
||||||
|
}
|
||||||
|
elseif($dow == 6)
|
||||||
|
{
|
||||||
|
$i++;
|
||||||
|
$holidays[$i]['locale'] = $holiday['locale'].' (Observed)';
|
||||||
|
$holidays[$i]['name'] = $holiday['name'];
|
||||||
|
$holidays[$i]['day'] = $holiday['day'] - 1;
|
||||||
|
$holidays[$i]['month'] = $holiday['month'];
|
||||||
|
$holidays[$i]['occurence'] = $holiday['occurence'];
|
||||||
|
$holidays[$i]['dow'] = $holiday['dow'];
|
||||||
|
$holidays[$i]['date'] = mktime(0,0,0,$holiday['month'],$day-1,$year) - $datetime->tz_offset;
|
||||||
|
$holidays[$i]['obervance_rule'] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$date = mktime(0,0,0,$holiday['month'],$day,$year) - $datetime->tz_offset;
|
||||||
|
|
||||||
|
return $date;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
Loading…
Reference in New Issue
Block a user