719 lines
24 KiB
PHP
719 lines
24 KiB
PHP
<?php
|
|
setlocale(LC_ALL, 'de_DE.utf8');
|
|
|
|
require_once($basePath."/ressourcen/phpLib/cwsvJudo/miscAssis.php");
|
|
|
|
function getWkHtmlMetaDescription($wkId){
|
|
setlocale(LC_ALL, 'de_DE.utf8', 'de_DE@euro');
|
|
$retString = "";
|
|
$dbConn = getPdoDbConnection("localhost", "cwsvjudo", "cwsvjudo", "***REMOVED***");
|
|
|
|
$wkInfo = getWk($dbConn, array('wkId'=>$_GET['wkId']) );
|
|
// var_dump($wkInfo);
|
|
$retString = $wkInfo[0]['Veranstaltung']." am ".strftime("%d. %B %Y", strtotime($wkInfo[0]['Datum']))." in ".$wkInfo[0]['Ort']." für Judoka der Altersklassen ".nicerAkList($wkInfo[0]['Altersklassen']);
|
|
return $retString;
|
|
}
|
|
|
|
function echoWkTitle(){
|
|
echo( getWkName( $_GET['wkId'] ) );
|
|
}
|
|
/// Einen Wettkampfnamen per ID abfragen
|
|
|
|
function getWkName( $wkId, $alternative="Judo-Wettkampf" ){
|
|
|
|
if( !is_positive_integer($wkId) ) return $alternative;
|
|
|
|
if( empty($optionsArray['dbCharset']) ) $optionsArray['dbCharset'] = "ISO-8859-1";
|
|
if( empty($optionsArray['outCharset']) ) $optionsArray['outCharset'] = "UTF-8";
|
|
|
|
// Datenbankverbindung bereit stellen
|
|
global $cwsvJudoConfig;
|
|
try{
|
|
$db_connection = new PDO(
|
|
'mysql:host='.$cwsvJudoConfig["db"]["host"].';dbname='.$cwsvJudoConfig["db"]["name"],
|
|
$cwsvJudoConfig["db"]["user"],
|
|
$cwsvJudoConfig["db"]["password"]
|
|
);
|
|
}
|
|
catch(PDOException $db_error){
|
|
// $siteData['errors'][] = "Error!: " . $db_error->getMessage();
|
|
return $alternative;
|
|
}
|
|
|
|
try{
|
|
$pdoStatementForQuerryingWkById = $db_connection->prepare(
|
|
"SELECT Veranstaltung, Datum FROM cwsvjudo.wettkampfkalender WHERE wettkampfkalender.lfdeNr = :wkId;"
|
|
);
|
|
$pdoStatementForQuerryingWkById->bindParam(':wkId', intval($wkId), PDO::PARAM_INT);
|
|
$pdoStatementForQuerryingWkById->execute();
|
|
$ret = $pdoStatementForQuerryingWkById->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
return iconv($optionsArray['dbCharset'], $optionsArray['outCharset'], $ret[0]['Veranstaltung']." am ".$ret[0]['Datum']);
|
|
}
|
|
catch(PDOException $db_error){
|
|
// $siteData['errors'][] = "Error!: " . $db_error->getMessage();
|
|
return $alternative;
|
|
}
|
|
return $alternative;
|
|
}
|
|
|
|
/// Wettkämpfe 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
|
|
/// @optionsArray
|
|
/// dbCharset - Zeichensatz der Datenbank
|
|
/// outCharset - Ausgabezeichensatz in den konvertiert werden soll
|
|
/// @return Array von Wettkampfdaten im Erfolsfalle (evtl. aber leer, wenn in der Datenbank keine entsprechenden Nachrichten gefunden wurden), sonst NULL
|
|
/// ohne
|
|
function getWk($aMysqlConn, $optionsArray = array("dbCharset" => "ISO-8859-1", "outCharset" => "UTF-8", "limit" => "1", "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();
|
|
|
|
// Falls eine (valide) wkId übergeben wurde, dann sollen die Wettkämpfe ab da abgefragt werden.
|
|
if( is_positive_integer($optionsArray['wkId']) ){
|
|
// datenbank.tabelle könnte noch variabel gestaltet werden
|
|
$pdoStatementForQuerryingWkById = $aMysqlConn->prepare(
|
|
"SELECT * FROM cwsvjudo.wettkampfkalender WHERE wettkampfkalender.lfdeNr = :wkId UNION SELECT * FROM cwsvjudo.wettkampfkalender WHERE ( wettkampfkalender.Datum <= (SELECT wettkampfkalender.Datum FROM wettkampfkalender WHERE wettkampfkalender.lfdeNr = :wkId ) ) AND ( wettkampfkalender.lfdeNr != :wkId ) ORDER BY Datum DESC LIMIT :limit OFFSET 0;"
|
|
);
|
|
$pdoStatementForQuerryingWkById->bindParam(':limit', intval($optionsArray['limit']), PDO::PARAM_INT);
|
|
$pdoStatementForQuerryingWkById->bindParam(':wkId', intval($optionsArray['wkId']), PDO::PARAM_INT);
|
|
$pdoStatementForQuerryingWkById->execute();
|
|
$ret = $pdoStatementForQuerryingWkById->fetchAll(PDO::FETCH_ASSOC);
|
|
}
|
|
else{
|
|
$pdoStatementForQuerryingWkById = $aMysqlConn->prepare(
|
|
"SELECT * FROM wettkampfkalender ORDER BY Datum DESC, lfdeNr DESC LIMIT :limit;"
|
|
);
|
|
$pdoStatementForQuerryingWkById->bindParam(':limit', intval($optionsArray['limit']), PDO::PARAM_INT);
|
|
$pdoStatementForQuerryingWkById->execute();
|
|
$ret = $pdoStatementForQuerryingWkById->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;
|
|
}
|
|
|
|
/// 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
|
|
/// @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.wkId = :wkId;"
|
|
);
|
|
$pdoStatementForQuerryingGalById->bindParam(':wkId', intval($optionsArray['wkId']), 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;
|
|
}
|
|
|
|
/// Aus einer Liste von Wettkämpfen den htmlCode der Wettkampftabelle bereit stellen
|
|
function wkList2htmlWkTable( $aWkList, $someOptions = [] ){
|
|
setlocale(LC_ALL, 'de_DE.utf8');
|
|
|
|
require_once("./config.inc.php");
|
|
require_once("/users/cwsvjudo/www/ressourcen/phpLib/phpqrcode/qrlib.php");
|
|
|
|
|
|
if( empty($aWkList) )
|
|
return "";
|
|
|
|
$htmlWkTableString = "";
|
|
|
|
$htmlWkTableString .=
|
|
"<table class=\"wkKalender\">".
|
|
"<thead>".
|
|
"<tr>".
|
|
"<th>Datum</th>".
|
|
"<th>Veranstaltung</th>".
|
|
"<th>Ort</th>".
|
|
"<th>Altersklasse(n)</th>".
|
|
"<th>iCal</th>".
|
|
"</tr>".
|
|
"</thead>".
|
|
"<tbody>";
|
|
|
|
$lastMonthName = "";
|
|
|
|
foreach($aWkList as $wk){
|
|
// Zeichensatzkonvertierung
|
|
array_walk(
|
|
$wk,
|
|
function (&$value, $key){
|
|
$value = iconv("ISO-8859-1", "UTF-8", $value);
|
|
}
|
|
);
|
|
|
|
if($lastMonthName != strftime("%B %Y", strtotime($wk['Datum']) )){
|
|
$lastMonthName = strftime("%B %Y", strtotime($wk['Datum']) );
|
|
$htmlWkTableString .= "<tr id=\"".toAscii(strftime("%b %Y", strtotime($wk['Datum']) ))."\"><th colspan=\"5\" >".$lastMonthName."</th></tr><tr class=\"displayNone\" ><th colspan=\"5\"></th></tr>";
|
|
}
|
|
|
|
$wkJsonSd = wkArray2jsonSdEvent($wk);
|
|
|
|
// 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("pokal", "­pokal", $wk['Veranstaltung']);
|
|
$wk['Veranstaltung'] =
|
|
str_replace("randori", "­randori", $wk['Veranstaltung']);
|
|
$wk['Veranstaltung'] =
|
|
str_replace("spiele", "­spiele", $wk['Veranstaltung']);
|
|
$wk['Veranstaltung'] =
|
|
str_replace("mannschaft", "mann­schaft", $wk['Veranstaltung']);
|
|
|
|
$htmlWkTableString .=
|
|
// "<a href=\"http://cwsvjudo.bplaced.net/wkKalender/".$wk['lfdeNr']."/".toAscii( html_entity_decode( $wk['Veranstaltung'] ))."-am-".$wk['Datum']."\"><tr>".
|
|
"<tr>".
|
|
"<script type=\"application/ld+json\">".$wkJsonSd."</script>".
|
|
"<td data-title=\"Datum\" class=\"noWrap\">".
|
|
"<a href=\"http://cwsvjudo.bplaced.net/wkKalender/".$wk['lfdeNr']."/".toAscii( html_entity_decode( $wk['Veranstaltung'] ))."-am-".$wk['Datum']."\">".
|
|
"<time class=\"kalenderDatum\" datetime=".$wk['Datum'].">".
|
|
"<span>".strftime("%Y", strtotime($wk['Datum']))."</span>".
|
|
"<span>".strftime("%B", strtotime($wk['Datum']))."</span>".
|
|
"<span>".strftime("%d", strtotime($wk['Datum']))."</span>".
|
|
"<span>".strftime("%A", strtotime($wk['Datum']))."</span>".
|
|
"</time>".
|
|
"</a>".
|
|
"</td>".
|
|
"<td data-title=\"Ausschreibung\" class=\"hyphenate\">".
|
|
"<a title=\"Ausschreibung ".$wk['Veranstaltung']."\" href=\"http://cwsvjudo.bplaced.net".$wk['Ausschreibung']."\"><span property=\"name\">".$wk['Veranstaltung']."</span></a>".
|
|
"</td>".
|
|
"<td data-title=\"Wegbeschreibung\">".
|
|
"<a title=\"Wegbeschreibung ".$wk['Veranstaltung']."\" href=\"".$wk['Routenplaner']."\"><span>".$wk['Ort']."</span></a>".
|
|
"</td>".
|
|
"<td data-title=\"Altersklassen\" class=\"tooltip\">".
|
|
$wk['Altersklassen']."<span class=\"tooltiptext\">".json_encode(akListString2jgArray($wk['Altersklassen']))."</span>".
|
|
"</td>".
|
|
"<td data-title=\"iCal\">".
|
|
"<a title=\"Termin für ".$wk['Veranstaltung']." in Kalender übernehmen\" href=\"/ressourcen/phpLib/calendar.php?wkID=".$wk['lfdeNr']."\">iCal</a>".
|
|
"<img class=\"print-only\" alt=\"http://cwsvjudo.bplaced.net/wkKalender/".$wk['lfdeNr']."/".toAscii( html_entity_decode( $wk['Veranstaltung'] ))."-am-".$wk['Datum']."\" height=\"111\" width=\"111\" src=\"http://cwsvjudo.bplaced.net/pages/responsive/wkQrCode.php?id=".$wk['lfdeNr']."\" />".
|
|
"</td>".
|
|
"</tr>\n";
|
|
}
|
|
$htmlWkTableString .=
|
|
"</tbody>".
|
|
"<tfoot>".
|
|
"<tr>".
|
|
"<th>Datum</th>".
|
|
"<th>Veranstaltung</th>".
|
|
"<th>Ort</th>".
|
|
"<th>Altersklasse(n)</th>".
|
|
"<th>iCal</th>".
|
|
"</tr>".
|
|
"</tfoot>".
|
|
"</table>";
|
|
|
|
// Für den Fall einer ampSeite müssen die imgTags angepasst werden
|
|
if( strpos( $_SERVER['ORIG_PATH_TRANSLATED'], "pages/amp" ) !== false ){
|
|
$htmlWkTableString = str_replace(
|
|
"<img",
|
|
// width und height sind gesetzt
|
|
// @todo: es sollte besser gehen!
|
|
// "<amp-img layout=\"responsive\" width=\"".($aNews['promoImg']['width']?$aNews['promoImg']['width']:"200")."\" height=\"".($aNews['promoImg']['height']?$aNews['promoImg']['height']:"133")."\"",
|
|
"<amp-img layout=\"responsive\" ",
|
|
$htmlWkTableString
|
|
);
|
|
$htmlWkTableString = str_replace("/>", "></amp-img>", $htmlWkTableString);
|
|
}
|
|
|
|
return $htmlWkTableString;
|
|
}
|
|
|
|
function nicerAkList($akArray){
|
|
$ret=explode( " ", $akArray );
|
|
|
|
$last = array_slice($ret, -1);
|
|
$first = join(', ', array_slice($ret, 0, -1));
|
|
$both = array_filter(array_merge(array($first), $last), 'strlen');
|
|
|
|
$ret = join(' und ', $both);
|
|
return $ret;
|
|
}
|
|
|
|
/// Als String gegebene Altersklassen als Jahrgangsintervalle
|
|
/// ausdrücken
|
|
function akListString2jgArray($akListString, $year = NULL ){
|
|
$ret = array();
|
|
|
|
if($year==NULL)
|
|
$year=date("Y");
|
|
else{
|
|
if( !((int)$year == $year && (int)$year >= 0) )
|
|
$year=date("Y");
|
|
}
|
|
|
|
$year = (int)$year;
|
|
|
|
foreach(explode(" ", $akListString) as $ak)
|
|
array_push(
|
|
$ret,
|
|
akString2jgIntervall($ak, $year)
|
|
);
|
|
|
|
return $ret;
|
|
}
|
|
|
|
|
|
/// Aus einer als String gegebenen Altersklasse ein Jahrgangsintervall
|
|
/// machen
|
|
function akString2jgIntervall($akString, $year){
|
|
$ret= array(NULL, NULL);
|
|
|
|
// Speziell für die Ux-Altersklassen
|
|
// Es fehlt noch das <=U
|
|
$akUmatchString = "/(.*)U(.*)/";
|
|
|
|
$matches = array();
|
|
|
|
preg_match($akUmatchString, $akString, $matches);
|
|
// Wenn wir nicht den gesamten akString Matchen ist etwas schief
|
|
// gelaufen
|
|
if($matches[0]==$akString){
|
|
// Das ausgelesene Alter der Ux sollte eine positive Integer sein,
|
|
// sonst ist was schiefgelaufen
|
|
$ageLimit = (int)$matches[2];
|
|
if( ($ageLimit == $matches[2] && $ageLimit > 0) ){
|
|
$ret[0] = $year-$ageLimit+1;
|
|
|
|
if($matches[1] == "")
|
|
$ret[1] = $year-$ageLimit+2;
|
|
else{
|
|
if($matches[1] == "-")
|
|
$ret[1] = $year-$ageLimit+3;
|
|
else{
|
|
if($matches[1] == "--")
|
|
$ret[1] = $year-$ageLimit+4;
|
|
}
|
|
}
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
// Speziell Altersklassen der Form Jg.x-y
|
|
$akUmatchString = "/Jg\.(.*)\-(.*)/";
|
|
|
|
$matches = array();
|
|
|
|
preg_match($akUmatchString, $akString, $matches);
|
|
// Wenn wir nicht den gesamten akString Matchen ist etwas schief
|
|
// gelaufen
|
|
if($matches[0]==$akString){
|
|
$ret[0]=(int)$matches[1];
|
|
$ret[1]=(int)$matches[2];
|
|
|
|
return $ret;
|
|
}
|
|
|
|
return $ret;
|
|
}
|
|
|
|
/// Wettkampfdaten als json-formatierte strukturierte Event-Daten
|
|
function wkArray2jsonSdEvent($wk){
|
|
return
|
|
"{".
|
|
"\"@context\": \"http://schema.org\",".
|
|
"\"@type\": \"Event\",".
|
|
"\"name\": \"".html_entity_decode( $wk['Veranstaltung'] )."\",".
|
|
"\"startDate\": \"".$wk['Datum']."\",".
|
|
"\"endDate\": \"".$wk['Datum']."\",".
|
|
// "\"url\": \"http://cwsvjudo.bplaced.net/pages/desktop/verein.wettkampfkalender.php?wkId=".$wk['lfdeNr']."\",".
|
|
"\"url\": \"http://cwsvjudo.bplaced.net/wkKalender/".$wk['lfdeNr']."/".toAscii( html_entity_decode( $wk['Veranstaltung'] ))."-am-".$wk['Datum']."\",".
|
|
"\"description\": \"Judo-Wettkampf der Altersklasse(n) ".nicerAkList( $wk['Altersklassen'] )."\",".
|
|
"\"performer\": {".
|
|
"\"@type\": \"PerformingGroup\",".
|
|
"\"name\": \"Judoka der Altersklasse(n) ".nicerAkList( $wk['Altersklassen'] )."\"".
|
|
"},".
|
|
"\"location\": {".
|
|
"\"@type\": \"Place\",".
|
|
"\"name\": \"".$wk['Ort']."\",".
|
|
"\"address\": {".
|
|
"\"@type\": \"PostalAddress\",".
|
|
"\"addressLocality\": \"".$wk['Ort']."\"".
|
|
"}".
|
|
"}".
|
|
"}";
|
|
}
|
|
|
|
function wkTableHtml(){
|
|
global $cwsvJudoConfig;
|
|
// Datenbankverbindung bereit stellen
|
|
try{
|
|
$db_connection = new PDO(
|
|
'mysql:host='.$cwsvJudoConfig["db"]["host"].';dbname='.$cwsvJudoConfig["db"]["name"],
|
|
$cwsvJudoConfig["db"]["user"],
|
|
$cwsvJudoConfig["db"]["password"]
|
|
);
|
|
}
|
|
catch(PDOException $db_error){
|
|
$siteData['errors'][] = "Error!: " . $db_error->getMessage();
|
|
}
|
|
|
|
// Abfrage der Wettkampfdaten der Einzelansicht
|
|
if(!empty($_GET['wkId'])){
|
|
$wkInfo=getWk ($db_connection, array('wkId'=>$_GET['wkId']) );
|
|
$wkGals=getGal($db_connection, array('wkId'=>$_GET['wkId']) );
|
|
// var_dump($wkInfo);
|
|
}
|
|
// var_dump($wkInfo);
|
|
|
|
// Eine Einzelansicht, falls ein wkInfo ausgefüllt wurde
|
|
if( !empty($wkInfo) ){
|
|
foreach($wkInfo as $wk){
|
|
$siteData['mainContent'] .=
|
|
"<script type=\"application/ld+json\">".breadrumbsSd(
|
|
array(
|
|
array(
|
|
'url'=>"http://cwsvjudo.bplaced.net", 'name'=>"cwsvJudo"
|
|
),
|
|
array(
|
|
'url'=>"http://cwsvjudo.bplaced.net/wkKalender", 'name'=>"Wettkampfkalender"
|
|
),
|
|
array(
|
|
'url'=>"http://cwsvjudo.bplaced.net/wkKalender/".$wk['lfdeNr'],'name'=>$wk['Veranstaltung']
|
|
)
|
|
)
|
|
)."</script>".
|
|
// "<h1>Einzelansicht</h1>".
|
|
// "<style>.wkInfoBox{box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px;}</style>".
|
|
// "<style>.wkInfoBox h1{background:#FF8100;font-size: 1.2em;margin: 0;}</style>".
|
|
// "<style>.wkInfoBox h2{background:#FF8100;font-size: 1.1em;margin: 0;}</style>".
|
|
"<div class=\"wkInfoBox\">".
|
|
"<script type=\"application/ld+json\">".wkArray2jsonSdEvent($wk)."</script>".
|
|
// "<h2>".$wk['Veranstaltung']."</h2>".
|
|
"<h1>".$wk['Veranstaltung']."</h1>";
|
|
|
|
$siteData['mainContent'] .=
|
|
// "<h2>Veranstaltungsdaten</h2>".
|
|
"<ul>".
|
|
"<li>Datum: <time datetime=".$wk['Datum'].">".strftime("%a, %d. %B %Y", strtotime($wk['Datum']))."</time></li>".
|
|
"<li>Altersklassen: ".$wk['Altersklassen']."</li>".
|
|
"<li>Ort: <a href=\"".$wk['Routenplaner']."\">".$wk['Ort']."</a></li>".
|
|
"</ul>".
|
|
(!empty($wkGals)?"<h2>Galerien</h2>":"").
|
|
wkBoxMediaGalleryHtml($wkGals).
|
|
"<h2>Links</h2>".
|
|
"<nav>".
|
|
"<ul>".
|
|
"<li><a href =\"".$wk['Ausschreibung']."\"><div>Link zur Ausschreibung</div></a></li>".
|
|
"<li><a href =\"".$wk['Routenplaner'] ."\"><div>Link zum Routenplaner</div></a></li>".
|
|
"<li><a href =\"/ressourcen/phpLib/calendar.php?wkID=".$wk['lfdeNr']."\"><div>Termin in Kalender übernehmen</div></a></li>";
|
|
$siteData['mainContent'] .=
|
|
"</ul>".
|
|
"</nav>".
|
|
"</div>".
|
|
"<hr />";
|
|
}
|
|
}
|
|
else{
|
|
$siteData['mainContent'] .= $message['error'];
|
|
}
|
|
|
|
try{
|
|
$db_connection = new PDO(
|
|
'mysql:host='.$cwsvJudoConfig["db"]["host"].';dbname='.$cwsvJudoConfig["db"]["name"],
|
|
$cwsvJudoConfig["db"]["user"],
|
|
$cwsvJudoConfig["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 = is_positive_integer($_GET["jahr"])?$_GET["jahr"]:NULL;
|
|
|
|
if($jahr){
|
|
if(in_array($jahr, $jahre)){
|
|
$minDate = $jahr."-01-01";
|
|
$maxDate = $jahr."-12-31";
|
|
$siteData['mainContent'] .=
|
|
"<h2>Wettkampfkalender ".$jahr."</h2>";
|
|
$siteData['mainContent'].=
|
|
"<div class=\"nonePrint\" style=\"display:flex;justify-content:space-between;\">";
|
|
|
|
if(in_array((intval($_GET["jahr"])-1), $jahre)){
|
|
$siteData['mainContent'].=
|
|
"<a class=\"touchLink\" href=\"http://cwsvjudo.bplaced.net/wkKalender?jahr=".
|
|
(is_positive_integer($_GET["jahr"])?intval($_GET["jahr"])-1:"").
|
|
"\">".(is_positive_integer($_GET["jahr"])?intval($_GET["jahr"])-1:"")."</a>";
|
|
}
|
|
else $siteData['mainContent'].="<a></a>";
|
|
// var_dump($_GET, $jahre);
|
|
if(in_array((intval($_GET["jahr"])+1), $jahre)){
|
|
$siteData['mainContent'].=
|
|
"<a class=\"touchLink\" href=\"http://cwsvjudo.bplaced.net/wkKalender?jahr=".
|
|
(is_positive_integer($_GET["jahr"])?intval($_GET["jahr"])+1:"").
|
|
"\">".(is_positive_integer($_GET["jahr"])?intval($_GET["jahr"])+1:"")."</a>";
|
|
}
|
|
else $siteData['mainContent'].="<a></a>";
|
|
$siteData['mainContent'].=
|
|
"</div>";
|
|
}
|
|
else{
|
|
$siteData['mainContent'] .=
|
|
"Keine Wettkämpfe für das Jahr".$jahr." gefunden!";
|
|
}
|
|
}
|
|
else{
|
|
$minDate = date("Y-m-d", time());
|
|
$maxDate = "";
|
|
$siteData['mainContent'] .=
|
|
"<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);
|
|
|
|
$siteData['mainContent'] .= htmlWkMonthBar($ergebnis);
|
|
|
|
$ergebnis = $db_connection->query($query);
|
|
$siteData['mainContent'] .= wkList2htmlWkTable($ergebnis);
|
|
|
|
$siteData['mainContent'] .=
|
|
"<div class=\"fontSizeXxSmall\">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>.";
|
|
/* @todo: Wettkampfselektor wieder ergänzen
|
|
<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();
|
|
}
|
|
|
|
//var_dump( $siteData['errors'] );
|
|
echo( $siteData['mainContent'] );
|
|
return;
|
|
}
|
|
|
|
/// Eine Box mit allen Informationen/Links eines Wettkampfes
|
|
function wkInfoBoxHtml($aWk){
|
|
//var_dump($aWk);
|
|
if(empty($aWk)) return null;
|
|
|
|
$wkInfoBoxHtml .=
|
|
breadrumbsSd(
|
|
array(
|
|
array(
|
|
'url'=>"http://cwsvjudo.bplaced.net", 'name'=>"cwsvJudo"
|
|
),
|
|
array(
|
|
'url'=>"http://cwsvjudo.bplaced.net/wkKalender", 'name'=>"Wettkampfkalender"
|
|
),
|
|
array(
|
|
'url'=>"http://cwsvjudo.bplaced.net/wkKalender/".$aWk['lfdeNr'],'name'=>$aWk['Veranstaltung']
|
|
)
|
|
)
|
|
).
|
|
"<div class=\"wkInfoBox\">".wkArray2jsonSdEvent($aWk).
|
|
"<h1>Einzelansicht ".$aWk['Veranstaltung']."</h1>".
|
|
"<h2>Veranstaltungsdaten</h2>".
|
|
"<ul>".
|
|
"<li>Datum: <time datetime=".$aWk['Datum'].">".strftime("%a, %d. %B %Y", strtotime($aWk['Datum']))."</time></li>".
|
|
"<li>Altersklassen: ".$aWk['Altersklassen']."</li>".
|
|
"<li>Ort: <a href=\"".$aWk['Routenplaner']."\">".$aWk['Ort']."</a></li>".
|
|
"</ul>".
|
|
"<h2>Links zur Veranstaltung</h2>".
|
|
"<nav>".
|
|
"<ul>".
|
|
"<li><a href =\"".$aWk['Ausschreibung']."\"><div>Link zur Ausschreibung</div></a></li>".
|
|
"<li><a href =\"".$aWk['Routenplaner'] ."\"><div>Link zum Routenplaner</div></a></li>";
|
|
(
|
|
(date("Y-m-d")<$aWk['Datum'])
|
|
?("<li><a href =\"/ressourcen/phpLib/calendar.php?wkID=".$wk['lfdeNr']."\"><div>Termin in Kalender übernehmen</div></a></li>")
|
|
:("")
|
|
);
|
|
$wkGals = getGal(getCwsvJudoDbConn(), array( 'wkId'=>$aWk['lfdeNr']));
|
|
if( !empty($wkGals) ){
|
|
foreach($wkGals as $wkGal){
|
|
$wkInfoBoxHtml .=
|
|
"<li><a href=\"".$wkGal['url']."\">";
|
|
switch( $wkGal['typ'] ){
|
|
case "Videos":
|
|
$wkInfoBoxHtml .=
|
|
"<img width=48 height=48 src=\"/ressourcen/graphiken/icons/filmrolle-grau.svg\" alt=\"Videos\"/>";
|
|
break;
|
|
case "Bilder":
|
|
$wkInfoBoxHtml .=
|
|
"<img width=48 height=48 src=\"/ressourcen/graphiken/icons/kamera-grau.svg\" alt=\"Bilder\"/>";
|
|
break;
|
|
default:
|
|
$wkInfoBoxHtml .=
|
|
$wkGal['typ']."galerie";
|
|
}
|
|
$wkInfoBoxHtml .=
|
|
"</a></li>";
|
|
}
|
|
}
|
|
$wkInfoBoxHtml .= "</ul></nav></div>";
|
|
return $wkInfoBoxHtml;
|
|
}
|
|
|
|
|
|
function wkBoxMediaGalleryHtml($wkGals){
|
|
if(empty($wkGals)) return "";
|
|
$retHtml = "";
|
|
|
|
|
|
$retHtml .= "<div class=\"wkBoxMediaGallery\">";
|
|
|
|
foreach($wkGals as $wkGal){
|
|
if( empty($wkGal['teaserBildUrl']) ){
|
|
$wkGal['teaserBildUrl']="http://cwsvjudo.bplaced.net/ressourcen/graphiken/logos/cwsvJudoLogoWappen.256w.png"; // @toDo: sollte nicht hardcoded sein!
|
|
}
|
|
$retHtml.=
|
|
"<a class=\"textoverlayedImage\" href=\"".$wkGal['url']."\">";
|
|
|
|
if(strpos( $_SERVER['ORIG_PATH_TRANSLATED'], "pages/amp" ) !== false)
|
|
$retHtml .= "<amp-img layout=\"responsive\" ";
|
|
else
|
|
// $retHtml .= "<img class=\"valignMiddle\" ";
|
|
$retHtml .= "<img ";
|
|
|
|
$retHtml .=
|
|
"alt=\"".$wkGal['name']."\" width=\"200\" height=\"133\" class=\"valignMiddle\" src=\"".
|
|
$wkGal['teaserBildUrl']."\"";
|
|
|
|
if(strpos( $_SERVER['ORIG_PATH_TRANSLATED'], "pages/amp" ) !== false)
|
|
$retHtml .= "></amp-img>";
|
|
else
|
|
$retHtml .= "/>";
|
|
|
|
$retHtml .=
|
|
"<div><p class=\"touchLink\" style=\"opacity:.8\">".$wkGal['typ']."galerie</p></div>";
|
|
|
|
$retHtml .= "</a>";
|
|
}
|
|
|
|
$retHtml .= "</div>"; // Ende wkBoxMediaGallery
|
|
|
|
return $retHtml;
|
|
}
|
|
|
|
/// Eine Navigationsleiste mit den Wettkampfmonaten einer Wettkampfliste
|
|
function htmlWkMonthBar($aWkList){
|
|
setlocale(LC_ALL, 'de_DE.utf8');
|
|
|
|
$wkMonthBar = "";
|
|
$wkMonthBar .= "<nav class=\"wkMonthBar\" >";
|
|
|
|
$lastMonthName = "";
|
|
foreach($aWkList as $wk){
|
|
if($lastMonthName != strftime("%b %Y", strtotime($wk['Datum']) )){
|
|
$lastMonthName = strftime("%b %Y", strtotime($wk['Datum']) );
|
|
$wkMonthBar .= "<a href=\"#".toAscii($lastMonthName)."\">".$lastMonthName."</a>";
|
|
}
|
|
}
|
|
|
|
$wkMonthBar .= "</nav>";
|
|
|
|
return $wkMonthBar;
|
|
}
|
|
|
|
/// Breadcrumbs als structured Data
|
|
/// @param bcList Liste mit Breadcrumbs
|
|
function breadrumbsSd($bcList){
|
|
if (is_array($bcList) || is_object($bcList)){
|
|
$bcItemList = array();
|
|
$i=1;
|
|
foreach ($bcList as $bcItem){
|
|
$bcItemList[] = array(
|
|
'@type' => "ListItem",
|
|
'position' => $i,
|
|
'item' => array(
|
|
'@id' => $bcItem['url'],
|
|
'name' => $bcItem['name']
|
|
)
|
|
);
|
|
$i = $i+1;
|
|
}
|
|
return json_encode(array(
|
|
'@context' => "http://schema.org",
|
|
'@type' => "BreadcrumbList",
|
|
'itemListElement' => $bcItemList
|
|
), JSON_UNESCAPED_SLASHES);
|
|
|
|
}
|
|
return "blub";
|
|
}
|
|
?>
|