assign('ueberschrift','Zeitenbereich'); if(!$erlaubt){ $_inh = T_KEINZUGRIFF; } else{ $_GET['aktion'] = isset($_GET['aktion'])?$_GET['aktion']:''; switch($_GET['aktion']){ case 'vereinsrekordeeinlesen': if(!pruefeRechte('z_vereinsrekordeeinlesen')){ $_inh = T_KEINZUGRIFF; break; } require_once('class/zeiten.inc.php'); require_once('func/schreibe_ini_datei.inc.php'); $zeit = new zeiten; $zeit->db = $_db; $zeit->leseVereinsrekordeEin(); weiterleiten('/zeiten/', 'Die Vereinsrekorde wurden neu eingelesen'); case 'zeitenbearbeiten': $erlaubt = pruefeRechte('z_zeitenbearbeiten'); if(!$erlaubt){ $_inh = T_KEINZUGRIFF; break; } if(!isset($_GET['zeitid']) or !ctype_digit($_GET['zeitid'])){ $_inh .= $_tmpl->fetch('zeiten/5.zeitbearbeiten-index.inc.html'); } else{ $laengen = array( 25 => '25m', 50 => '50m', 100 => '100m', 200 => '200m', 400 => '400m', 800 => '800m', 1500 => '1500m' ); $query = "SELECT CONCAT(m.vorname,' ',m.nachname) as name, m.id as mid, z.bestenliste, DATE_FORMAT(z.datum,'%d.%m.%Y') as datum, m.mw, z.zeit, z.wettkampfid, z.disziplin, z.streckenlaenge, z.platz, z.platzvon, z.bemerkung, sz.staffelid, w.bahnlaenge, IF(YEAR(z.datum)-YEAR(gebdatum)>=20,CONCAT('ak',FLOOR((YEAR(z.datum)-YEAR(gebdatum))/5)*5),YEAR(z.datum)-YEAR(gebdatum)) as ak, YEAR(z.datum) as jahr, DATE_FORMAT(z.datum,'%Y-%m-%d') as dbdatum FROM ((".DB_PREFIX."zeiten as z LEFT JOIN ".DB_PREFIX."mitglieder as m ON z.mitgliedid=m.id) LEFT JOIN ".DB_PREFIX."wettkaempfe as w ON z.wettkampfid=w.id) LEFT JOIN ".DB_PREFIX."staffeln_zeiten as sz ON sz.zeitid = z.id WHERE z.id = ".$_GET['zeitid'].""; $_db->holeDaten($query); if($_db->holeAnzahl() != 1){ weiterleiten('/zeiten/','die gesuchte ID wurde nicht gefunden'); } $zeitdaten = $_db->holeZeile(); # Wettkämpfe holen $query = "SELECT id, CONCAT(titel, ' - ', DATE_FORMAT(datum, '%d.%m.%Y')) as titel FROM ".DB_PREFIX."wettkaempfe ORDER BY datum DESC"; $_db->holeDaten($query); $wks = $_db->baueArray('titel','id'); $_tmpl->assign('wks',$wks); # Rekorde holen $query = "SELECT art, laenge FROM ".DB_PREFIX."zeiten_rekorde WHERE zeitid = ".$_GET['zeitid']." AND LEFT(art,1) != 'a'"; $_db->holeDaten($query); $allerekorde = $_db->baueArray('*', '#'); $zeitdaten['rekorde'] = array(); foreach($allerekorde as $row){ if(is_null($row['laenge'])){ $key = 'ende'; } else{ $key = $row['laenge']; } if(!isset($zeitdaten['rekorde'][$key])){ $zeitdaten['rekorde'][$key] = array(); } $zeitdaten['rekorde'][$key][$row['art']] = $row['art']; } $erlaubterekorde = array('VR', 'VJR', 'HoF', 'HoF11', 'PB', 'PB25', 'PB50'); $_tmpl->assign('rekorde', $erlaubterekorde); # Zwischenzeiten holen $query = "SELECT streckenlaenge, zeit, bestenliste FROM ".DB_PREFIX."zwischenzeiten WHERE zeitid = ".$_GET['zeitid'].""; $_db->holeDaten($query); $vorhandenezwischenzeiten = $_db->baueArray('*', 'streckenlaenge'); $zeitdaten['zwischenzeiten'] = array(); $rekordmoeglichkeiten = $zeitdaten['disziplin']==5?array():array(50,100,200,400,800); for($i=$zeitdaten['bahnlaenge'];$i<$zeitdaten['streckenlaenge'];$i+=$zeitdaten['bahnlaenge']){ $tmp = array( 'zeit' => '', 'bestenliste' => 0, 'rekorde' => false ); if(isset($vorhandenezwischenzeiten[$i])){ $tmp['zeit'] = $vorhandenezwischenzeiten[$i]['zeit']; $tmp['bestenliste'] = $vorhandenezwischenzeiten[$i]['bestenliste']; $tmp['rekorde'] = in_array($i, $rekordmoeglichkeiten); } else{ $tmp['rekorde'] = in_array($i, $rekordmoeglichkeiten); } $zeitdaten['zwischenzeiten'][$i] = $tmp; } if(!isset($_POST['speichern'])){ $_tmpl->assign('daten',$zeitdaten); } else{ if(isset($_POST['loeschen']) and is_null($zeitdaten['staffelid'])){ # Zeit loeschen $query = "DELETE FROM ".DB_PREFIX."zeiten_rekorde WHERE zeitid = ".$_GET['zeitid'].""; $_db->fuehreQueryAus($query); $query = "DELETE FROM ".DB_PREFIX."zwischenzeiten WHERE zeitid = ".$_GET['zeitid'].""; $_db->fuehreQueryAus($query); $query = "DELETE FROM ".DB_PREFIX."zeiten WHERE id = ".$_GET['zeitid'].""; $_db->fuehreQueryAus($query); weiterleiten('/zeiten/','Die Zeit wurde gelöscht.'); } if(isset($_POST['rekordeermitteln'])){ # Zeit auf Rekorde prüfen require_once('class/zeiten.inc.php'); $z = new zeiten; $z->db = &$_db; $wkdat = array( 'id' => $zeitdaten['wettkampfid'], 'jahr' => $zeitdaten['jahr'], 'datum' => $zeitdaten['dbdatum'] , 'bahnlaenge' => $zeitdaten['bahnlaenge'] ); $rekorde = array(); $rekorde['ende'] = $z->zeitIstRekord($zeitdaten['zeit'], $zeitdaten['streckenlaenge'], $zeitdaten['disziplin'], $zeitdaten['mw'], $zeitdaten['ak'], $zeitdaten['mid'], $wkdat); foreach($zeitdaten['zwischenzeiten'] as $laenge => $zeit){ if(empty($zeit['zeit']) or $zeit['rekorde'] !== true){ continue; } $rekorde[$laenge] = $z->zeitIstRekord($zeit['zeit'], $laenge, $zeitdaten['disziplin'], $zeitdaten['mw'], $zeitdaten['ak'], $zeitdaten['mid'], $wkdat); } $querys = array(); foreach($rekorde as $laenge => $rekordelaenge){ foreach($rekordelaenge as $r){ if(isset($zeitdaten['rekorde'][$laenge]) and in_array($r, $zeitdaten['rekorde'][$laenge])){ # Rekord bereits vorhanden unset($zeitdaten['rekorde'][$laenge][$r]); } else{ # Rekord fehlt -> einfügen $querys[] = "INSERT INTO ".DB_PREFIX."zeiten_rekorde SET zeitid = ".$_GET['zeitid'].", art = '".$r."', laenge = ".($laenge=='ende'?'NULL':$laenge).""; } } } # übrig gebliebene läschen foreach($zeitdaten['rekorde'] as $laenge => $rekordelaenge){ foreach($rekordelaenge as $r){ $querys[] = "DELETE FROM ".DB_PREFIX."zeiten_rekorde WHERE zeitid = ".$_GET['zeitid']." AND art = '".$r."' AND laenge ".($laenge=='ende'?'IS NULL':'= '.$laenge).""; } } # speichern foreach($querys as $q){ $_db->fuehreQueryAus($q); } weiterleiten('/zeiten/?aktion=zeitenbearbeiten&zeitid='.$_GET['zeitid'],'Die Rekorde wurden gespeichert.'); } 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'],'leer','Die Zeit fehlt'); $f .= pruefen($_POST['zeit'],'schwimmzeit','die Zeit ist ungültig'); $f .= pruefen($_POST['disziplin'],'wertemenge','Die Disziplin ist ungültig',array_keys($_lagen)); $f .= pruefen($_POST['streckenlaenge'],'wertemenge','Die Streckenlänge ist ungültig',array_keys($laengen)); $f .= pruefen($_POST['wettkampfid'],'wertemenge','Der Wettkampf ist ungültig',array_keys($wks)); if(!empty($_POST['platz'])){ $tmp = pruefen($_POST['platz'],'zahl','-'); if(!empty($tmp)){ $f .= pruefen($_POST['platz'], 'wertemenge', 'Der Platz ist ungültig.', array('DS', 'NA', 'AB', 'AU')); } } $f .= pruefen($_POST['platzvon'], 'zahl', 'Der Platzvon ist ungültig.'); $f .= pruefen($_POST['bmerkung'], 'maxlaenge', 'Die Bemerkung ist zu lang (max. 255 Zeichen)', 255); foreach($_POST['zwischenzeiten'] as $laenge => $row){ if(!isset($zeitdaten['zwischenzeiten'][$laenge]) or empty($row['zeit'])){ unset($_POST['zwischenzeiten'][$laenge]); continue; } $f .= pruefen($_POST['zwischenzeiten'][$laenge]['zeit'], 'schwimmzeit', 'Die Zwischenzeit über '.$laenge.'m ist ungültig'); } if(empty($f)){ $query = "UPDATE ".DB_PREFIX."zeiten SET datum = '".text_format($_POST['datum'],'dbdatum')."', zeit = '".$_POST['zeit']."', disziplin = ".$_POST['disziplin'].", streckenlaenge = ".$_POST['streckenlaenge'].", wettkampfid = ".$_POST['wettkampfid'].", bestenliste = ".(isset($_POST['bestenliste'])?1:0).", platz = ".(empty($_POST['platz'])?'NULL':"'".$_POST['platz']."'").", platzvon = ".(empty($_POST['platzvon'])?'NULL':$_POST['platzvon']).", bemerkung = ".(empty($_POST['bemerkung'])?'NULL':text_format($_POST['bemerkung'], 'db'))." WHERE id = ".$_GET['zeitid'].""; $_db->fuehreQueryAus($query); foreach($_POST['zwischenzeiten'] as $laenge => $row){ if(empty($zeitdaten['zwischenzeiten'][$laenge]['zeit'])){ # anlegen $query = "INSERT INTO ".DB_PREFIX."zwischenzeiten SET zeitid = ".$_GET['zeitid'].", streckenlaenge = ".$laenge.", zeit = ".$row['zeit'].", bestenliste = ".(($zeitdaten['zwischenzeiten'][$laenge]['rekorde'] and isset($row['bestenliste']))?'1':'0').""; $_db->fuehreQueryAus($query); } else{ # update $query = "UPDATE ".DB_PREFIX."zwischenzeiten SET zeit = ".$row['zeit'].", bestenliste = ".(($zeitdaten['zwischenzeiten'][$laenge]['rekorde'] and isset($row['bestenliste']))?1:0)." WHERE zeitid = ".$_GET['zeitid']." AND streckenlaenge = ".$laenge.""; $_db->fuehreQueryAus($query); } unset($zeitdaten['zwischenzeiten'][$laenge]); } foreach($zeitdaten['zwischenzeiten'] as $laenge => $row){ # gelöschte Zeiten entfernen $query = "DELETE FROM ".DB_PREFIX."zwischenzeiten WHERE zeitid = ".$_GET['zeitid']." AND streckenlaenge = ".$laenge.""; $_db->fuehreQueryAus($query); } if(isset($_POST['rekorde'])){ foreach($_POST['rekorde'] as $laenge => $rekordelaenge){ foreach($rekordelaenge as $r){ if(!in_array($r, $erlaubterekorde)){ # Rekordart ungültig continue; } if(isset($zeitdaten['rekorde'][$laenge]) and in_array($r, $zeitdaten['rekorde'][$laenge])){ # Rekord bereits vorhanden unset($zeitdaten['rekorde'][$laenge][$r]); } else{ # Rekord fehlt -> einfügen $query = "INSERT INTO ".DB_PREFIX."zeiten_rekorde SET zeitid = ".$_GET['zeitid'].", art = '".$r."', laenge = ".($laenge=='ende'?'NULL':$laenge).""; $_db->fuehreQueryAus($query); } } } } # übrig gebliebene läschen foreach($zeitdaten['rekorde'] as $laenge => $rekordelaenge){ foreach($rekordelaenge as $r){ $query = "DELETE FROM ".DB_PREFIX."zeiten_rekorde WHERE zeitid = ".$_GET['zeitid']." AND art = '".$r."' AND laenge ".($laenge=='ende'?'IS NULL':'= '.$laenge).""; $_db->fuehreQueryAus($query); } } weiterleiten('/zeiten/?aktion=zeitenbearbeiten','Die Zeit wurde geändert.'); } else{ $_POST['name'] = $zeitdaten['name']; $_POST['mid'] = $zeitdaten['mid']; $_POST['staffelid'] = $zeitdaten['staffelid']; foreach($zeitdaten['zwischenzeiten'] as $laenge => $row){ $_POST['zwischenzeiten'][$laenge]['rekorde'] = $row['rekorde']; } $_tmpl->assign('fehler',$f); $_tmpl->assign('daten',$_POST); } } $_tmpl->assign('lagen',$_lagen); $_tmpl->assign('laengen',$laengen); $_inh .= $_tmpl->fetch('zeiten/5.zeitbearbeiten-formular.inc.html'); } break; case 'aktuellezeiteneinlesen': if(!pruefeRechte('z_aktuellezeiteneinlesen')){ $_inh = T_KEINZUGRIFF; break; } require_once('class/zeiten.inc.php'); $z = new zeiten; $z->db = &$_db; $z->schreibeAktuelleZeiten(); weiterleiten('/zeiten/','Die aktuellen Zeiten wurden geschrieben.'); default: $_inh .= $_tmpl->fetch('zeiten/5.zeiten.inc.html'); break; } } # Ende Rechte-else, EOF ?>