assign('ueberschrift','Kalender'); if(!$erlaubt){ $_inh = T_KEINZUGRIFF; } else{ $_GET['aktion'] = isset($_GET['aktion'])?$_GET['aktion']:''; require_once('class/kalender.inc.php'); $monat = isset($_GET['monat'])?$_GET['monat']:''; $jahr = isset($_GET['jahr'])?$_GET['jahr']:''; $kal = new kalender($monat,$jahr); $kal->db = &$_db; $kal->conf = array( 'monate' => $_monate, 'wochentage' => $_wochentage, '_einst' => $_einst ); $kal->tmpl = &$_tmpl; switch($_GET['aktion']){ case 'ferienloeschen': if(!pruefeRechte('s_kalender_ferienbearbeiten')){ $_inh = T_KEINZUGRIFF; break; } if(!isset($_GET['sicher'])){ $_tmpl->assign('query','aktion=ferien'); $_tmpl->assign('frage','Sollen die Ferien wirklich gelöscht werden?'); $_tmpl->assign('url', '/sonstiges/kalender.html'); $_inh .= $_tmpl->fetch('tools/9902.loeschfrage.inc.html'); } else{ $teile = explode('_', $_GET['id'],3); if(count($teile) != 3){ weiterleiten('/sonstiges/kalender.html?aktion=ferien','Der Termin wurde nicht gefunden.'); } $query = "DELETE FROM ".DB_PREFIX."ferien WHERE art = '".text_format($teile[0],'db')."' AND jahr = '".text_format($teile[1],'db')."' AND nr = '".text_format($teile[2],'db')."'"; $_db->fuehreQueryAus($query); # bei eigenen Ferien den nr-Wert der anderen noch runtersetzen (bei vorgegebenen nicht, da der Wert zur Identifizierung dient) if($teile[0] >= 30){ $query = "UPDATE ".DB_PREFIX."ferien SET nr = nr-1 WHERE art = '".text_format($teile[0],'db')."' AND jahr = '".text_format($teile[1],'db')."' AND nr > '".text_format($teile[2],'db')."'"; $_db->fuehreQueryAus($query); } weiterleiten('/sonstiges/kalender.html?aktion=ferien','Der Ferieneintrag wurde erfolgreich gelöscht'); } break; case 'ferienanlegen': if(!pruefeRechte('s_kalender_ferienbearbeiten')){ $_inh = T_KEINZUGRIFF; break; } if(isset($_POST['speichern'])){ require_once('func/pruefen.inc.php'); $f = ''; $f .= pruefen($_POST['v'],'leer','Das von-Datum fehlt'); $f .= pruefen($_POST['v'],'datum','Das von-Datum ist ungültig'); $f .= pruefen($_POST['b'],'datum','Das bis-Datum ist ungültig'); $f .= pruefen($_POST['bezeichnung'],'leer','Die Bezeichnung fehlt'); $f .= pruefen($_POST['bezeichnung'],'minlaenge','Die Bezeichnung ist zu kurz (min 2 Zeichen)',2); $f .= pruefen($_POST['bezeichnung'],'maxlaenge','Die Bezeichnung ist zu lang (max 50 Zeichen)',50); if(!empty($f)){ $_tmpl->assign('fehler',$f); $_tmpl->assign('daten',$_POST); } else{ $jahr = substr(text_format($_POST['v'],'dbdatum'),0,4); $query = "SELECT nr FROM ".DB_PREFIX."ferien WHERE art = 30 AND jahr = ".$jahr." ORDER BY nr DESC"; $_db->holeDaten($query); if($_db->holeAnzahl() == 0){ $nr = 1; } else{ $nr = $_db->holeWert()+1; } $query = "INSERT INTO ".DB_PREFIX."ferien SET art = 30, jahr = ".$jahr.", nr = ".$nr.", von = '".text_format($_POST['v'],'dbdatum')."', bis = ".(empty($_POST['b'])?'NULL':"'".text_format($_POST['b'],'dbdatum')."'").", bezeichnung = '".text_format($_POST['bezeichnung'],'db')."'"; $_db->fuehreQueryAus($query); weiterleiten('/sonstiges/kalender.html?aktion=ferien','Die Ferien wurden angelegt'); } } $_tmpl->assign('ueberschrift','Kalender - Ferien anlegen'); $_inh .= $_tmpl->fetch('sonstiges/61.ferien-formular.inc.html'); break; case 'ferienaendern': if(!pruefeRechte('s_kalender_ferienbearbeiten')){ $_inh = T_KEINZUGRIFF; break; } if(!ctype_digit(str_replace('_','',$_GET['id']))){ break; } if(!isset($_POST['speichern'])){ $teile = explode('_', $_GET['id'],3); if(count($teile) != 3){ weiterleiten('/sonstiges/kalender.html?aktion=ferien','Der Termin wurde nicht gefunden.'); } $query = "SELECT CONCAT(art,'_',jahr,'_',nr) as id, DATE_FORMAT(von,'%d.%m.%Y') as v, DATE_FORMAT(bis,'%d.%m.%Y') as b, bezeichnung FROM ".DB_PREFIX."ferien WHERE art = '".text_format($teile[0],'db')."' AND jahr = '".text_format($teile[1],'db')."' AND nr = '".text_format($teile[2],'db')."'"; $_db->holeDaten($query); if($_db->holeAnzahl() != 1){ weiterleiten('/sonstiges/kalender.html?aktion=ferien','Der Termin wurde nicht gefunden.'); } $_tmpl->assign('daten',$_db->holeZeile()); } else{ require_once('func/pruefen.inc.php'); $f = ''; $f .= pruefen($_POST['v'],'leer','Das von-Datum fehlt'); $f .= pruefen($_POST['v'],'datum','Das von-Datum ist ungültig'); if($_POST['b'] == '00.00.0000'){ $_POST['b'] = ''; } else{ $f .= pruefen($_POST['b'],'datum','Das bis-Datum ist ungültig'); } $f .= pruefen($_POST['bezeichnung'],'leer','Die Bezeichnung fehlt'); $f .= pruefen($_POST['bezeichnung'],'minlaenge','Die Bezeichnung ist zu kurz (min 2 Zeichen)',2); $f .= pruefen($_POST['bezeichnung'],'maxlaenge','Die Bezeichnung ist zu lang (max 50 Zeichen)',50); if(!empty($f)){ $_tmpl->assign('fehler',$f); $_tmpl->assign('daten',$_POST); } else{ $teile = explode('_', $_GET['id'],3); if(count($teile) != 3){ weiterleiten('/sonstiges/kalender.html?aktion=ferien','Der Termin wurde nicht gefunden.'); } $query = "UPDATE ".DB_PREFIX."ferien SET von = '".text_format($_POST['v'],'dbdatum')."', bis = ".(empty($_POST['b'])?'NULL':"'".text_format($_POST['b'],'dbdatum')."'").", bezeichnung = '".text_format($_POST['bezeichnung'],'db')."' WHERE art = '".text_format($teile[0],'db')."' AND jahr = '".text_format($teile[1],'db')."' AND nr = '".text_format($teile[2],'db')."'"; $_db->fuehreQueryAus($query); # ggf. die Bezeichnungen anderer Ferien gleicher Art mit anpassen if($teile[0] < 30){ $query = "UPDATE ".DB_PREFIX."ferien SET bezeichnung = '".text_format($_POST['bezeichnung'],'db')."' WHERE art = '".text_format($teile[0],'db')."'"; $_db->fuehreQueryAus($query); } weiterleiten('/sonstiges/kalender.html?aktion=ferien','Die Ferien wurden geändert'); } } $_tmpl->assign('ueberschrift','Kalender - Ferien ändern'); $_inh .= $_tmpl->fetch('sonstiges/61.ferien-formular.inc.html'); break; case 'feriennachladen': require_once('class/kalender.inc.php'); $kal = new kalender; $kal->db = &$_db; $daten = $kal->holeFerientermine(); if(!is_array($daten)){ $_tmpl->assign('fehler', $daten); } else{ $erg = $kal->legeFeiertageAn($daten); if($erg['angelegt'] == 0 and $erg['korrigiert'] == 0){ $meldung = 'Die gespeicherten Ferien/Feiertage sind vollständig und korrekt.'; } elseif($erg['angelegt'] > 0 and $erg['korrigiert'] == 0){ $meldung = 'Es wurde'.($erg['angelegt']>1?'n '.$erg['angelegt'].' Feiertage':' ein Feiertag').' angelegt.'; } elseif($erg['angelegt'] == 0 and $erg['korrigiert'] > 0){ $meldung = 'Es wurde'.($erg['korrigiert']>1?'n '.$erg['korrigiert'].' Feiertage':' ein Feiertag').' korrigiert.'; } else{ $meldung = 'Es wurde'.($erg['angelegt']>1?'n '.$erg['angelegt'].' Feiertage':' ein Feiertag').' angelegt und '; $meldung .= 'es wurde'.($erg['korrigiert']>1?'n '.$erg['korrigiert'].' Feiertage':' ein Feiertag').' korrigiert.'; } weiterleiten('/sonstiges/kalender.html?aktion=ferien', $meldung); } break; case 'ferien': $query = "SELECT CONCAT(art,'_',jahr,'_',nr) as id, DATE_FORMAT(von,'%d.%m.%Y') as v, DATE_FORMAT(bis,'%d.%m.%Y') as b, bezeichnung FROM ".DB_PREFIX."ferien ORDER BY von, bis"; $_db->holeDaten($query); $_tmpl->assign('ferien',$_db->baueArray('*','#')); $_tmpl->assign('ueberschrift','Ferientermine'); $_inh .= $_tmpl->fetch('sonstiges/61.ferien-uebersicht.inc.html'); break; case 'terminanlegen': $maxterminalter = 2; # (Jahre) wenn Termine älter sind als hier angegeben werden sie beim Anlegen von neuen überschrieben if(!pruefeRechte('s_kalender_terminebearbeiten')){ $_inh = T_KEINZUGRIFF; break; } if(isset($_POST['speichern'])){ require_once('func/pruefen.inc.php'); $f = ''; $f .= pruefen($_POST['datum'],'leer','Das Datum fehlt'); $f .= pruefen($_POST['datum'],'datum','Das Datum ist ungültig'); $f .= pruefen($_POST['zeit'],'uhrzeit','Die Uhrzeit ist ungültig'); $f .= pruefen($_POST['titel'],'leer','Der Titel fehlt'); $f .= pruefen($_POST['titel'],'minlaenge','Der Titel ist zu kurz (min 2 Zeichen)',2); $f .= pruefen($_POST['titel'],'maxlaenge','Der Titel ist zu lang (max 100 Zeichen)',100); $f .= pruefen($_POST['was'],'maxlaenge','Der Text ist zu lang (max 65000 Zeichen)',65000); if(!empty($f)){ $_tmpl->assign('fehler',$f); $_tmpl->assign('daten',$_POST); } else{ $datum = text_format($_POST['datum'],'dbdatum'); if(empty($_POST['zeit'])){ $datum .= ' 00:00:00'; } else{ $datum .= ' '.$_POST['zeit']; } # neu anlegen oder ändern? $query = "SELECT id FROM ".DB_PREFIX."termine WHERE datum < DATE_SUB(NOW(),INTERVAL ".$maxterminalter." YEAR) ORDER BY datum ASC LIMIT 1"; $_db->holeDaten($query); if($_db->holeAnzahl() != 1){ $query = "INSERT INTO ".DB_PREFIX."termine SET datum = '".$datum."', titel = '".text_format($_POST['titel'],'db')."', was = '".text_format($_POST['was'],'db')."'"; } else{ $query = "UPDATE ".DB_PREFIX."termine SET datum = '".$datum."', titel = '".text_format($_POST['titel'],'db')."', was = '".text_format($_POST['was'],'db')."' WHERE id = ".$_db->holeWert().""; } $_db->fuehreQueryAus($query); list($tag,$monat,$jahr) = explode('.',$_POST['datum'],3); $qs = '?tag='.$tag.'&monat='.$monat.'&jahr='.$jahr; weiterleiten('/sonstiges/kalender.html'.$qs,'Der Termin wurde angelegt'); } } elseif(isset($_GET['datum'])){ require_once('func/pruefen.inc.php'); $f = pruefen($_GET['datum'],'datum','-'); if(empty($f)){ $_tmpl->assign('daten',array('datum'=>$_GET['datum'])); } } $_tmpl->assign('ueberschrift','Kalender - Termin anlegen'); $_inh .= $_tmpl->fetch('sonstiges/61.termine-formular.inc.html'); break; case 'terminaendern': if(!pruefeRechte('s_kalender_terminebearbeiten')){ $_inh = T_KEINZUGRIFF; break; } if(!ctype_digit($_GET['id'])){ break; } if(!isset($_POST['speichern'])){ $query = "SELECT id, DATE_FORMAT(datum,'%d.%m.%Y') as datum, DATE_FORMAT(datum,'%H:%i') as zeit, titel, was FROM ".DB_PREFIX."termine WHERE id = ".$_GET['id'].""; $_db->holeDaten($query); if($_db->ergebnis['anzahl'] != 1){ $_tmpl->assign('fehler','Der Termin existiert nicht'); break; } $daten = $_db->holeZeile(); if($daten['zeit'] == '00:00'){ $daten['zeit'] = ''; } $_tmpl->assign('daten',$daten); } else{ require_once('func/pruefen.inc.php'); $f = ''; $f .= pruefen($_POST['datum'],'leer','Das Datum fehlt'); $f .= pruefen($_POST['datum'],'datum','Das Datum ist ungültig'); $f .= pruefen($_POST['zeit'],'uhrzeit','Die Uhrzeit ist ungültig'); $f .= pruefen($_POST['titel'],'leer','Der Titel fehlt'); $f .= pruefen($_POST['titel'],'minlaenge','Der Titel ist zu kurz (min 2 Zeichen)',2); $f .= pruefen($_POST['titel'],'maxlaenge','Der Titel ist zu lang (max 100 Zeichen)',100); $f .= pruefen($_POST['was'],'maxlaenge','Der Text ist zu lang (max 65000 Zeichen)',65000); if(!empty($f)){ $_tmpl->assign('fehler',$f); $_tmpl->assign('daten',$_POST); } else{ $datum = text_format($_POST['datum'],'dbdatum'); if(empty($_POST['zeit'])){ $datum .= ' 00:00:00'; } else{ $datum .= ' '.$_POST['zeit']; } $query = "UPDATE ".DB_PREFIX."termine SET datum = '".$datum."', titel = '".text_format($_POST['titel'],'db')."', was = '".text_format($_POST['was'],'db')."' WHERE id = ".$_GET['id'].""; $_db->fuehreQueryAus($query); list($tag,$monat,$jahr) = explode('.',$_POST['datum'],3); $qs = '?tag='.$tag.'&monat='.$monat.'&jahr='.$jahr; weiterleiten('/sonstiges/kalender.html'.$qs,'Der Termin wurde geändert'); } } $_tmpl->assign('ueberschrift','Kalender - Termin ändern'); $_inh .= $_tmpl->fetch('sonstiges/61.termine-formular.inc.html'); break; case 'terminloeschen': if(!pruefeRechte('s_kalender_terminebearbeiten')){ $_inh = T_KEINZUGRIFF; break; } $query = "SELECT DATE_FORMAT(datum,'%c') as monat, YEAR(datum) as jahr, DATE_FORMAT(datum,'%e') as tag FROM ".DB_PREFIX."termine WHERE id = '".text_format($_GET['id'],'db')."'"; $_db->holeDaten($query); $row = $_db->holeZeile(); if(!isset($_GET['sicher'])){ $qs = 'tag='.$row['tag'].'&monat='.$row['monat'].'&jahr='.$row['jahr']; $_tmpl->assign('query',$qs); $_tmpl->assign('frage','Soll der Termin wirklich gelöscht werden?'); $_tmpl->assign('url', '/sonstiges/kalender.html'); $_inh .= $_tmpl->fetch('tools/9902.loeschfrage.inc.html'); } else{ $qs = '?tag='.$row['tag'].'&monat='.$row['monat'].'&jahr='.$row['jahr']; $query = "DELETE FROM ".DB_PREFIX."termine WHERE id = '".text_format($_GET['id'],'db')."'"; $_db->fuehreQueryAus($query); weiterleiten('/sonstiges/kalender.html'.$qs,'Der Termin wurde erfolgreich gelöscht'); } break; default: if(isset($_GET['tag']) and $_GET['tag'] >= 1 AND $_GET['tag'] <= 31){ $time = mktime(12,0,0,$kal->monat,(int)$_GET['tag'],$kal->jahr); $wtag = date('w',$time)==0?7:date('w',$time); $_tmpl->assign('ueberschrift','Kalender - '.$_wochentage[$wtag].', '.(int)$_GET['tag'].'. '.$_monate[(int)$kal->monat].' '.$kal->jahr); $_inh = $kal->holeTag($_GET['tag']); } else{ $_tmpl->assign('ueberschrift','Kalender - '.$_monate[(int)$kal->monat].' '.$kal->jahr); $_inh = $kal->holeMonat(); } break; } } # Ende Rechte-else, EOF ?>