📄 class.kalendar.php
字号:
<?
/**
* Title: Class_kalendar.php
* Date: 2005-21-06
*/
class Calendar {
var $vars;
var $varDay;
var $varMonth;
var $varYear;
var $varOsterTag;
var $varOsterMonat;
var $template;
function Calendar($day, $month, $year) {
$this->varDay = $day;
$this->varMonth = $month;
$this->varYear = $year;
if ($GLOBALS['lang']) {
$_tmp[] = "lang=".$GLOBALS['lang'];
}
if ($GLOBALS['country']) {
$_tmp[] = "country=".$GLOBALS['country'];
}
$this->ExtraURI = "&".implode("&", $_tmp);
}
function showTemplate($template,$td=array()) {
$monthNumber = date("n", mktime(0, 0, 0, $this->varMonth + 1, 0, $this->varYear));
$monthName = $GLOBALS['CONF'][$GLOBALS['lang']]['months'][$GLOBALS['INI']['months']][$monthNumber];
// weekday first and last
$lastMonthDay = date("d", mktime(0, 0, 0, $this->varMonth + 1, 0, $this->varYear));
$firstMonthWeekDay = date("w", mktime(0, 0, 0, $this->varMonth, 1, $this->varYear));
$firstMonthWeekDay = ($firstMonthWeekDay == 0) ? 7 : $firstMonthWeekDay;
$lastMonthWeekDay = date("w", mktime(0, 0, 0, $this->varMonth, $lastMonthDay, $this->varYear));
$lastMonthWeekDay = ($lastMonthWeekDay == 0) ? 7 : $lastMonthWeekDay;
// Week - Counter
$mothBeginWithWeek = date("W", mktime(0, 0, 0, $this->varMonth, 1, $this->varYear));
$mothBeginWithWeek = ($mothBeginWithWeek == 53 || $mothBeginWithWeek == 52) ? 0 : $mothBeginWithWeek;
$mothEndWithWeek = date("W", mktime(0, 0, 0, $this->varMonth, $lastMonthDay, $this->varYear));
$mothEndWithWeek = ($mothEndWithWeek == 1) ? 52 + 1 : $mothEndWithWeek;
$countWeek = $mothEndWithWeek - $mothBeginWithWeek +1;
// check Holidays
$holiday = $this->Feiertag();
$templ = new KalenderTemplate("kalender/template");
$templ->set_file("skin", $template);
// Toon kalender.
// Month-handling up/down.
if (($this->varMonth - 1) == 0) {
$monatBack = 12;
$jahrBack = $this->varYear - 1;
} else {
$monatBack = $this->varMonth - 1;
$jahrBack = $this->varYear;
}
if (($this->varMonth + 1) == 13) {
$monatNext = 1;
$jahrNext = $this->varYear + 1;
} else {
$monatNext = $this->varMonth + 1;
$jahrNext = $this->varYear;
}
$aux .= "<span><a href='".$PHP_SELF."?day=".$this->varDay."&month=1&year=".$jahrBack.$this->ExtraURI."'>|«</a></span> ";
$aux .= "<span><a href='".$PHP_SELF."?day=".$this->varDay."&month=".$monatBack."&year=".$jahrBack.$this->ExtraURI."'>«</a></span> ";
$aux .= "<span>".$monthName." ".$this->varYear."</span> ";
$aux .= "<span><a href='".$PHP_SELF."?day=".$this->varDay."&month=".$monatNext."&year=".$jahrNext.$this->ExtraURI."'>»</a></span> ";
$aux .= "<span><a href='".$PHP_SELF."?day=".$this->varDay."&month=12&year=".$jahrNext.$this->ExtraURI."'>»|</a></span> ";
$templ->set_var('month', $aux);
for ($i = 1; $i <= 7; $i ++) {
$templ->set_var('weekdays', $GLOBALS['CONF'][$GLOBALS['lang']]['weekdays'][$GLOBALS['INI']['weekdays']][$i]);
if ($i >= 6) {
$templ->set_var('classweekdays', $GLOBALS['INI']['stlyeclassdays']);
} else {
$templ->set_var('classweekdays', $GLOBALS['INI']['styleclassweekend']);
}
$templ->parse("WEEKDAYS", "WEEKDAYS", true);
}
$_day = 1;
for ($j = 1; $j <= $countWeek; $j ++) {
for ($ii = 1; $ii <= 7; $ii ++) {
$start="$monthNumber%2F$_day%2F$this->varYear";
$end="$monthNumber%2F".($_day+1)."%2F$this->varYear";
if(strlen($_day)==1) $_day='0'.$_day;
$files=$td[files][$_day];$users=$td[users][$_day];$reports=$td[reports][$_day];$pays=$td[pays][$_day];$gals=$td[gals][$_day];
$td_row = $files[num]!=0?"<a href='?admin=images&search=1&&img_field=f.time&img_func=%3E&img_values=$start&img_field2=f.time&img_func2=%3C&img_values2=$end'>$files[num] files</a><br>":"";
$td_row .= $reports[num]!=0?"<a href='?admin=report&search=1&&report_field=date&report_func=%3E&report_values=$start&report_field2=date&report_func2=%3C&report_values2=$end'>$reports[num] reports</a><br>":'';
$td_row .= $users[num]!=0?"<a href='?admin=user&search=1&&user_field=regdate&user_func=%3E&user_values=$start&user_field2=regdate&user_func2=%3C&user_values2=$end'>$users[num] users</a><br>":'';
$td_row .= $pays[num]!=0?"<a href='?admin=payment&search=1&&pay_field=payment_date&pay_func=%3E&pay_values=$start&pay_field2=payment_date&pay_func2=%3C&pay_values2=$end'>$pays[num] payments</a><br>":'';
$td_row = $td_row == ""?"":"<br>".$td_row;
if ($j == 1) {
if ($ii >= $firstMonthWeekDay) {
$templ->set_var('days', "<a href='".$PHP_SELF."?day=".$_day."&month=".$this->varMonth."&year=".$this->varYear.$this->ExtraURI."'>".$_day."</a>$td_row");
$_day ++;
} else {
$templ->set_var('days', ' ');
}
}
elseif ($j == $countWeek) {
if ($ii <= $lastMonthWeekDay) {
$templ->set_var('days', "<a href='".$PHP_SELF."?day=".$_day."&month=".$this->varMonth."&year=".$this->varYear.$this->ExtraURI."'>".$_day."</a>$td_row");
$_day ++;
} else {
$templ->set_var('days', ' ');
}
} else {
$templ->set_var('days', "<a href='".$PHP_SELF."?day=".$_day."&month=".$this->varMonth."&year=".$this->varYear.$this->ExtraURI."'>".$_day."</a>$td_row");
$_day ++;
}
if ($ii >= 6) {
$templ->set_var('_classdays', $GLOBALS['INI']['styleday']);
} else {
$templ->set_var('_classdays', $GLOBALS['INI']['styledayweekend']);
}
if ($_day == ($this->varDay + 1)) {
$templ->set_var('_classdays', $GLOBALS['INI']['styledayactiv']);
}
$templ->parse("DAYS", "DAYS", true);
}
$templ->parse("WEEK", "WEEK", true);
$templ->vars["/\{DAYS}/"] = "";
$templ->vars["/{DAYS}/"] = "";
}
// Holiday
if ($holiday) {
$templ->set_var('holiday', "<div ".$GLOBALS['INI']['styleholiday'].">".$holiday."</div>");
}
$templ->pparse('skin');
//print_r($templ);
}
function Feiertag() {
$tmp = $this->varMonth."-".$this->varDay;
if ($tmp == $this->Oster())
$_tmp = $GLOBALS['_LOCALLANG'][$GLOBALS['lang']]['eastersunday'];
elseif ($tmp == $this->OsterMontag()) $_tmp = $GLOBALS['_LOCALLANG'][$GLOBALS['lang']]['eastermonday'];
elseif ($tmp == $this->KarFreitag()) $_tmp = $GLOBALS['_LOCALLANG'][$GLOBALS['lang']]['goodfriday'];
elseif ($tmp == $this->HimmelFahrt()) $_tmp = $GLOBALS['_LOCALLANG'][$GLOBALS['lang']]['assumptionofmary'];
elseif ($tmp == $this->PfingstSonntag()) $_tmp = $GLOBALS['_LOCALLANG'][$GLOBALS['lang']]['pentecost'];
elseif ($tmp == $this->PfingstMontag()) $_tmp = $GLOBALS['_LOCALLANG'][$GLOBALS['lang']]['whitmonday'];
elseif ($tmp == $this->Fronleichnam()) $_tmp = $GLOBALS['_LOCALLANG'][$GLOBALS['lang']]['corpuschristi'];
else {
$_aux = $this->checkData();
$_tmp = $GLOBALS['_LOCALLANG'][$GLOBALS['lang']][$_aux];
}
return $_tmp;
}
function Oster() {
// Goldene Zahl
$Gz = (int) ($this->varYear % 19 + 1);
// Zahl des Jahrhunderts
$Jh = (int) ($this->varYear / 100 + 1);
// Anzahl ausgelassener Schaltjahre
$Schalt = (int) (((3 * $Jh) / 4) - 12);
// Korrektur des metonischen Zyklus
$Meton = (int) (((8 * $Jh) + 5) / 25 - 5);
// Sonntag
$Wotag = (int) (($this->varYear * 5) / 4 - $Schalt -10);
// Epact
$Epact = ((($Gz * 11) + 20 + $Meton - $Schalt) % 30);
If (($Epact == 25 && $Gz > 11) || $Epact == 24) {
$Epact = $Epact +1;
}
$OsterTag = 44 - $Epact;
If ($OsterTag < 21) {
$OsterTag = $OsterTag +30;
}
$OsterTag = $OsterTag +7 - (($Wotag + $OsterTag) % 7);
if ($OsterTag > 31) {
$Monat = 4;
$OsterTag = $OsterTag -31;
} else {
$Monat = 3;
}
$this->varOsterMonat = $Monat;
$this->varOsterTag = $OsterTag;
return $this->varOsterMonat."-".$this->varOsterTag;
}
function OsterMontag() {
$dates = date("z", mktime(0, 0, 0, $this->varOsterMonat, $this->varOsterTag, $this->varYear)) + 1;
return date("n-j", mktime(0, 0, 0, 1, 1, $this->varYear) + 60 * 60 * 24 * $dates);
}
function KarFreitag() {
$dates = date("z", mktime(0, 0, 0, $this->varOsterMonat, $this->varOsterTag, $this->varYear)) - 2;
return date("n-j", mktime(0, 0, 0, 1, 1, $this->varYear) + 60 * 60 * 24 * $dates);
}
function HimmelFahrt() {
$dates = date("z", mktime(0, 0, 0, $this->varOsterMonat, $this->varOsterTag, $this->varYear)) + 39;
return date("n-j", mktime(0, 0, 0, 1, 1, $this->varYear) + 60 * 60 * 24 * $dates);
}
function PfingstSonntag() {
$dates = date("z", mktime(0, 0, 0, $this->varOsterMonat, $this->varOsterTag, $this->varYear)) + 49;
return date("n-j", mktime(0, 0, 0, 1, 1, $this->varYear) + 60 * 60 * 24 * $dates);
}
function PfingstMontag() {
$dates = date("z", mktime(0, 0, 0, $this->varOsterMonat, $this->varOsterTag, $this->varYear)) + 50;
return date("n-j", mktime(0, 0, 0, 1, 1, $this->varYear) + 60 * 60 * 24 * $dates);
}
function Fronleichnam() {
$dates = date("z", mktime(0, 0, 0, $this->varOsterMonat, $this->varOsterTag, $this->varYear)) + 60;
return date("n-j", mktime(0, 0, 0, 1, 1, $this->varYear) + 60 * 60 * 24 * $dates);
}
function checkData() {
$this->vars = $this->loadInit();
if (array_key_exists($this->varDay.".".$this->varMonth, $this->vars['universal'])) {
return $this->vars['universal'][$this->varDay.".".$this->varMonth];
}
elseif (array_key_exists($this->varDay.".".$this->varMonth, $this->vars['country'])) {
return $this->vars['country'][$this->varDay.".".$this->varMonth];
}
elseif (array_key_exists($this->varDay.".".$this->varMonth, $this->vars['personal'])) {
return $this->vars['personal'][$this->varDay.".".$this->varMonth];
}
}
function loadInit() {
return @ parse_ini_file("kalender/country/init_".$GLOBALS['country'].".ini", true);
}
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -