assign('ueberschrift','Stundennachweis'); if(!$erlaubt){ $_inh = T_KEINZUGRIFF; } else{ $_GET['aktion'] = isset($_GET['aktion'])?$_GET['aktion']:''; require_once('class/stundennachweise.inc.php'); $std = new stundennachweise(); # ueberpruefen ob der angemeldete User Uebungsleiter ist $_uebungsleiter = $_trainer = true; $query = "SELECT trainerbis FROM ".DB_PREFIX."uebungsleiter WHERE mitgliedid = ".$_SESSION['user']['id'].""; $_db->holeDaten($query); if($_db->holeAnzahl() != 1){ $_uebungsleiter = false; $_GET['aktion'] = ''; } else{ if(is_null($_db->holeWert())){ $_trainer = false; } } #$_trainer = false; switch($_GET['aktion']){ case 'loeschen': if(!isset($_GET['sicher'])){ list($jahr,$halbj) = explode('_',$_GET['id'],2); $_tmpl->assign('frage','Soll das Halbjahr '.text_format($halbj.'/'.$jahr,'html').' wirklich gelöscht werden?'); $_tmpl->assign('url', '/training/stundennachweis.html'); $_inh .= $_tmpl->fetch('tools/9902.loeschfrage.inc.html'); } else{ $erg = $std->loescheHalbjahr($_GET['id']); if($erg === true){ list($jahr,$halbj) = explode('_',$_GET['id'],2); weiterleiten('/training/stundennachweis.html','Das Halbjahr '.$halbj.'/'.$jahr.' wurde gelöscht'); } else{ $fehler = 'Das Halbjahr existiert nicht.'; $_tmpl->assign('fehler', $fehler); } } break; case 'neu': $std->db = &$_db; if(!isset($_GET['halbj']) or $_GET['halbj']=='-'){ weiterleiten('/training/stundennachweis.html'); } list($jahr,$halbjahr) = explode('_',$_GET['halbj']); $erg = $std->legeNeuesHalbjahrAn($halbjahr,$jahr); if($erg === true){ $std->schreibeDaten(); weiterleiten('/training/stundennachweis.html?aktion=bearbeiten&id='.$_GET['halbj'],'Das Halbjahr wurde angelegt.'); } else{ switch($erg){ case -1: $fehler = 'Das angegebene Halbjahr ist ungültig.'; break; case -2: weiterleiten('/training/stundennachweis.html?aktion=bearbeiten&id='.$_GET['halbj'],'Das Halbjahr hat bereits existiert.'); } $_tmpl->assign('fehler', $fehler); break; } case 'bearbeiten': if(!isset($_GET['id']) or $_GET['id']=='-' or !preg_match('~^\d{4}_(1|2)$~',$_GET['id']) or !isset($std->daten[$_GET['id']])){ weiterleiten('/training/stundennachweis.html'); } list($jahr,$halbjahr) = explode('_',$_GET['id']); $_tmpl->assign('ueberschrift','Stundennachweis - bearbeiten von Halbjahr '.$halbjahr.'/'.$jahr); # Daten zerlegen $dat = $std->daten[$_GET['id']]; $daten = array(); $gesstunden = 0; foreach($dat as $key => $row){ $tmp = array(); $tmp['anfang'] = $key; list($tmp['ende'],$tmp['tu'],$tmp['taetigkeit'],$tmp['anzahl'],$tmp['bemerkung']) = explode('|',$row,5); list($a_s, $a_m) = explode(':', date('H:i',$tmp['anfang'])); if(!empty($tmp['ende'])){ list($e_s, $e_m) = explode(':', $tmp['ende']); $a_insg = $a_s+($a_m/60); $e_insg = $e_s+($e_m/60); $tmp['stunden'] = round(($e_insg-$a_insg)*60/45,0); $gesstunden += $tmp['stunden']; } else{ $tmp['stunden'] = '-'; } $tmp['wtag'] = date('w',$key); $tmp['taetigkeit'] = str_replace('|','|',$tmp['taetigkeit']); $tmp['bemerkung'] = str_replace('|','|',$tmp['bemerkung']); $daten[$key] = $tmp; } # Datum anlegen if(isset($_GET['anlegen'])){ require_once('func/pruefen.inc.php'); $f = ''; $f .= pruefen($_POST['datum'],'leer','Es wurde kein Datum angegeben'); $f .= pruefen($_POST['datum'],'datum','Das angegebene Datum (»'.text_format($_POST['datum'],'htmlmaskieren').'«) ist ungültig',20); if(empty($f)){ # pruefen ob Datum in dem Halbjahr liegt list($tag,$monat,$jahr) = explode('.',$_POST['datum']); $datum = mktime(12,0,0,$monat, $tag, $jahr); list($bereich_jahr, $halbjahr) = explode('_', $_GET['id']); $datum_anfang = mktime(12,0,0, $halbjahr==1?1:7, 1, $bereich_jahr); $datum_ende = mktime(12,0,0, $halbjahr==1?6:12, $halbjahr==1?30:31, $bereich_jahr); if($datum_anfang > $datum or $datum_ende < $datum){ $f .= 'Das Datum (»'.text_format($_POST['datum'],'htmlmaskieren').'«) liegt außerhalb des gewählten Halbjahres
'; } } $f .= pruefen($_POST['zeit'], 'leer', 'Die Uhrzeit fehlt'); $f .= pruefen($_POST['zeit'], 'uhrzeit', 'Die Uhrzeit ist ungültig'); if(empty($f) and !$_trainer and $_gleinst['training_anwesenheitsliste']['traininginferien'] != 1){ # pruefen ob an dem Tag Training war require_once('class/kalender.inc.php'); $kal = new kalender; $kal->db = &$_db; $kal->conf = array( 'monate' => $_monate, 'wochentage' => $_wochentage ); $kal->tmpl = &$_tmpl; $training = $kal->istTraining($_POST['datum']); if(!$training){ $f .= 'An dem angegebenen Datum (»'.text_format($_POST['datum'],'htmlmaskieren').'«) ist kein Training
'; } } if(empty($f)){ # alles ok -> speichern list($tag,$monat,$jahr) = explode('.',$_POST['datum'],3); list($stunde,$minute) = explode(':', $_POST['zeit'], 2); $datum = mktime($stunde, $minute, 0, $monat, $tag, $jahr); $std->daten[$_GET['id']][$datum] = '|'.($_trainer?'T':'U').'|'.$_einst['stundennachweis']['taetigkeit'].'||'.$_einst['stundennachweis']['bemerkung']; $std->datengeaendert = true; $std->schreibeDaten(); weiterleiten('/training/stundennachweis.html'.'?aktion=bearbeiten&id='.$_GET['id'],'Das Datum wurde angelegt'); } else{ $_tmpl->assign('fehler',$f); } if(isset($_POST['weiter'])){ unset($_POST['weiter']); } } # Änderungen speichern if(isset($_POST['weiter']) and isset($_POST['daten']) and is_array($_POST['daten'])){ if(isset($_POST['markierteloeschen']) and isset($_POST['loeschen']) and is_array($_POST['loeschen'])){ foreach($_POST['loeschen'] as $l){ unset($_POST['daten'][$l]); unset($std->daten[$_GET['id']][$l]); $std->datengeaendert = true; } $std->schreibeDaten(); weiterleiten('/training/stundennachweis.html?aktion=bearbeiten&id='.$_GET['id'],'Es wurden '.count($_POST['loeschen']).' Datensätze gelöscht'); } else{ require_once('func/pruefen.inc.php'); $f = ''; foreach($_POST['daten'] as $key => $row){ if(!in_array($key,array_keys($daten))){ unset($_POST['daten'][$key]); continue; } $wtag = date('w',$key); if($wtag == 0){ $wtag = 7; } $fd = ' ('.substr($_wochentage[$wtag],0,2).', '.date('d.m.Y, H:i', $key).')'; $max = (isset($row['tu']) and $row['tu']=='T')?40:80; $d = &$_POST['daten'][$key]; # Endzeit $f .= pruefen($d['ende'], 'leer', 'Die Endzeit fehlt'.$fd); $f .= pruefen($d['ende'], 'uhrzeit', 'Die Endzeit ist ungültig'.$fd); # Trainer/Übungsleiter if($_trainer){ if($d['tu'] == 'U'){ # pruefen ob an dem Tag Training war require_once('class/kalender.inc.php'); $kal = new kalender; $kal->db = &$_db; $kal->conf = array( 'monate' => $_monate, 'wochentage' => $_wochentage ); $kal->tmpl = &$_tmpl; $training = $kal->istTraining(date('d.m.Y',$key)); if(!$training and $_gleinst['training_anwesenheitsliste']['traininginferien'] != 1){ $f .= 'An diesem Termin war kein Training.'.$fd.'
'; } } $f .= pruefen($d['tu'], 'wertemenge', 'Es muss angegeben werden, ob die Stunden als Trainer oder als Übungsleiter abgerechnet werden sollen.'.$fd, array('T','U')); } else{ $d['tu'] = 'U'; } # Sportart/Tätigkeit $f .= pruefen($d['taetigkeit'], 'maxlaenge', 'Der Wert in der Tätigkeitsspalte ist zu lang (max. '.$max.' Zeichen)'.$fd, $max); # Sportstätte/Bemerkung $f .= pruefen($d['bemerkung'], 'maxlaenge', 'Der Wert in der Tätigkeitsspalte ist zu lang (max. '.$max.' Zeichen)'.$fd, $max); if($_trainer and $d['tu'] == 'T'){ # Anzahl $f .= pruefen($d['anzahl'], 'leer', 'Die Anzahl der Schwimmer fehlt'.$fd, $max); $f .= pruefen($d['anzahl'], 'zahl', 'Die Anzahl der Schwimmer ist keine Zahl'.$fd, $max); $f .= pruefen($d['anzahl'], 'maxlaenge', 'Die Anzahl der Schwimmer ist zu lang (max. 3 Zeichen)'.$fd, 3); } } if(!empty($f)){ $daten = $_POST['daten']; $_tmpl->assign('fehler',$f); } else{ $d = &$std->daten[$_GET['id']]; $d = array(); foreach($_POST['daten'] as $key => $row){ $zeile = $row['ende'].'|'.$row['tu'].'|'.$row['taetigkeit'].'|'; $zeile .= (isset($row['anzahl'])?$row['anzahl']:'').'|'.$row['bemerkung']; $d[$key] = $zeile; } $std->datengeaendert = true; $std->schreibeDaten(); weiterleiten('/training/stundennachweis.html?aktion=bearbeiten&id='.$_GET['id'], 'Die Änderungen wurden gespeichert'); } } } $_tmpl->assign('_trainer',$_trainer); $_tmpl->assign('zusammenfassung', array('gesstunden' => $gesstunden, 'termine' => count($daten))); $_tmpl->assign('daten',$daten); $_tmpl->assign('ul',array('U'=>'Übungsleiter','T'=>'Trainer')); $_tmpl->assign('wochentage',$_wochentage); $_inh .= $_tmpl->fetch('training/35.stundennachweis-formular.inc.html'); break; case 'pdf': if(!isset($_GET['id']) or $_GET['id']=='-' or !preg_match('~^\d{4}_(1|2)$~',$_GET['id']) or !isset($std->daten[$_GET['id']])){ weiterleiten('/training/stundennachweis.html'); } $std->db = &$_db; $std->generierePdfDatei($_GET['id'],isset($_GET['inhomeverzeichnis'])); weiterleiten('/training/stundennachweis.html'); case 'leeresformular': $std->db = &$_db; if(!isset($_GET['art']) or !in_array($_GET['art'],array('trainer','uebungsleiter'))){ weiterleiten('/training/stundennachweis.html'); } $std->generierePdfDatei('leer_'.$_GET['art'],false); default: if($_uebungsleiter){ $vorhandene_halbjahre = $std->holeHalbjahre('vorhandene',true); $fehlende_halbjahre = $std->holeHalbjahre('fehlende',true); $_tmpl->assign('trainer',$_trainer); $_tmpl->assign('vorhandene_halbjahre',$vorhandene_halbjahre); $_tmpl->assign('umgedrehte_halbjahre',array_reverse($vorhandene_halbjahre)); $_tmpl->assign('fehlende_halbjahre',$fehlende_halbjahre); $_inh .= $_tmpl->fetch('training/35.stundennachweis-uebersicht.inc.html'); } else{ $_tmpl->assign('fehler','Auf diese Seite haben nur Übungsleiter und Trainer Zugriff.'); } break; } } # Ende Rechte-else, EOF ?>