324 lines
13 KiB
PHP
324 lines
13 KiB
PHP
<?php
|
|
|
|
/// Abfrage der Daten eines Wettkampfes via ID
|
|
/// Da über den primary key abgefragt wird, erfolgt keine Kontrolle, ob nur ein Ergebnis geliefert wurde
|
|
function getWkData($anMysqlConn, $anWkId){
|
|
$query = sprintf(
|
|
"SELECT * FROM wettkampfkalender WHERE lfdeNr='%s';",
|
|
$anMysqlConn->real_escape_string($anWkId)
|
|
);
|
|
$results = $anMysqlConn->query($query);
|
|
if( !$results ) die("ERR: Fehler bei Datenbankabfrage (".$query.")!\n");
|
|
$ret = $results->fetch_assoc();
|
|
return $ret;
|
|
}
|
|
|
|
/// Einen Gallerie per ID abfragen
|
|
///
|
|
/// Der Rückgabewert sollte vor Verwendung (und zur Fehlerbehandlung)
|
|
/// auf NULL und/oder leeres Array getestet werden.
|
|
/// Der Zeichensatz wird von "ISO-8859-1" auf "UTF-8" gesetzt
|
|
/// @aMysqlConn
|
|
/// mySql-Datenbankverbindung via PDO
|
|
/// @optionsArray
|
|
/// dbCharset - Zeichensatz der Datenbank
|
|
/// outCharset - Ausgabezeichensatz in den konvertiert werden soll
|
|
/// @return Array von Galleriedaten im Erfolsfalle (evtl. aber leer, wenn in der Datenbank keine entsprechenden Nachrichten gefunden wurden), sonst NULL
|
|
function getGal($aMysqlConn, $optionsArray = array("dbCharset" => "ISO-8859-1", "outCharset" => "UTF-8", "limit" => "1", "galId" => "0", "wkId"=>"0")){
|
|
if(!$aMysqlConn) return NULL;
|
|
|
|
if( empty($optionsArray['dbCharset']) ) $optionsArray['dbCharset'] = "ISO-8859-1";
|
|
if( empty($optionsArray['outCharset']) ) $optionsArray['outCharset'] = "UTF-8";
|
|
|
|
if( !is_positive_integer($optionsArray['limit']) ) $optionsArray['limit'] = "1";
|
|
|
|
$ret = array();
|
|
|
|
if( is_positive_integer($optionsArray['wkId']) ){
|
|
// datenbank.tabelle könnte noch vaiabel gestaltet werden
|
|
$pdoStatementForQuerryingGalById = $aMysqlConn->prepare(
|
|
"SELECT * FROM cwsvjudo.wkGalerien WHERE wkGalerien.datum <= (SELECT wkGalerien.datum FROM wkGalerien WHERE wkGalerien.wkId = :wkId ) ORDER BY wkGalerien.datum DESC LIMIT :limit OFFSET 0;"
|
|
);
|
|
$pdoStatementForQuerryingGalById->bindParam(':limit', intval($optionsArray['limit']), PDO::PARAM_INT);
|
|
$pdoStatementForQuerryingGalById->bindParam(':wkId', intval($optionsArray['wkId']), PDO::PARAM_INT);
|
|
$pdoStatementForQuerryingGalById->execute();
|
|
$ret = $pdoStatementForQuerryingGalById->fetchAll(PDO::FETCH_ASSOC);
|
|
}
|
|
else{
|
|
$pdoStatementForQuerryingGalById = $aMysqlConn->prepare(
|
|
"SELECT * FROM wkGalerien ORDER BY datum DESC, id DESC LIMIT :limit;"
|
|
);
|
|
$pdoStatementForQuerryingGalById->bindParam(':limit', intval($optionsArray['limit']), PDO::PARAM_INT);
|
|
$pdoStatementForQuerryingGalById->execute();
|
|
$ret = $pdoStatementForQuerryingGalById->fetchAll(PDO::FETCH_ASSOC);
|
|
}
|
|
// Zeichensatzkonvertierung
|
|
foreach($ret as &$entry){
|
|
array_walk(
|
|
$entry,
|
|
function (&$value, $key, $optionsArray) {
|
|
$value = iconv($optionsArray['dbCharset'], $optionsArray['outCharset'], $value);
|
|
},
|
|
$optionsArray
|
|
);
|
|
}
|
|
|
|
return $ret;
|
|
}
|
|
|
|
// Ausgabe der Wettkampftabelle
|
|
// @todo: elaborieren
|
|
function wkTableHtml(){
|
|
global $cwsvJudoConfig;
|
|
// Vermutung ist, dass $__GET sowieso (?super?)global
|
|
// global $__GET
|
|
global $basePath;
|
|
//require_once($basePath."/bonus/db.inc");
|
|
//include_once($basePath."/bonus/db.inc");
|
|
|
|
// Deutsches Datumsformat
|
|
setlocale(LC_ALL, 'de_DE');
|
|
|
|
$message = array();
|
|
|
|
if(is_positive_integer($_GET['wkId'])){
|
|
// $sqlConn = @new mysqli($db_server, $db_user, $db_password, $db_name);
|
|
$sqlConn = @new mysqli(
|
|
$cwsvJudoConfig["db"]["host"],
|
|
$cwsvJudoConfig["db"]["user"],
|
|
$cwsvJudoConfig["db"]["password"],
|
|
$cwsvJudoConfig["db"]["name"]
|
|
);
|
|
if ($sqlConn->connect_error) {
|
|
$message['error'] .= "Datenbankverbindung fehlgeschlagen: " . $sqlConn->connect_error . "<br />";
|
|
}
|
|
else{
|
|
$wkData = getWkData($sqlConn, $_GET["wkId"]);
|
|
if( empty($wkData) ) $message['error'] .= "Fehler: WettkampfId ".$_GET['wkId']." nicht gefunden!<br />";
|
|
}
|
|
}
|
|
// else $message['error'] .= "Fehler: wkId ist kein pos. Int (".$_GET['wkId'].")<br />";
|
|
|
|
if(!empty($message['error']))
|
|
echo( "<div class=\"messageBox\">".$message['error']."</div>" );
|
|
|
|
if( !empty($wkData) ){
|
|
echo( "<h1>Wettkampfdaten ".mb_convert_encoding($wkData['Veranstaltung'], 'UTF-8', 'ISO-8859-1')."</h1>" );
|
|
|
|
echo( "<ul>" );
|
|
echo( "<li>Datum: ".$wkData['Datum']."</li>" );
|
|
echo( "<li>AK: ".mb_convert_encoding($wkData['Altersklassen'], 'UTF-8', 'ISO-8859-1')."</li>" );
|
|
echo( "<li>Ort: ".mb_convert_encoding($wkData['Ort'], 'UTF-8', 'ISO-8859-1')."</li>" );
|
|
echo( "<li><a href=\"".$wkData['Ausschreibung']."\">Ausschreibung</a></li>" );
|
|
echo( "<li><a href=\"".$wkData['Routenplaner']."\">Routenplaner</a></li>" );
|
|
echo( "<li>Galerie: ".$wkData['galleryLink']."</li>" );
|
|
echo( "<li>PromoPic: ".$wkData['promoPic']."</li>" );
|
|
echo( "</ul>" );
|
|
}
|
|
|
|
try{
|
|
$db_connection = new PDO('mysql:host='.$db_server.';dbname='.$db_name, $db_user, $db_password);
|
|
|
|
// mögliche Werte für das jahr herausfinden
|
|
$jahre = array();
|
|
$query = "SELECT DISTINCT DATE_FORMAT( Datum, '%Y') FROM cwsvjudo.wettkampfkalender WHERE 1 ORDER BY DATE_FORMAT( Datum, '%Y' ) DESC";
|
|
$ergebnis = $db_connection->query($query);
|
|
foreach($ergebnis as $row){
|
|
array_push($jahre, $row["DATE_FORMAT( Datum, '%Y')"]);
|
|
}
|
|
// ist das übergebene jahr ein gültiges?
|
|
$jahr = $_GET["jahr"];
|
|
if($jahr){
|
|
if(in_array($jahr, $jahre)){
|
|
$minDate = $jahr."-01-01";
|
|
$maxDate = $jahr."-12-31";
|
|
|
|
echo( "<h1>Wettkampfkalender ".$jahr."</h1>" );
|
|
}
|
|
else{
|
|
echo "Keine Wettkämpfe für das Jahr".$jahr." gefunden!";
|
|
// die();
|
|
}
|
|
}
|
|
else{
|
|
$minDate = date("Y-m-d", time());
|
|
$maxDate = "";
|
|
|
|
echo( "<h1>Kommende Wettkämpfe</h1>" );
|
|
}
|
|
|
|
$query="SELECT Datum,Veranstaltung,Ausschreibung,Ort,Routenplaner,Altersklassen,lfdeNr FROM wettkampfkalender WHERE Datum >= \"".$minDate."\" ORDER BY Datum ASC";
|
|
if($maxDate){
|
|
$query="SELECT Datum,Veranstaltung,Ausschreibung,Ort,Routenplaner,Altersklassen,lfdeNr FROM wettkampfkalender WHERE Datum >= \"".$minDate."\" AND Datum <= \"".$maxDate."\" ORDER BY Datum ASC";
|
|
}
|
|
$ergebnis = $db_connection->query($query);
|
|
|
|
echo( "<table class=\"wkKalender\">");
|
|
echo( "<thead><tr><th>Datum</th><th>Veranstaltung</th><th>Ort</th><th>Altersklasse(n)</th><th>iCal</th></tr></thead>" );
|
|
echo( "<tbody>" );
|
|
|
|
$ergebnis = $db_connection->query($query);
|
|
|
|
// echo( "Debug: " . gettype($ergebnis) . " " . count($ergebnis) . "\n" );
|
|
foreach($ergebnis as $wk){
|
|
echo( "<tr><script type=\"application/ld+json\">".
|
|
"{".
|
|
"\"@context\": \"http://schema.org\",".
|
|
"\"@type\": \"Event\",".
|
|
"\"name\": \"".mb_convert_encoding($wk['Veranstaltung'], 'UTF-8', 'ISO-8859-1')."\",".
|
|
"\"startDate\": \"".mb_convert_encoding($wk['Datum'], 'UTF-8', 'ISO-8859-1')."\",".
|
|
"\"endDate\": \"".mb_convert_encoding($wk['Datum'], 'UTF-8', 'ISO-8859-1')."\",".
|
|
"\"url\": \"http://cwsvjudo.bplaced.net".mb_convert_encoding($wk['Ausschreibung'], 'UTF-8', 'ISO-8859-1')."\",".
|
|
"\"description\": \"Judo-Wettkampf der Altersklasse(n) ".mb_convert_encoding($wk['Altersklassen'], 'UTF-8', 'ISO-8859-1')."\",".
|
|
"\"location\": {".
|
|
"\"@type\": \"Place\",".
|
|
"\"name\": \"".mb_convert_encoding($wk['Ort'], 'UTF-8', 'ISO-8859-1')."\",".
|
|
"\"address\": {".
|
|
"\"@type\": \"PostalAddress\",".
|
|
"\"addressLocality\": \"".mb_convert_encoding($wk['Ort'], 'UTF-8', 'ISO-8859-1')."\"".
|
|
"}".
|
|
"}".
|
|
"}".
|
|
"</script>"
|
|
);
|
|
|
|
// schlechter Hack solange die Browser nicht von selbst ordentlich trennen
|
|
$wk['Veranstaltung'] =
|
|
str_replace("meisterschaft", "­meisterschaft", $wk['Veranstaltung']);
|
|
$wk['Veranstaltung'] =
|
|
str_replace("turnier", "­turnier", $wk['Veranstaltung']);
|
|
$wk['Veranstaltung'] =
|
|
str_replace("randori", "­randori", $wk['Veranstaltung']);
|
|
|
|
echo(
|
|
"<td class=\"noWrap\">".
|
|
"<time datetime=".mb_convert_encoding($wk['Datum'], 'UTF-8', 'ISO-8859-1')."\">".strftime("<nobr>%Y-%m-%d</nobr> (%a)", strtotime($wk['Datum']) )."</time>".
|
|
"</td>".
|
|
"<td class=\"hyphenate\">".
|
|
"<a title=\"Ausschreibung ".mb_convert_encoding($wk['Veranstaltung'], 'UTF-8', 'ISO-8859-1')."\" href=\"".mb_convert_encoding($wk['Ausschreibung'], 'UTF-8', 'ISO-8859-1')."\"><span property=\"name\">".mb_convert_encoding($wk['Veranstaltung'], 'UTF-8', 'ISO-8859-1')."</span></a>".
|
|
"</td>".
|
|
"<td>".
|
|
"<a title=\"Wegbeschreibung ".mb_convert_encoding($wk['Veranstaltung'], 'UTF-8', 'ISO-8859-1')."\" href=\"".$wk['Routenplaner']."\"><span>".mb_convert_encoding($wk['Ort'], 'UTF-8', 'ISO-8859-1')."</span></a>".
|
|
"</td>".
|
|
"<td>".mb_convert_encoding($wk['Altersklassen'], 'UTF-8', 'ISO-8859-1')."</td>".
|
|
"<td>".
|
|
"<a title=\"Termin für ".mb_convert_encoding($wk['Veranstaltung'], 'UTF-8', 'ISO-8859-1')." in Kalender übernehmen\" href=\"/ressourcen/phpLib/calendar.php?wkID=".$wk['lfdeNr']."\">iCal</a>".
|
|
"</td>".
|
|
"</tr>" );
|
|
}
|
|
echo(
|
|
"</tbody>".
|
|
"<tfoot><tr><th>Datum</th><th>Veranstaltung</th><th>Ort</th><th>Altersklasse(n)</th><th>iCal</th></tr></tfoot>".
|
|
"</table>".
|
|
"<div style=\"font-size:xx-small\">Alle Angaben ohne Gewähr! Fehler und Ergänzungen dürfen gerne gemeldet werden.</div>".
|
|
"<a href=\"/downloads/Ausschreibungen/\">Link zum Archiv mit allen Ausschreibungen</a>." );
|
|
/*
|
|
<!--Ende dynamische Wettkampfliste-->
|
|
<hr />
|
|
<div class="wkSelektor">
|
|
Im folgendem kann man sich mehrere Wettkampftermine in einer <a href="https://de.wikipedia.org/wiki/ICalendar">ICalendar</a>-Datei zusammenstellen. Zum An-/Abwählen bei gedrückter Strg-Taste mit der linken Maustaste die jeweiligen Wettkämpfe anklicken.
|
|
<form action="http://cwsvjudo.bplaced.net/ressourcen/phpLib/wkCustomICal.php" method="POST">
|
|
<label>Kommende Wettkämpfe:</label>
|
|
<div><select name="wkIDs[]" multiple="multiple" size="5">
|
|
<?php
|
|
$ergebnis = $db_connection->query($query);
|
|
foreach($ergebnis as $wk){
|
|
?>
|
|
<option value="<?php echo $wk['lfdeNr'];?>">
|
|
<?php echo mb_convert_encoding($wk['Datum'], 'UTF-8', 'ISO-8859-1');?>
|
|
--
|
|
<?php echo mb_convert_encoding($wk['Veranstaltung'], 'UTF-8', 'ISO-8859-1');?>
|
|
(<?php echo mb_convert_encoding($wk['Altersklassen'], 'UTF-8', 'ISO-8859-1');?>)
|
|
</option>
|
|
<?php
|
|
}
|
|
?>
|
|
</select></div>
|
|
<button type="submit">iCal erzeugen</button>
|
|
</form>
|
|
<?php
|
|
// Verbindung wieder schließen
|
|
$db_connection = NULL;
|
|
*/
|
|
}
|
|
catch(PDOException $db_error){
|
|
print "Error!: " . $db_error->getMessage() . "<br/>";
|
|
// die();
|
|
}
|
|
/*
|
|
?>
|
|
</div>
|
|
</div> <!-- Ende div id content; des eigentlichen Inhaltes-->
|
|
<!-- Vertikale Navigationsleiste an der Seite-->
|
|
<div id="navVerti">
|
|
<nav><ul>
|
|
<?php
|
|
if(!$_GET["jahr"]){
|
|
echo "<li class=\"activeNav\">kommende Wett­kämpfe</li>";
|
|
}
|
|
else{
|
|
echo "<li><a href=\"/pages/desktop/verein.wettkampfkalender.php\">komm­ende Wett­kämpfe</a></li>";
|
|
}
|
|
foreach($jahre as $runner){
|
|
if($_GET["jahr"] == $runner){
|
|
echo "<li class=\"activeNav\"> Wett­kämpfe ".$runner."</li>";
|
|
}
|
|
else{
|
|
echo "<li><a href=\"/pages/desktop/verein.wettkampfkalender.php?jahr=".$runner."\">Wett­kämpfe ".$runner."</a></li>";
|
|
}
|
|
}
|
|
?>
|
|
</ul></nav>
|
|
<hr />
|
|
<!--Anfang der Einbindung des Counters; die Zeile 'TEMPLATE;' DARF NICHT EINGERÜCKT SEIN-->
|
|
<div>
|
|
<?php
|
|
$chCounter_template = <<<TEMPLATE
|
|
<span class="bold">Besucher</span><br/>
|
|
Online: {V_VISITORS_CURRENTLY_ONLINE}<br/>
|
|
Heute: {V_VISITORS_TODAY}<br/>
|
|
Gestern: {V_VISITORS_YESTERDAY}<br/>
|
|
Tagesrekord: {V_MAX_VISITORS_PER_DAY}<br/>
|
|
Insgesamt: {V_TOTAL_VISITORS}<br/>
|
|
<span class="bold">Seitenaufrufe</span><br/>
|
|
Diese Seite: {V_PAGE_VIEWS_THIS_PAGE}<br/>
|
|
Insgesamt: {V_TOTAL_PAGE_VIEWS}<br/>
|
|
TEMPLATE;
|
|
$chCounter_page_title = "Wettkampfkalender";
|
|
if($_GET["jahr"]){
|
|
$chCounter_page_title = "Wettkampfkalender ".$_GET["jahr"];
|
|
}
|
|
$chCounter_visible=1;
|
|
include($_SERVER['DOCUMENT_ROOT']."/expCounter/counter.php");
|
|
?>
|
|
<!--Ende der Einbindung des Counters-->
|
|
</div>
|
|
</div>
|
|
|
|
<?php include($_SERVER['DOCUMENT_ROOT']."/pages/shared/sponsorList.html.inc");?>
|
|
|
|
<footer>
|
|
<p>
|
|
<?php
|
|
if($_GET["jahr"]){
|
|
?>
|
|
<a href="http://validator.w3.org/check?uri=http%3A%2F%2Fcwsvjudo.bplaced.net%2Fpages%2Fdesktop%2Fverein.wettkampfkalender.php?jahr=<?php echo $_GET["jahr"]?>">Valid <img src="http://www.w3.org/html/logo/downloads/HTML5_1Color_Black.svg" alt="HTML 5" style="height:1em"></a>
|
|
<?php
|
|
}
|
|
else{
|
|
?>
|
|
<a href="http://validator.w3.org/check?uri=http%3A%2F%2Fcwsvjudo.bplaced.net%2Fpages%2Fdesktop%2Fverein.wettkampfkalender.php">Valid <img src="http://www.w3.org/html/logo/downloads/HTML5_1Color_Black.svg" alt="HTML 5" style="height:1em"></a>
|
|
<?php
|
|
}
|
|
?>
|
|
</p>
|
|
</footer>
|
|
<link rel="stylesheet" media="screen and (min-width: 641px)" href="/ressourcen/css/cwsvJudo.css" />
|
|
<link rel="stylesheet" media="screen and (max-width: 640px)" href="/ressourcen/css/cwsvJudoMobile.css" />
|
|
</body>
|
|
</html>
|
|
*/
|
|
return;
|
|
}
|
|
?>
|