Erster Commit für das redesign2018

This commit is contained in:
marko
2018-05-05 17:09:49 +02:00
parent 6ca5c75f0c
commit 1372a27f67
61 changed files with 9118 additions and 0 deletions

View File

@@ -0,0 +1,106 @@
<?php
/// Check if expression is positive integer
function is_positive_integer($str){
return (is_numeric($str) && $str > 0 && $str == round($str));
}
/// Eine als String gegebene Liste kommagetrennter key=value Paare in
/// ein assoziatives Array überführen
function getKeyValueArray($aKeyValueStringList){
$retKeyValueArray = array();
foreach( explode(",", $aKeyValueStringList) as $keyValueString){
$keyValuePair = explode("=", $keyValueString);
$retKeyValueArray[$keyValuePair[0]] = $keyValuePair[1];
}
return $retKeyValueArray;
}
/// @brief Gibt die URL der gerade aufgerufenen Seite zurück
function getCurPagesUrl(){
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on"){
$pageURL .= "s";
}
$pageURL .= "://";
if($_SERVER["SERVER_PORT"] != "80"){
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
}
else{
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
/// ein zufälliges Zitat aus der Datenbank abfragen
function getRandomCite($aDbConnection, $optionsArray = array("dbCharset" => "ISO-8859-1", "outCharset" => "UTF-8") ){
if(!$aDbConnection) return NULL;
if( empty($optionsArray['dbCharset']) ) $optionsArray['dbCharset'] = "ISO-8859-1";
if( empty($optionsArray['outCharset']) ) $optionsArray['outCharset'] = "UTF-8";
try{
$pdoStatementForQuerryingZitat = $aDbConnection->prepare(
"SELECT * FROM zitate ORDER BY RAND() LIMIT 1;"
);
$pdoStatementForQuerryingZitat->execute();
$retZitat = $pdoStatementForQuerryingZitat->fetchAll(PDO::FETCH_ASSOC);
// Zeichensatzkonvertierung
foreach($retZitat as &$entry){
array_walk(
$entry,
function (&$value, $key, $optionsArray) {
$value = iconv($optionsArray['dbCharset'], $optionsArray['outCharset'], $value);
},
$optionsArray
);
}
$retZitat = $retZitat[0];
}
catch(PDOException $db_error){
$retZitat['zitat'] = "There is no spoon!";
}
return $retZitat;
}
/// filtert aus einem Array einträge in der gegebenen Reihenfolge
function arrayKeyFilter($anArray, $someKeys){
// var_dump($anArray, $someKeys);
if( (is_array( $anArray ) || is_object( $anArray )) && ( is_array( $someKeys ) || is_object( $someKeys ) ) ){
$retArray = array();
foreach($someKeys as $key){
if( array_key_exists($key, $anArray) ){
$retArray[] = $anArray[$key];
}
}
return $retArray;
}
return null;
}
/// Linkeinträge aus einer jsonDatei laden
function jsonLinkFile2NavLinkList($aJsonFileName, $someLinkNames, $someOptions = [] ){
if( !file_exists($aJsonFileName) ) return null;
if( !(is_array( $someLinkNames ) || is_object( $someLinkNames )) ) return null;
return arrayKeyFilter(
json_decode(
file_get_contents($aJsonFileName),
true
),
$someLinkNames
);
}
function echoThisOrThat($this, $that){
echo( !empty($this) ? $this : $that );
}
function echoThisWhenThat($this, $that){
if( !empty($that) ) echo( $this );
}
function thisWhenThat($this, $that){
if( empty($that) ) return "";
return $this;
}
?>

View File

@@ -0,0 +1,105 @@
<?php
function get_inner_html( $node ) {
$innerHTML= '';
$children = $node->childNodes;
foreach ($children as $child) {
$innerHTML .= $child->ownerDocument->saveXML( $child );
}
return $innerHTML;
}
/// Eine Liste mit News abfragen
///
/// Der Rückgabewert sollte vor Verwendung (und zur Fehlerbeheandlung)
/// auf NULL und/oder leeres Array getestet werden.
/// Der Zeichensatz wird von "ISO-8859-1" auf "UTF-8" gesetzt
///
/// @return Array mit News (die wiederum assoziative arrays sind
function getNews($aMysqlConn, $optionsArray = array("dbCharset" => "ISO-8859-1", "outCharset" => "UTF-8", "limit" => "1")){
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 konkrete newsId angegeben wurde, wollen wir ab dieser News haben
if( is_positive_integer($optionsArray['newsId']) ){
$pdoStatementForQuerryingNews = $aMysqlConn->prepare(
"SELECT * FROM cwsvjudo.nachrichten WHERE nachrichten.datum <= (SELECT nachrichten.datum FROM nachrichten WHERE nachrichten.nr = :newsId ) ORDER BY nachrichten.datum DESC LIMIT :limit OFFSET 0;"
);
$pdoStatementForQuerryingNews->bindParam(':newsId', intval($optionsArray['newsId']), PDO::PARAM_INT);
}
// Ansonsten die aktuellsten
else{
$pdoStatementForQuerryingNews = $aMysqlConn->prepare(
"SELECT * FROM nachrichten ORDER BY datum DESC, nr DESC LIMIT :limit;"
);
}
$pdoStatementForQuerryingNews->bindParam(':limit', intval($optionsArray['limit']), PDO::PARAM_INT);
$pdoStatementForQuerryingNews->execute();
$ret = $pdoStatementForQuerryingNews->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 abgefragten News den htmlCode erzeugen
function getHtmlNews($aNews, $someOptions=""){
$options = getKeyValueArray($someOptions);
$retHtml = "";
$retHtml .= "<article class=\"newsArtikel\">";
$retHtml .= "<div class=\"newsHeader\">";
$retHtml .= "<div class=\"newsDatum\"><time datetime=\"" . $aNews['datum'] . "\">" . $aNews['datum'] . "</time></div>";
$retHtml .= "<div class=\"newsBetreff\" ><h".(!empty($options["headingLevel"])?$options["headingLevel"]:"3").">" . $aNews['betreff'] . "</h".(!empty($options["headingLevel"])?$options["headingLevel"]:"3")."></div>";
$retHtml .= "</div>";
$retHtml .= "<div class=\"newsBody\">";
if( !filter_var($aNews['promoImg'], FILTER_VALIDATE_URL) ){
$domDoc = new DOMDocument();
$domDoc->loadHTML( mb_convert_encoding($aNews['nachricht'], 'HTML-ENTITIES', "UTF-8") );
foreach($domDoc->getElementsByTagName('a') as $anchor){
$anchorDad = $anchor->parentNode;
foreach($anchor->getElementsByTagName('img') as $img){
$aNews['promoImg']['src'] = $img->getAttribute('src');
$aNews['promoImg']['alt'] = $img->getAttribute('alt');
$anchorDad->removeChild($anchor);
break;
}
$aNews['nachricht'] = get_inner_html( $domDoc->getElementsByTagName('body')[0] );
}
}
if( !empty($aNews['promoImg']) ){
if( !empty($aNews['promoImg']['src']) ){
$retHtml .= "<img class=\"newsPromoImage\" "
."src=\"".$aNews['promoImg']['src']."\" "
.( empty($aNews['promoImg']['alt'])?"":("alt =\"".$aNews['promoImg']['alt']."\" ") )
."/>";
}
if( filter_var($aNews['promoImg'], FILTER_VALIDATE_URL) )
$retHtml .= "<img class=\"newsPromoImage\" src=\"".$aNews['promoImg']."\" />";
}
$retHtml .= "<div class=\"newsText\">" . $aNews['nachricht'] . "</div>";
$retHtml .= "</div>";
$retHtml .= "<div class=\"newsFooter\">";
$retHtml .= "<div class=\"newsAutor\">".$aNews['autor']."</div>";
$retHtml .= "</div>";
$retHtml .= "</article>";
return $retHtml;
}
?>

View File

@@ -0,0 +1,270 @@
<?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;
}
// Ausgabe der Wettkampftabelle
// @todo: elaborieren
function wkTableHtml(){
// Vermutung ist, dass $__GET sowieso (?super?)global
// global $__GET
// require_once($_SERVER['DOCUMENT_ROOT']."/ressourcen/phpLib/miscAssis.php");
// require_once($_SERVER['DOCUMENT_ROOT']."/ressourcen/phpLib/breadcrumbList.php");
require_once($_SERVER['DOCUMENT_ROOT']."/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);
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 />";
/*
$breadcrumbs = array();
array_push($breadcrumbs,
array("linkTarget" => "http://cwsvjudo.bplaced.net/pages/desktop/", "linkTitle" => "Startseite der Homepage der Sektion Judo des Chemnitzer Freizeit- und Wohngebietssportvereines", "caption" => "<img class=\"charImg\" src=\"/ressourcen/graphiken/banner/cwsv-judo-logo.png\" alt=\"Judo im Chemnitzer WSV - Logo\" title=\"Judo im Chemnitzer WSV\" />")
);
array_push($breadcrumbs,
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'])){
array_push($breadcrumbs,
array("linkTarget" => "http://cwsvjudo.bplaced.net/pages/desktop/verein.wettkampf.php?wkId=".$_GET['wkId'], "linkTitle" => "Wettkampf Nr. ".$GET['wkID'], "caption" => $_GET['wkId'])
);
}
*/
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>"
);
echo(
"<td class=\"noWrap\">".
"<time datetime=".mb_convert_encoding($wk['Datum'], 'UTF-8', 'ISO-8859-1')."\">".strftime("%Y-%m-%d (%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;
}
?>