%
#################################################
# (c) by Thomas 1000 (Thomas@2000-onLine.com)
#################################################
# folgende Parameter werden verwendet:
# sb = spaltenbreite eines Tages in Pixel
# zh = zeilenhöhe eines Tages in Pixel
# date = Datum das dargestellt werden soll
# lang = Sprache
Header("Content-type: image/PNG");
############# Konstanten für Größe ##############
require("../dbdetails.php");
#### $fonts="/home/dlpfan/www/fonts";
### $fonts="/fonts";
### $fonts="/srv/www/vhosts/dlpfan.org/httpdocs/fonts";
$fonts="../../fonts";
if(!$sb){$sb=25;}
if(!$zh){$zh=25;}
# Schriftgröße = Zeilenhöhe * Faktor 1.4
$sg=$zh*1.2;
# ABER; Wenn Spaltenbreite kleiner ist diese verwenden!
if($sb<$sg){$sg=$sb;}
# zunächst IMG erzeugen
$im = ImageCreate(7*$sb+2, 8*$zh+2);
# Dauer eines Tage in Sekunden
$secday=60*60*24;
# Farben zuweisen
$black = ImageColorAllocate($im, 50, 50, 50);
$white = ImageColorAllocate($im, 255, 255, 255);
$orange = ImageColorAllocate($im, 255, 100, 0);
$yellow = ImageColorAllocate($im, 255, 255, 0);
$tan = ImageColorAllocate($im, 255, 255, 190);
$grey = ImageColorAllocate($im, 205, 205, 205);
$dkgrey = ImageColorAllocate($im, 140, 140, 140);
$ltgrey = ImageColorAllocate($im, 220, 220, 220);
$red = ImageColorAllocate($im, 255, 0, 0);
$blue = ImageColorAllocate($im, 0, 0, 255);
$green = ImageColorAllocate($im, 0, 255,0);
# Zeichenformat immer SPALTE ZEILE SPALTE ZEILE !!!
# Hintergrundfarbe zuweisen
imagefilledrectangle($im, 0, 0, 7*$sb+1, 8*$zh+1, $ltgrey);
### Graue Linien ###
#Aussen
ImageRectangle($im, 1, 1, 7*$sb+1, 8*$zh+1, $dkgrey); # ganz aussen
#Horizontale Linien
for ($n = 1; $n <= 7; $n++){imageline($im,1,1+$zh*$n,1+7*$sb,1+$zh*$n,$dkgrey);}
#Vertikale Linien
for ($n = 1; $n <= 7; $n++){imageline($im,1+$sb*$n,1+$zh,1+$sb*$n,1+$zh*8,$dkgrey);}
### Weisse Linien ###
#Aussen
ImageRectangle($im, 0, 0, 7*$sb, 8*$zh, $white);
# ganz aussen
#Horizontale Linien
for ($n = 1; $n <= 7; $n++){imageline($im,0, $zh*$n, 7*$sb,$zh*$n,$white);}
#Vertikale Linien
for ($n = 1; $n <= 7; $n++){imageline($im,$sb*$n,$zh, $sb*$n, $zh*8, $white);}
# Parameter datum übergeben?!
$gd=explode("-",$date);
$day=$gd[2];
# Wenn Kein Tag übergeben wurde den 1. verwenden! (Dann Zieldatum nicht einfärben!)
if(!$day):
$day=1;
$hidedate=1;
endif;
$month=$gd[1];
$year=$gd[0];
if($year="" or !$year) $year=date("Y");
# echo "
Jahr ist:$year: - ende
";
# haben wir nun ein gültiges Datum?
if (!checkdate($month,$day,$year)):
# wenn nicht nehmen wir das aktuelle Datum!
$inmonth = mktime(0,0,0,date("n")+$pm, date("j"), date("Y"));
$day = date( "d",$inmonth);
$month = date( "n",$inmonth);
$year = date( "Y",$inmonth);
$hidedate = 0;
# wenn abweichender Monat nehmen wir den ersten und zeichnen das Datum NICHT ein...
if($pm):
$day=1;
$hidedate=1;
endif;
endif;
$first=mktime(0,0,0,$month,1,$year);
$zieldatum=mktime(0,0,0,$month,$day,$year);
$mon_yr=date( "F Y", $first);
# Wochentag berechnen
$wd=date( "w",$first);
# Wenn Wochentag 0 (= Sonntag) mach' 'ne 7 'draus...
if ($wd==0) { $wd=7;}
$wd--;
# Monatsletzter berechnen
$lastday=date( "d",mktime(0,0,0,$month+1,-1,$year));
# Kalendererster berechnen
$kalfirst=$first-$secday*$wd;
$von = date("Y-m-d", $first);
$bis = date("Y-m-d", $first+$lastday*$secday);
$db_res=mysql_connect($host,$user,$pw);
if ($db_res):
$query="select * from gtab where ( ((von >= '$von') and (von <= '$bis'))
or ((bis >= '$von') and (bis <= '$bis'))) ORDER BY von, bis";
$erg=mysql_db_query($db,$query,$db_res);
## In das Bild $im die Ergebnisse aus $erg eintragen
$num = mysql_num_rows($erg);
############### $ttest = "$num $von:$bis"; ########################
for ($n = 0; $n < $num; $n++):
$vdatum= mysql_result($erg,$n,"von");
$vmonat= substr($vdatum,5,2);
$vtag= substr($vdatum,8,2);
$bdatum= mysql_result($erg,$n,"bis");
$bmonat= substr($bdatum,5,2);
$btag= substr($bdatum,8,2);
if ($vmonat!=$month){$vtag=1;}
if ($bmonat!=$month){$btag=$lastday;}
# Tag Im Kalender (ab der obersten linken Ecke)
for ($mtag = $vtag; $mtag <= $btag; $mtag++):
$tik=$mtag+$wd-1;
$tikzeile=intval($tik/7);
$tikspalte=$tik-($tikzeile*7);
ImageFilledRectangle($im, 2+($tikspalte*$sb),
2+2*$zh+($tikzeile*$zh),
($tikspalte*$sb)+$sb-1,
2*$zh+($tikzeile*$zh)+$zh-1,
$green);
endfor;
endfor;
else:
$ttest="no database!";
endif;
$zoffset = $zh*2.8;
for($zeile=0;$zeile<=6;$zeile++):
for($spalte=0;$spalte<=7;$spalte++):
$adatum=$kalfirst+($zeile*7+$spalte)*86400;
$tag= date( "j",$adatum);
$farbe=$black;
# Samstag oder Sonntag?
if($spalte>4){$farbe=$red;}
# Wenn Zieldatum dargestellt werden soll
if($hidedate!=1):
# Heutiger Tag?
if($adatum==$zieldatum){$farbe=$blue;}
endif;
# anderer Monat (Vormonat oder Folgemonat)?
if(date("m",$adatum)!=date("m",$first)){$farbe=$dkgrey;}
$box=ImageTTFBBox($sg/2, 0, "$fonts/arlrdbd.ttf", "$tag");
$breite=$box[2]-$box[1];
ImageTTFText($im, $sg/2, 0, $spalte*$sb + $sb-$breite-$sg*0.1, $zeile*$zh+$zoffset, $farbe, "$fonts/arlrdbd.ttf", "$tag");
endfor;
endfor;
# month and year (centered in Arial Bold)
if(!$lang OR $lang=="en"):
$st = "$mon_yr";
$langwd =explode(";","Mo;Tu;We;Th;Fr;Sa;Su");
else:
if($lang=="de"):
$langmon=explode(";","Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;Dezember");
$langwd =explode(";","Mo;Di;Mi;Do;Fr;Sa;So");
elseif($lang=="fr"):
$langmon=explode(";","Janvier;Fevrier;Mars;Avril;Mai;Juin;Juillet;Aout;Septembre;Octobre;Novembre;Decembre");
$langwd =explode(";","Mo;Di;Mi;Do;Fr;Sa;So");
elseif($lang=="es"):
$langmon=explode(";","Enero;Febrero;Marzo;Abril;Mayo;Junio;Julio;Agosto;Septiembre;Octubre;Noviembre;Diciembre");
$langwd =explode(";","Mo;Di;Mi;Do;Fr;Sa;So");
elseif($lang=="nl"):
$langmon=explode(";","Januari;Februari;Maart;April;Mei;Juni;Juli;Augustus;September;Oktober;November;December");
$langwd =explode(";","Mo;Di;Mi;Do;Fr;Sa;So");
elseif($lang=="it"):
$langmon=explode(";","Gennaio;Febbraio;Marzo;Aprile;Maggio;Giugno;Luglio;Agosto;Settembre;Ottobre;Novembre;Decembre");
$langwd =explode(";","Mo;Di;Mi;Do;Fr;Sa;So");
endif;
if (!$ttest):
$st=$langmon[date("n",$first)-1] . " " . date("Y",$first);
else:
$st=$ttest;
endif;
endif;
# weekday names
$box=ImageTTFBBox($sg/2, 0, "$fonts/arlrdbd.ttf", "$st");
$breite=$box[2]-$box[1];
ImageTTFText($im, $sg/2, 0, $sb*3.5-($breite/2), $zh*0.8, $black, "$fonts/arlrdbd.ttf", "$st");
for($n=0;$n<=7;$n++):
$box=ImageTTFBBox($sg/2, 0, "$fonts/arlrdbd.ttf", $langwd[$n-1]);
ImageTTFText($im, $sg/2, 0,$sb*$n-$box[2]-$box[1]-$sg*0.2, $zh*1.8, $blue, "$fonts/arlrdbd.ttf", $langwd[$n-1]);
endfor;
##########################
ImagePNG($im);
ImageDestroy($im);
%>