Files
cwsvJudo/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/wkKalender.php.bak
2018-06-25 20:09:57 +02:00

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", "&shy;meisterschaft", $wk['Veranstaltung']);
$wk['Veranstaltung'] =
str_replace("turnier", "&shy;turnier", $wk['Veranstaltung']);
$wk['Veranstaltung'] =
str_replace("randori", "&shy;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&shy;k&auml;mpfe</li>";
}
else{
echo "<li><a href=\"/pages/desktop/verein.wettkampfkalender.php\">komm&shy;ende Wett&shy;k&auml;mpfe</a></li>";
}
foreach($jahre as $runner){
if($_GET["jahr"] == $runner){
echo "<li class=\"activeNav\"> Wett&shy;k&auml;mpfe ".$runner."</li>";
}
else{
echo "<li><a href=\"/pages/desktop/verein.wettkampfkalender.php?jahr=".$runner."\">Wett&shy;k&auml;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;
}
?>