[ Index ] |
|
Code source de eGroupWare 1.2.106-2 |
1 <?php 2 /**************************************************************************\ 3 * eGroupWare - holidaycalc_JP * 4 * http://www.egroupware.org * 5 * Based on Yoshihiro Kamimura <your@itheart.com> * 6 * http://www.itheart.com * 7 * -------------------------------------------- * 8 * This program is free software; you can redistribute it and/or modify it * 9 * under the terms of the GNU General Public License as published by the * 10 * Free Software Foundation; either version 2 of the License, or (at your * 11 * option) any later version. * 12 \**************************************************************************/ 13 14 /* $Id: class.holidaycalc_JP.inc.php 22710 2006-10-23 05:02:00Z ralfbecker $ */ 15 16 /** 17 * Calculations for calendar JP holidays 18 * 19 * @package calendar 20 * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License 21 */ 22 class holidaycalc 23 { 24 function calculate_date($holiday, &$holidays, $year) 25 { 26 static $cached_month; 27 static $cached_day; 28 static $cached_observance_rule; 29 30 if ($holiday['day'] == 0 && $holiday['dow'] != 0 && $holiday['occurence'] != 0) 31 { 32 $dow = $GLOBALS['egw']->datetime->day_of_week($year, $holiday['month'], 1); 33 $dayshift = (($holiday['dow'] + 7) - $dow) % 7; 34 $day = ($holiday['occurence'] - 1) * 7 + $dayshift + 1; 35 36 // Happy monday law. 37 if ($holiday['month'] == 1) 38 { 39 if ($year < 2000) 40 { 41 $day = 15; 42 } 43 } 44 elseif ($holiday['month'] == 7) 45 { 46 if ($year < 2003) 47 { 48 $day = 20; 49 } 50 } 51 elseif ($holiday['month'] == 9) 52 { 53 if ($year < 2003) 54 { 55 $day = 15; 56 } 57 } 58 elseif ($holiday['month'] == 10) 59 { 60 if ($year < 2000) 61 { 62 $day = 10; 63 } 64 } 65 } 66 elseif ($holiday['day'] == 0 && $holiday['dow'] == 0 && $holiday['occurence'] == 0) 67 { 68 // For the next generation. 69 // over 2151, please set $factor... 70 if ($holiday['month'] == 3) 71 { 72 // for Vernal Equinox 73 if ($year >= 1980 && $year <= 2099) 74 { 75 $factor = 20.8431; 76 } 77 elseif ($year >= 2100 && $year <= 2150) 78 { 79 $factor = 21.851; 80 } 81 } 82 elseif ($holiday['month'] == 9) 83 { 84 // for Autumnal Equinox 85 if ($year >= 1980 && $year <= 2099) 86 { 87 $factor = 23.2488; 88 } 89 elseif ($year >= 2100 && $year <= 2150) 90 { 91 $factor = 24.2488; 92 } 93 } 94 95 $day = (int)($factor + 0.242194 * ($year - 1980) 96 - (int)(($year - 1980) / 4)); 97 } 98 else 99 { 100 // normal holiday 101 $day = $holiday['day']; 102 } 103 104 if ($year >= 1985 && $holiday['month'] == $cached_month && $day == $cached_day + 2 && $cached_observance_rule == True && $holiday['observance_rule'] == True) 105 { 106 $pdow = $GLOBALS['egw']->datetime->day_of_week($year,$holiday['month'],$day-1); 107 if ($pdow != 0) 108 { 109 $addcnt = count($holidays) + 1; 110 $holidays[$addcnt]['locale'] = $holiday['locale']; 111 if ($pdow == 1) 112 { 113 $holidays[$addcnt]['name'] = lang('overlap holiday'); 114 } 115 else 116 { 117 $holidays[$addcnt]['name'] = lang('people holiday'); 118 } 119 $holidays[$addcnt]['day'] = $day - 1; 120 $holidays[$addcnt]['month'] = $holiday['month']; 121 $holidays[$addcnt]['occurence'] = 0; 122 $holidays[$addcnt]['dow'] = 0; 123 $holidays[$addcnt]['date'] = mktime(0,0,0,$holiday['month'],$day-1,$year); 124 $holidays[$addcnt]['observance_rule'] = 0; 125 } 126 } 127 128 $cached_month = $holiday['month']; 129 $cached_day = $day; 130 $cached_observance_rule = $holiday['observance_rule']; 131 132 if ($year >= 1985 && $holiday['month'] == 5 && $day == 3) 133 { 134 ; 135 } 136 elseif ($holiday['observance_rule'] == True) 137 { 138 $dow = $GLOBALS['egw']->datetime->day_of_week($year,$holiday['month'],$day); 139 // This now calulates Observed holidays and creates a new entry for them. 140 if($dow == 0) 141 { 142 $addcnt = count($holidays) + 1; 143 $holidays[$addcnt]['locale'] = $holiday['locale']; 144 $holidays[$addcnt]['name'] = lang('overlap holiday'); 145 $holidays[$addcnt]['day'] = $day + 1; 146 $holidays[$addcnt]['month'] = $holiday['month']; 147 $holidays[$addcnt]['occurence'] = $holiday['occurence']; 148 $holidays[$addcnt]['dow'] = $holiday['dow']; 149 $holidays[$addcnt]['date'] = mktime(0,0,0,$holiday['month'],$day+1,$year); 150 $holidays[$addcnt]['observance_rule'] = 0; 151 } 152 } 153 154 $date = mktime(0,0,0,$holiday['month'],$day,$year); 155 156 return $date; 157 } 158 } 159 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 17:20:01 2007 | par Balluche grâce à PHPXref 0.7 |