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); // schlechter Hack solange die Browser nicht von selbst ordentlich trennen $aNews['betreff'] = str_replace("meisterschaft", "­meisterschaft", $aNews['betreff']); $aNews['betreff'] = str_replace("turnier", "­turnier", $aNews['betreff']); $aNews['betreff'] = str_replace("randori", "­randori", $aNews['betreff']); $retHtml = ""; $retHtml .= "
"; $retHtml .= "
"; $retHtml .= "
"; $retHtml .= "
" . $aNews['betreff'] . "
"; $retHtml .= "
"; $retHtml .= "
"; 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 .= ""; } if( filter_var($aNews['promoImg'], FILTER_VALIDATE_URL) ) $retHtml .= ""; } $retHtml .= "
" . $aNews['nachricht'] . "
"; $retHtml .= "
"; $retHtml .= "
"; $retHtml .= "
".$aNews['autor']."
"; $retHtml .= "
"; $retHtml .= "
"; return $retHtml; } ?>