<% ################################################# # (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); %>