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
?>