getMessage(); } /* @todo: Bevor es entfernt wird, sollte noch verglichen werden ob in * der phpLib dieselbe Fuktion steht! /// Den htmlCode für die Haupt-Navigationsleiste bereitstellen function getHtmlMainNav($someNavElements, $someOptions = array()){ $retHtml = ""; foreach($someNavElements as $navElement){ $retHtml .= "" : ""; $retHtml .= "".(!empty($navElement['caption']) ? $navElement['caption'] : "").""; $retHtml .= ""; } return $retHtml; } */ /// 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 vaiabel gestaltet werden $pdoStatementForQuerryingWkById = $aMysqlConn->prepare( //"SELECT * FROM cwsvjudo.wettkampfkalender WHERE wettkampfkalender.Datum <= (SELECT wettkampfkalender.Datum FROM wettkampfkalender WHERE wettkampfkalender.lfdeNr = :wkId ) ORDER BY wettkampfkalender.Datum DESC LIMIT :limit OFFSET 0;" //"SELECT * FROM cwsvjudo.wettkampfkalender WHERE wettkampfkalender.Datum <= (SELECT wettkampfkalender.Datum FROM wettkampfkalender WHERE wettkampfkalender.lfdeNr = :wkId ) ORDER BY wettkampfkalender.Datum DESC;" "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); // var_dump($ret); } 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.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; } /// Aus einer Liste von Wettkämpfen den htmlCode der Wettkampftabelle bereit stellen function wkList2htmlWkTable( $aWkList, $someOptions = [] ){ if( empty($aWkList) ) return ""; $htmlWkTableString = ""; $htmlWkTableString .= "". "". "". "". "". "". "". "". "". "". ""; $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 .= ""; } $htmlWkTableString .= "". "". "". "". "". "". "". "\n"; } $htmlWkTableString .= "". "". "". "". "". "". "". "". "". "". "
DatumVeranstaltungOrtAltersklasse(n)iCal
".$lastMonthName."
". "". "". "".$wk['Veranstaltung']."". "". "".$wk['Ort']."". "". $wk['Altersklassen']. "". "iCal". "
DatumVeranstaltungOrtAltersklasse(n)iCal
"; return $htmlWkTableString; } /// Wettkampfdaten als json-formatierte strukturierte Event-Daten function wkArray2jsonSdEvent($wk){ return "{". "\"@context\": \"http://schema.org\",". "\"@type\": \"Event\",". "\"name\": \"".$wk['Veranstaltung']."\",". "\"startDate\": \"".$wk['Datum']."\",". "\"endDate\": \"".$wk['Datum']."\",". "\"url\": \"http://cwsvjudo.bplaced.net/pages/desktop/verein.wettkampfkalender.php?wkId=".$wk['lfdeNr']."\",". "\"description\": \"Judo-Wettkampf der Altersklasse(n) ".$wk['Altersklassen']."\",". "\"location\": {". "\"@type\": \"Place\",". "\"name\": \"".$wk['Ort']."\",". "\"address\": {". "\"@type\": \"PostalAddress\",". "\"addressLocality\": \"".$wk['Ort']."\"". "}". "}". "}"; } // 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); $siteData['head']['canonicalLink'] = "http://cwsvjudo.bplaced.net/pages/desktop/verein.wettkampfkalender.php"; if ( !empty($wkInfo) ){ $siteData['head']['title'] = $wkInfo['Veranstaltung']; } else{ $siteData['head']['title'] = ((isset($_GET["jahr"]) ? "Wettkampfkalender ".$_GET["jahr"] : "Aktueller Wettkampfkalender")); } $siteData['head']['description'] = (isset($_GET["jahr"]) ? "Wettkampfkalender ".$_GET["jahr"] : "Aktueller Wettkampfkalender")." der Abteilung Judo des Chemnitzer Freizeit- und Wohngebietssportvereines"; $siteData['head']['keywords'] = "Termine, Wettkampf, Judo"; $siteData['head']['author'] = "Marko Bunzel"; // $siteData['head']['ampLink'] = "http://amp.cwsvjudo.bplaced.net"; $siteData['head']['structuredDataJsons'][] = file_get_contents($basePath."/ressourcen/structuredData/json/cwsvJudo.json"); $siteData['head']['structuredDataJsons'][] = file_get_contents($basePath."/ressourcen/structuredData/json/cwsvJudoWebsite.json"); // $siteData['header']['zitat'] = getRandomCite( $db_connection ); $siteData['header']['breadcrumbs'] = array( array("linkTarget" => "http://cwsvjudo.bplaced.net/pages/desktop/", "linkTitle" => "Startseite der Homepage der Sektion Judo des Chemnitzer Freizeit- und Wohngebietssportvereines", "caption" => "\"Judo"), array("linkTarget" => "http://cwsvjudo.bplaced.net/pages/desktop/verein.wettkampfkalender.php", "linkTitle" => "Wettkampfkalender der Sektion Judo des Chemnitzer Freizeit- und Wohngebietssportvereines in Kontakt zu treten", "caption" => "Wettkampkalender") ); if(is_positive_integer($_GET['wkId'])) $siteData['header']['breadcrumbs'][] = array("linkTarget" => "http://cwsvjudo.bplaced.net/pages/desktop/verein.wettkampf.php?wkId=".$_GET['wkId'], "linkTitle" => "Wettkampf Nr. ".$GET['wkID'], "caption" => $_GET['wkId']); $siteData['mainNav'] = jsonLinkFile2NavLinkList( "cwsvJudo-Links.json", ["home", "news", "verein", "extras", "kontakt"] ); $siteData['mainContent'] = ""; // Eine Einzelansicht, falls ein wkInfo ausgefüllt wurde if( !empty($wkInfo) ){ foreach($wkInfo as $wk){ $siteData['mainContent'] .= "

".$wk['Veranstaltung']."

". "". "". "
"; } } else{ $siteData['mainContent'] .= $message['error']; } 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"; $siteData['mainContent'] .= "

Wettkampfkalender ".$jahr."

"; } else{ $siteData['mainContent'] .= "Keine Wettkämpfe für das Jahr".$jahr." gefunden!"; } } else{ $minDate = date("Y-m-d", time()); $maxDate = ""; $siteData['mainContent'] .= "

Kommende Wettkämpfe

"; } $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'] .= wkList2htmlWkTable($ergebnis); $siteData['mainContent'] .= "
Alle Angaben ohne Gewähr! Fehler und Ergänzungen dürfen gerne gemeldet werden.
". "Link zum Archiv mit allen Ausschreibungen."; /* @todo: Wettkampfselektor wieder ergänzen
Im folgendem kann man sich mehrere Wettkampftermine in einer ICalendar-Datei zusammenstellen. Zum An-/Abwählen bei gedrückter Strg-Taste mit der linken Maustaste die jeweiligen Wettkämpfe anklicken.
getMessage() . "
"; // die(); } $siteData['sideNav'] = "Galerien". "Wettkampf­kalender". "Wettkampf­planer". "Quiz". "JudoWiki"; require_once('./template.php'); exit(); ?>