Funde im includes-Ordner in folgenden Dateien:
allg.php - Zeile 282
escape.php - Zeile 56
include\includes\class\bbcode.php
Line 74: $string = htmlentities($string);
Line 87: $string = htmlentities($string);
Line 105: $string = htmlentities($string);
Line 660: $string = htmlentities($string);
...include\includes\class\bbcode_old.php (4 hits)
Line 73: $string = htmlentities($string);
Line 109: $string = htmlentities($string);
Line 147: $string = htmlentities($string);
Line 638: $string = htmlentities($string);
Es lag am BBCODE 2.0 von Mairu...
hier mal den kompletten Quellcode der bbcode.php:
<?php
# Copyright by Thomas Bowe [Funjoy]
# Support bbcode@phpline.de
# link www.phpline.de
/* Module - Information
* -------------------------------------------------------
* Hier könnt ihr eure Module includieren lassen.
* Wenn Ihr selber Module zum Highlight programmiert
* denkt daran das ihr auch noch das Parsen hier definieren müsst.
* und in der bbcode_config.php Datei müsstet ihr die Option auch noch einstellen.
* um ein Beispiel zu haben schaut euch die Funktion _htmlblock() am besten mal an.
* und in Zeile 308 und Zeile 490 habt ihr ein Beispiel wie ihr die Parsebefehle schreiben könnt.
*/
//> Bitte denkt daran das, dass Modul html.php immer unter dem Modul css.php sein muss.
//> Modul [css.php]
if(file_exists("include/includes/class/highlight/css.php")) {
require_once("include/includes/class/highlight/css.php");
}
//> Modul [html.php]
if(file_exists("include/includes/class/highlight/html.php")) {
require_once("include/includes/class/highlight/html.php");
}
class bbcode {
//> Tags die geparsed werden dürfen.
var $permitted = array();
//> Verschlüsselte codeblocks.
var $codecblocks = array();
//> Badwords!
var $badwords = array();
//> Informationen für die Klasse!
var $info = array();
//> Patter befehle!
var $pattern = array();
//> Replace strings!
var $replace = array();
//> Smilies die in Grafik umgewandelt werden sollen.
var $smileys = array();
//> Cache für Quotes Header!
var $ayCacheQuoteOpen = array();
//> Cache fürQuotes Footer!
var $ayCacheQuoteClose = array();
//> Cache für Quotes Header!
var $ayCacheKtextOpen = array();
//> Cache fürQuotes Footer!
var $ayCacheKtextClose = array();
//> Codeblock verschlüsseln und wieder ausgeben.
function encode_codec($string,$tag,$file=NULL) {
$string = str_replace('\"', '"', $string);
$file = ($file == NULL) ? "":"=".$file;
$crypt = md5(count($this->codecblocks));
$this->codecblocks[$crypt.":".$tag] = $string;
return "[".$tag.$file."]".$crypt."[/".$tag."]";
}
//> Codeblock entschlüsseln und parsen!
function _codeblock($codecid,$file=NULL,$firstline=1) {
$string = $this->codecblocks[$codecid.':code'];
$string = htmlentities($string, ILCH_ENTITIES_FLAGS, ILCH_CHARSET);
$string = str_replace("\t", ' ', $string);
$string = str_replace(' ', ' ', $string);
$string = str_replace(' ', ' ', $string);
$string = nl2br($string);
return $this->_addcodecontainer($string, 'Code', $file, $firstline);
}
//> htmlblock entschlüsseln und parsen!
function _htmlblock($codecid,$file=NULL,$firstline=1) {
$string = $this->codecblocks[$codecid.':html'];
$string = htmlentities($string, ILCH_ENTITIES_FLAGS, ILCH_CHARSET);
//> Highlight Modul Funktion checken ob sie existerit.
if(function_exists("highlight_html")) {
$string = highlight_html($string,$this->info['BlockCodeFarbe']);
}
$string = str_replace("\t", ' ', $string);
$string = str_replace(' ', ' ', $string);
$string = str_replace(' ', ' ', $string);
$string = nl2br($string);
return $this->_addcodecontainer($string, 'HTML', $file, $firstline);
}
//> cssblock entschlüsseln und parsen!
function _cssblock($codecid,$file=NULL,$firstline=1) {
$string = $this->codecblocks[$codecid.':css'];
$string = htmlentities($string, ILCH_ENTITIES_FLAGS, ILCH_CHARSET);
//> Highlight Modul Funktion checken ob sie existerit.
if(function_exists("highlight_css")) {
$string = highlight_css($string);
}
$string = str_replace("\t", ' ', $string);
$string = str_replace(' ', ' ', $string);
$string = str_replace(' ', ' ', $string);
$string = nl2br($string);
return $this->_addcodecontainer($string, 'CSS', $file, $firstline);
}
//> phpblock entschlüsseln und parsen!
function _phpblock($codecid, $file = null, $firstline = 1) {
$string = $this->codecblocks[$codecid . ':php'];
if (strpos($string, '<?php') === false) {
$string = "<?php\n{$string}\n?>";
$remove = true;
} else {
$remove = false;
}
ob_start();
highlight_string($string);
$php = ob_get_contents();
ob_end_clean();
if ($remove) {
$php = str_replace(array('<?php<br />', '<br /></span><span style="color: #0000BB">?></span>'), '', $php);
}
return $this->_addcodecontainer($php, 'Php', $file, $firstline);
}
function _addcodecontainer($code, $type, $file=null, $firstline=1) {
//> Datei pfad mit angegeben?
$file = ($file == NULL) ? "":" von Datei <em>".$this->_shortwords($file)."</em>";
//> Zeilen zählen.
$linescount = substr_count($code, "\n") + $firstline + 1;
if ($type == 'Php') {
$linescount = substr_count($code, "\r") + $firstline + 1;
}
$line = '';
for($no=$firstline;$no < $linescount;$no++) {
$line .= $no.":<br />";
}
//> Hier könnt ihr den Header und Footer für HTML editieren.
$breite = trim($this->info['BlockTabelleBreite']);
$breite = (strpos($breite, '%') !== false) ? '450px' : $breite.'px';
$header = "<div style=\"overflow: auto; width: {$breite};\">"
."<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"BORDER: 1px SOLID ".$this->info['BlockRandFarbe'].";\" width=\"100%\">"
."<tr><td colspan=\"3\" style=\"font-family:Arial, Helvetica, sans-serif;font-size:12px; font-weight:bold; color:".$this->info['BlockSchriftfarbe'].";background-color:".$this->info['BlockHintergrundfarbe'].";\"> ".$type.$file."</td></tr>"
."<tr bgcolor=\"".$this->info['BlockHintergrundfarbeIT']."\"><td style=\"width:20px; color:".$this->info['BlockSchriftfarbe'].";padding-left:2px;padding-right:2px;border-right:1px solid ".$this->info['BlockHintergrundfarbe'].";font-family:Arial, Helvetica, sans-serif;\" align=\"right\" valign=\"top\"><code style=\"width:20px;\">"
.$line
."</code></td><td width=\"5\"> </td><td valign=\"top\" style=\"background-color:".$this->info['BlockHintergrundfarbe']."; color:".$this->info['BlockSchriftfarbe'].";\" nowrap width=\"95%\"><code>";
$footer = "</code></td></tr></table></div>";
return $header.$code.$footer;
}
//> Smilies aus dem Array auslesen.
function _smileys($string) {
if(!is_null($this->smileys) && is_array($this->smileys)) {
if($this->permitted['smileys'] == true) {
$smileystart = '#@'.uniqid('').'@#';
$smileymid = '|#@|'.uniqid('').'|@#|';
$smileyend = '#@'.uniqid('').'@#';
foreach ($this->smileys as $icon => $info) {
list($emo, $url) = explode('#@#-_-_-#@#', $info);
$string = str_replace($icon, $smileystart.$icon.$smileyend, $string);
}
$string = str_replace($smileyend.$smileystart, $smileymid, $string);
$string = preg_replace('%(\S)' . $smileystart . '(.*)' . $smileyend . '%iU', '$1$2', $string);
$string = preg_replace('%(^|\s)(' . $smileystart . ')(.*)(' . $smileyend . ')%iUe', '\'$1\'.\'$2\'.str_replace(\''.$smileymid.'\',\''.$smileyend.$smileystart.'\',\'$3\').\'$4\'', $string);
$string = str_replace($smileymid, '', $string);
foreach ($this->smileys as $icon => $info) {
list($emo, $url) = explode('#@#-_-_-#@#', $info);
$string = str_replace($smileystart.$icon.$smileyend, '<img src="include/images/smiles/'.$url.'" border="0" alt="'.$icon.'" title="'.$emo.'" />', $string);
}
$string = str_replace(array($smileyend, $smileystart), '', $string);
}
return $string;
} else {
return $string;
}
}
// //> Smilies aus dem Array auslesen.
// function _smileys($string) {
// if(!is_null($this->smileys) && is_array($this->smileys)) {
// if($this->permitted['smileys'] == true) {
// foreach ($this->smileys as $icon => $info) {
// list($emo, $url) = explode('#@#-_-_-#@#', $info);
// $string = str_replace($icon,'<img src="include/images/smiles/'.$url.'" border="0" alt="'.$emo.'" title="'.$emo.'" />',$string);
// }
// }
// return $string;
// } else {
// return $string;
// }
// }
//> Badwords Filtern.
function _badwords($string) {
//> Badwords aus der Datenbank laden!
$cfgBBCodeSql = db_query("SELECT fcBadPatter, fcBadReplace FROM prefix_bbcode_badword");
while ($row = db_fetch_object($cfgBBCodeSql) ) {
$pattern[] = '%' . preg_quote($row->fcBadPatter,'%') . '%iU';
$replace[] = $row->fcBadReplace;
}
if(isset($pattern)) {
$string = preg_replace($pattern,$replace,$string);
}
return $string;
}
//> Liste formatieren.
function _list($codecid) {
$string = $this->codecblocks[$codecid.':list'];
$array = explode("[*]",$string);
for($no=1;$no<=(count($array)-1);$no++) {
$li .= "<li>".$this->parse($array[$no])."</li>";
}
return "<ul>".$li."</ul>";
}
//> Auf Maximale Schriftgröße überprüfen.
function _size($size, $string) {
$max = $this->info['SizeMax'];
return '<span style="font-size:' . ($size > $max ? $max : $size) . 'px">' . stripcslashes($string) . '</span>';
}
//> Bilder auf Verkleinern via Javascript überprüfen.
function _img($string, $float='') {
if ($float == 'none' OR $float == 'left' OR $float == 'right') {
$float = 'style="float:'.$float.'; margin: 5px;" ';
} else {
$float = '';
}
$image = '<img src="'.$string.'" alt="" title="" border="0" class="bbcode_image" '.$float.'/>';
return $image;
}
//> Screenshots darstellen.
function _screenshot($string,$float='none') {
if ($float == 'none' OR $float == 'left' OR $float == 'right') {
$float = 'style="float:'.$float.'; margin: 5px;" ';
} else {
$float = '';
}
$image = '<a href="'.$string.'" target="_blank"><img src="'.$string.'" alt="" title="" border="0" width="'.$this->info['ScreenMaxBreite'].'" height="'.$this->info['ScreenMaxHoehe'].'" '.$float.'/></a>';
return $image;
}
//> Urls Filtern um XSS vorzubeugen
function _filterurl($url) {
return str_replace(
array('<','>','(',')','#'),
array('<','>','(',')','#'),
$url
);
}
//> Links darstellen und ggf. kürzen
function _shorturl($string,$caption=null) {
if ($caption == null) { $caption = $string; }
$string = trim($string);
$caption = trim($this->_smileys($caption));
$server = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
if (preg_match('%^((http|ftp|https)://)|^/%i',$string) == 0) { $string = 'http://'.$string; }
if (substr($string,0,1) == '/' OR strpos($string,$server) !== false) {
$target = '_self';
} else {
$target = '_blank';
}
$count = strlen($caption);
if($count >= $this->info['UrlMaxLaenge']) {
$string = "<a href=\"".$string."\" target=\"".$target."\">".$this->_shortcaptions($caption)."</a>";
} else {
$string = "<a href=\"".$string."\" target=\"".$target."\">".$caption."</a>";
}
return $string;
}
//> Linkbeschreibung kürzen
function _shortcaptions($string) {
$words = explode(" ",$string);
foreach($words as $word)
if(strlen($word) > $this->info['WortMaxLaenge'] && !preg_match('%(\[(img|shot)\](.*)\[/(img|shot)\])%i',$word)) {
$maxd2 = sprintf("%00d",($this->info['WortMaxLaenge']/2));
$string = str_replace($word,substr($word,0,$maxd2)."...".substr($word,-$maxd2),$string);
}
return $string;
}
//> Hilfsfunktion für _shortwords
function _checkpatterns($patterns, $word) {
if (!is_array($patterns)) {
return true;
}
foreach ($patterns as $p) {
if (preg_match($p, $word) == 1) {
return false;
}
}
return true;
}
//> Zu lange Wörter kürzen.
function _shortwords($string) {
//> Zeichenkette in einzelne Array elemente zerlegen.
$lines = explode("\n",$string);
//> Patter Befehle die nicht gekürzt werden dürfen !!!
$pattern = array("%^(www)(.[-a-zA-Z0-9@:;\%_\+.~#?&//=]+?)%i",
"%^(http|https|ftp)://{1}[-a-zA-Z0-9@:;\%_\+.~#?&//=]+?%i",
"%(\[(url|img(=(left|right))?|shot(=(left|right))?)\](.*)\[/(url|img|shot)\])|(\[url=(.*)\])%i",
"%\[(code|html|css|php|countdown)(=[^]]+)].*\[/(code|html|css|php|countdown)]%i",
"%(\[flash)?]((http|https|ftp)://[a-z-0-9@:\%_\+.~#\?&/=,;]+)\[/flash]%i",
"%\[list].*\[/list]%");
foreach($lines as $line) {
$words = explode(" ",$line);
foreach($words as $word)
if(strlen($word) > $this->info['WortMaxLaenge'] && $this->_checkpatterns($pattern, $word)) {
//Auskommentiert also Variante mit 'zulanges...Wort' zu gunsten von 'zulanges allesdazwischen Wort' (ohne ...)
//$maxd2 = sprintf("%00d",($this->info['WortMaxLaenge']/2));
$string = wordwrap($string, $this->info['WortMaxLaenge']);
}
}
return $string;
}
//> Geöffnete Ktext- Tags Nummerieren.
function _addKtextOpen($Titel=Null) {
$this->ayCacheKtextOpen[count($this->ayCacheKtextOpen)+1] = true;
$intCountKtext = count($this->ayCacheKtextOpen);
$string = "[ktext:".$intCountKtext."=".$Titel."]";
return $string;
}
//> Geschlossene Ktext- Tags Nummerieren.
function _addKtextClose() {
$this->ayCacheKtextClose[count($this->ayCacheKtextClose)+1] = true;
$intCountKtext = count($this->ayCacheKtextClose);
return "[/ktext:".$intCountKtext."]";
}
//> Ktext- Tags umwandeln..
function _ktext($string) {
$Random = rand(1,10000000);
//> Html- Muster für geöffnete Tags mit Titel.
$HeaderTitel = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"".$this->info['KtextTabelleBreite']."\" align=\"center\">"
."<tr><td><a href=\"javascript:Klapptext('__ID__')\">"
."<img src=\"include/images/icons/plus.gif\" id=\"image___ID__\" border=0 alt=\"Aus/Ein-klappen\" title=\"Aus/Ein-klappen\"> ";
$FooterTitel = "</a></td></tr>"
."<tr><td><div id=\"layer___ID__\" style=\"display:none;border:1px ".$this->info['KtextRandFormat']." ".$this->info['KtextRandFarbe'].";\">";
//> Html- Muster für geschlossene Tags.
$KtextClose = "</div></td></tr></table>\n";
//> Geöffnete Tags umwandeln.
for($c=1;$c <= count($this->ayCacheKtextOpen);$c++) {
if(count($this->ayCacheKtextClose) == count($this->ayCacheKtextOpen)) {
//> Format: [ktext=xxx]
$this->ktext_pattern[] = "%\[ktext:".$c."=([^]]*)\]%siU";
$this->ktext_replace[] = str_replace("__ID__",$c."@".$Random,$HeaderTitel)."\$1".str_replace("__ID__",$c."@".$Random,$FooterTitel);
//> Format: [/ktext]
$this->ktext_pattern[] = "%\[/ktext:".$c."\]%siU";
$this->ktext_replace[] = $KtextClose;
} else {
//> Format: [ktext=xxx]xxx[/ktext]
$this->ktext_pattern[] = "%\[ktext:([0-9]*)=([^]](.*)\[/ktext:([0-9]*)\]%siU";
$this->ktext_replace[] = str_replace("__ID__","\$1@".$Random,$HeaderTitel)."\$2".str_replace("__ID__","\$1@".$Random,$FooterTitel)."\$3".$KtextClose;
}
}
//> Nicht gefundene Paare wieder darstellen.
//> Format: [ktext=xxx]
$this->ktext_pattern[] = "%\[ktext:([0-9]*)=([^[/]*)\]%siU";
$this->ktext_replace[] = "[ktext=\$1]";
//> Format: [/ktext]
$this->ktext_pattern[] = "%\[/ktext:([0-9]*)\]%siU";
$this->ktext_replace[] = "[/ktext]";
//> String parsen
$string = preg_replace($this->ktext_pattern,$this->ktext_replace,$string);
return $string;
}
//> Geöffnete Quote- Tags Nummerieren.
function _addQuoteOpen($User=Null) {
$this->ayCacheQuoteOpen[count($this->ayCacheQuoteOpen)+1] = $User;
$intCountQuote = count($this->ayCacheQuoteOpen);
if($User != NULL) {
$string = "[quote:".$intCountQuote."=".$User."]";
} else {
$string = "[quote:".$intCountQuote."]";
}
return $string;
}
//> Geschlossene Quote- Tags Nummerieren.
function _addQuoteClose() {
$this->ayCacheQuoteClose[count($this->ayCacheQuoteClose)+1] = true;
$intCountQuote = count($this->ayCacheQuoteClose);
return "[/quote:".$intCountQuote."]";
}
//> Quote- Tags umwandeln.
function _quote($string) {
//> überprüfen ob Bod gesetzt ist.
if(strtolower($this->info['QuoteSchriftformatIT']) == "bold") {
$Schriftformat = "font-weight:bold;";
} else {
$Schriftformat = "font-style:".$this->info['QuoteSchriftformatIT'].";";
}
//> Html- Muster für geöffnete Quote- Tags.
$Header = "<table cellspacing=\"0\" cellpadding=\"2\" border=\"0\" style=\"BORDER: 1px SOLID ".$this->info['QuoteRandFarbe'].";\" width=\"".$this->info['QuoteTabelleBreite']."\" align=\"center\">"
."<tr><td style=\"font-family:Arial, Helvetica, sans-serif;FONT-SIZE:13px;FONT-WEIGHT:BOLD;COLOR:".$this->info['QuoteSchriftfarbe'].";BACKGROUND-COLOR:".$this->info['QuoteHintergrundfarbe'].";\"> Zitat</td></tr>"
."<tr bgcolor=\"".$this->info['QuoteHintergrundfarbeIT']."\"><td><table align=\"center\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"98%\"><tr><td style=\"".$Schriftformat."FONT-SIZE:10px;COLOR:".$this->info['QuoteSchriftfarbeIT'].";\">";
//> Html- Muster für geöffnete Quote- Tags mit User.
$HeaderUser = "<table cellspacing=\"0\" cellpadding=\"2\" border=\"0\" style=\"BORDER: 1px SOLID ".$this->info['QuoteRandFarbe'].";\" width=\"".$this->info['QuoteTabelleBreite']."\" align=\"center\">"
."<tr><td style=\"font-family:Arial, Helvetica, sans-serif;FONT-SIZE:13px;FONT-WEIGHT:BOLD;COLOR:".$this->info['QuoteSchriftfarbe'].";BACKGROUND-COLOR:".$this->info['QuoteHintergrundfarbe'].";\"> Zitat von ";
$FooterUser = "</td></tr><tr bgcolor=\"".$this->info['QuoteHintergrundfarbeIT']."\"><td><table align=\"center\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"98%\"><tr><td style=\"".$Schriftformat."FONT-SIZE:10px;COLOR:".$this->info['QuoteSchriftfarbeIT'].";\">";
//> Html- Muster für geschlossene Quote- Tags.
$QuoteClose = "</td></tr></table></td></tr></table>";
//> Geöffnete Tags umwandeln.
for($c=1;$c <= count($this->ayCacheQuoteOpen);$c++) {
if(count($this->ayCacheQuoteClose) == count($this->ayCacheQuoteOpen)) {
//> Format: [quote=xxx]
$this->quote_pattern[] = "%\[quote:".$c."=([^[/]*)\]%siU";
$this->quote_replace[] = $HeaderUser."\$1".$FooterUser;
//> Format: [quote]
$this->quote_pattern[] = "%\[quote:".$c."\]%siU";
$this->quote_replace[] = $Header;
//> Format: [/quote]
$this->quote_pattern[] = "%\[/quote:".$c."\]%siU";
$this->quote_replace[] = $QuoteClose;
} else {
//> Format: [quote=xxx]xxx[/quote]
$this->quote_pattern[] = "%\[quote:([0-9]*)=([^[/]*)\[/quote:([0-9]*)\]%siU";
$this->quote_replace[] = $HeaderUser."\$2".$FooterUser."\$3".$QuoteClose;
//> Format: [quote]xxx[/quote]
$this->quote_pattern[] = "%\[quote:([0-9]*)\](.*)\[/quote:\\1\]%siU";
$this->quote_replace[] = $Header."\$2".$QuoteClose;
}
}
//> Nicht gefundene Paare wieder darstellen.
//> Format: [quote=xxx]
$this->quote_pattern[] = "%\[quote:([0-9]*)=([^[/]*)\]%siU";
$this->quote_replace[] = "[quote=\$2]";
//> Format: [quote]
$this->quote_pattern[] = "%\[quote:([0-9])\]%siU";
$this->quote_replace[] = "[quote]";
//> Format: [/quote]
$this->quote_pattern[] = "%\[/quote:([0-9])\]%siU";
$this->quote_replace[] = "[/quote]";
//> String parsen
$string = preg_replace($this->quote_pattern,$this->quote_replace,$string);
return $string;
}
//> Video intergration.
function _video($typ,$id) {
$typ = strtolower($typ);
if($typ == "google") {
$str = "<embed style=\"width:".$this->info['GoogleBreite']."px; height:".$this->info['GoogleHoehe']."px;\" id=\"VideoPlayback\" align=\"middle\" type=\"application/x-shockwave-flash\" src=\"http://video.google.com/googleplayer.swf?docId=".$id."\" allowScriptAccess=\"sameDomain\" quality=\"best\" bgcolor=\"".$this->info['GoogleHintergrundfarbe']."\" scale=\"noScale\" salign=\"TL\" FlashVars=\"playerMode=embedded\"/>";
}
if($typ == "youtube") {
$str = "<object width=\"".$this->info['YoutubeBreite']."\" height=\"".$this->info['YoutubeHoehe']."\"><param name=\"movie\" value=\"http://www.youtube.com/v/".$id."\"></param><embed src=\"http://www.youtube.com/v/".$id."\" type=\"application/x-shockwave-flash\" width=\"".$this->info['YoutubeBreite']."\" height=\"".$this->info['YoutubeHoehe']."\" bgcolor=\"".$this->info['YoutubeHintergrundfarbe']."\"></embed></object>";
}
if($typ == "myvideo") {
$str = "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" width=\"".$this->info['MyvideoBreite']."\" height=\"".$this->info['MyvideoHoehe']."\"><param name=\"movie\" value=\"http://www.myvideo.de/movie/".$id."\"></param><embed src=\"http://www.myvideo.de/movie/".$id."\" width=\"".$this->info['MyvideoBreite']."\" height=\"".$this->info['MyvideoHoehe']."\" type=\"application/x-shockwave-flash\"></embed></object>";
}
if($typ == "gametrailers") {
$str = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" id="gtembed" width="'.$this->info['YoutubeBreite'].'" height="'.$this->info['YoutubeHoehe'].'"> <param name="allowScriptAccess" value="sameDomain" /> <param name="allowFullScreen" value="true" /> <param name="movie" value="http://www.gametrailers.com/remote_wrap.php?mid='.$id.'"/> <param name="quality" value="high" /> <embed src="http://www.gametrailers.com/remote_wrap.php?mid='.$id.'" swLiveConnect="true" name="gtembed" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'.$this->info['YoutubeBreite'].'" height="'.$this->info['YoutubeHoehe'].'"></embed> </object>';
}
return $str;
}
//> Countdown berechnen.
function _countdown($date,$time=NULL) {
$date = explode(".",$date);
if ($time != NULL) {
$timechk = explode(':',$time);
if ($timechk[0] <= 23 && $timechk[1] <= 59 && $timechk[2] <= 59) $timechk = TRUE;
else $timechk = FALSE;
}
else $timechk = TRUE;
//> Html Design.
$Header = "<div style=\"width:".$this->info['CountdownTabelleBreite'].";padding:5px;font-family:Verdana;font-size:".$this->info['CountdownSchriftsize']."px;".$Font."color:".$this->info['CountdownSchriftfarbe'].";border:2px dotted ".$this->info['CountdownRandFarbe'].";text-align:center\">";
$Footer = "</div>";
//> Überprüfen ob die angaben stimmen.
if($date[0] <= 31 && $date[1] <= 12 && $date[2] /*>= date("Y")*/ && checkdate($date[1],$date[0],$date[2]) && $timechk) {
if(isset($time)) {
$time = explode(":",$time);
$intStd = $time[0];
$intMin = $time[1];
$intSek = $time[2];
} else {
$intStd = 0;
$intMin = 0;
$intSek = 0;
}
$Timestamp = @mktime($intStd, $intMin, $intSek, $date[1], $date[0], $date[2]);
$Diff = $Timestamp - time();
$Font =($this->info['CountdownSchriftformat'] == "bold") ? "font-wight:bold;":"font-style:".$this->info['CountdownSchriftformat'].";";
if($Diff > 1) {
$Tage = sprintf("%00d",($Diff / 86400));
$Stunden = sprintf("%00d",(($Diff - ($Tage * 86400)) / 3600));
$Minuten = sprintf("%00d",(($Diff - (($Tage * 86400)+($Stunden*3600))) / 60));
$Sekunden = ($Diff - (($Tage * 86400)+($Stunden*3600)+($Minuten*60)));
//> Bei höheren Wert wie 1 als Mehrzahl ausgeben.
$mzTg = ($Tage == 1) ? "":"e";
$mzStd = ($Stunden == 1) ? "":"n";
$mzMin = ($Minuten == 1) ? "":"n";
$mzSek = ($Sekunden == 1) ? "":"n";
//> Datum zusamstellen.
$str = $Header.$Tage." Tag".$mzTg.", ".$Stunden." Stunde".$mzStd.", ".$Minuten." Minute".$mzMin." und ".$Sekunden." Sekunde".$mzSek.$Footer;
} else {
//> Datum zusamstellen wenn Datum unmittelbar bevor steht.
$str = $Header.(is_array($time) ? implode(':',$time) : $time).' '.implode('.',$date)." !!!".$Footer;
}
} else {
/*if($time == NULL) {
$str = "[countdown]".implode('.',$date)."[/countdown]";
} else {
$str = "[countdown=".$time."]".implode('.',$date)."[/countdown]";
}*/
$str = $Header."Der Countdown ist falsch definiert".$Footer;
}
return $str;
}
function _ws($ws) {
return $ws;
}
//> Flash verwerten
function _flash($url, $options){
$width = $this->info['FlashBreite'];
$height = $this->info['FlashHoehe'];
if (!empty($options)) {
$options = explode(' ', $options);
foreach ($options as $option){
$tmp = 0;
list($name, $value) = explode('=', $option);
if ($name == 'width') {
$tmp = substr($value, 2, -2);
if ($tmp < $width) {
$width = $tmp;
}
} elseif ($name == 'height') {
$tmp = substr($value, 2, -2);
if ($tmp < $height) {
$height = $tmp;
}
}
}
}
return '<object classid="CLSID:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'.$width.'" height="'.$height.'"'.
'codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=7,0,0,0" class="bbcode_flash">'.
'<param name="movie" value="' . $url . '">'.
'<param name="quality" value="high">'.
'<param name="scale" value="exactfit">'.
'<param name="menu" value="true">'.
'<param name="bgcolor" value="'.$this->info['FlashHintergrundfarbe'].'"> '.
'<embed src="' . $url . '" quality="high" scale="exactfit" menu="false" '.
'bgcolor="'.$this->info['FlashHintergrundfarbe'].'" width="'.$width.'" height="'.$height.'" swLiveConnect="false" '.
'type="application/x-shockwave-flash" '.
'pluginspage="http://www.macromedia.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash">'.
'</embed>'.
'</object>';
}
function parse($string) {
//> Die Blocks werden codiert um sie vor dem restlichen parsen zu schützen.
if($this->permitted['php'] == true) {
$string = preg_replace("%\[php\](.+)\[\/php\]%esiU","\$this->encode_codec('\$1','php')",$string);
$string = preg_replace("%\[php=(.*)\](.+)\[\/php\]%esiU","\$this->encode_codec('\$2','php','\$1')",$string);
}
if($this->permitted['html'] == true) {
$string = preg_replace("%\[html\](.+)\[\/html\]%esiU","\$this->encode_codec('\$1','html')",$string);
$string = preg_replace("%\[html=(.*)\](.+)\[\/html\]%esiU","\$this->encode_codec('\$2','html','\$1')",$string);
}
if($this->permitted['css'] == true) {
$string = preg_replace("%\[css\](.+)\[\/css\]%esiU","\$this->encode_codec('\$1','css')",$string);
$string = preg_replace("%\[css=(.*)\](.+)\[\/css\]%esiU","\$this->encode_codec('\$2','css','\$1')",$string);
}
if($this->permitted['code'] == true) {
$string = preg_replace("%\[code\](.+)\[\/code\]%esiU","\$this->encode_codec('\$1','code')",$string);
$string = preg_replace("%\[code=(.*)\](.+)\[\/code\]%esiU","\$this->encode_codec('\$2','code','\$1')",$string);
}
if($this->permitted['list'] == true) {
$string = preg_replace("%\[list\](.+)\[\/list\]%esiU","\$this->encode_codec('\$1','list')",$string);
}
//> Badwors Filtern.
$string = $this->_badwords($string);
//> BB Code der den Codeblock nicht betrifft.
//> Überprüfen ob die wörter nicht die maximal länge überschrieten.
$string = $this->_shortwords($string);
$string = htmlentities($string, ILCH_ENTITIES_FLAGS, ILCH_CHARSET);
$string = nl2br($string);
if($this->permitted['url'] == true) {
if($this->permitted['autourl'] == true) {
//> Format: www.xxx.de
$this->pattern[] = "%(( |\n|^)(www.[a-zA-Z\-0-9@:\%_\+.~#?&//=,;]+?))%eUi";
$this->replace[] = "\$this->_ws('\$2').\$this->_shorturl('\$3')";
//> Format: http://www.xxx.de
$this->pattern[] = "%(( |\n|^)((http|https|ftp)://{1}[a-zA-Z\-0-9@:\%_\+.~#?&//=,;]+?))%eUi";
$this->replace[] = "\$this->_ws('\$2').\$this->_shorturl('\$3')";
//> Format xxx@xxx.de
$this->pattern[] = "%(\s|^)([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})%i";
$this->replace[] = "<a href=\"mailto:$2\">$2</a>";
}
//> Format: [url=xxx]xxx[/url]
$this->pattern[] = "%\[url=([^\]]*)\](.+)\[\/url\]%eUis";
$this->replace[] = "\$this->_shorturl('\$1','\$2')";
//> Format: [url]xxx[/url]
$this->pattern[] = "%\[url\](.+)\[\/url\]%esiU";
$this->replace[] = "\$this->_shorturl('\$1')";
}
//> Darf BB Code [MAIL] dekodiert werden?
if($this->permitted['email'] == true) {
//> Format: [mail]xxx@xxx.de[/mail]
$this->pattern[] = "%\[mail\]([_\.0-9a-z-]+\@([0-9a-z\-]+)\.[a-z]{2,3})\[\/mail\]%Uis";
$this->replace[] = "<a href=\"mailto:$1\">$1</a>";
//> Format: [mail=xxx@xxx.de]xxx[/mail]
$this->pattern[] = "%\[mail=([_\.0-9a-z-]+\@([0-9a-z\-]+)\.[a-z]{2,3})\](.+)\[\/mail\]%Uis";
$this->replace[] = "<a href=\"mailto:$1\">$3</a>";
}
//> Darf BB Code [B] dekodiert werden?
if($this->permitted['b'] == true) {
//> Format: [b]xxx[/b]
$this->pattern[] = "%\[b\](.+)\[\/b\]%Uis";
$this->replace[] = "<b>\$1</b>";
}
//> Darf BB Code [I] dekodiert werden?
if($this->permitted['i'] == true) {
//> Format: [i]xxx[/i]
$this->pattern[] = "%\[i\](.+)\[\/i\]%Uis";
$this->replace[] = "<i>\$1</i>";
}
//> Darf BB Code [U] dekodiert werden?
if($this->permitted['u'] == true) {
//> Format: [u]xxx[/u]
$this->pattern[] = "%\[u\](.+)\[\/u\]%Uis";
$this->replace[] = "<u>\$1</u>";
}
//> Darf BB Code [S] dekodiert werden?
if($this->permitted['s'] == true) {
//> Format: [s]xxx[/s]
$this->pattern[] = "%\[s\](.+)\[\/s\]%Uis";
$this->replace[] = "<strike>\$1</strike>";
}
###############################################
//> Darf BB Code [LEFT] dekodiert werden?
if($this->permitted['left'] == true) {
//> Format: [left]xxx[/left]
$this->pattern[] = "%\[left\](.+)\[\/left\]%Uis";
$this->replace[] = "<div align=\"left\">\$1</div>";
}
//> Darf BB Code [CENTER] dekodiert werden?
if($this->permitted['center'] == true) {
//> Format: [center]xxx[/center]
$this->pattern[] = "%\[center\](.+)\[\/center\]%Uis";
$this->replace[] = "<div align=\"center\">\$1</div>";
}
//> Darf BB Code [RIGHT] dekodiert werden?
if($this->permitted['right'] == true) {
//> Format: [right]xxx[/right]
$this->pattern[] = "%\[right\](.+)\[\/right\]%Uis";
$this->replace[] = "<div align=\"right\">\$1</div>";
}
###############################################
//> Darf BB Code [EMPH] dekodiert werden?
if($this->permitted['emph'] == true) {
//> Format: [emph]xxx[/emph]
$this->pattern[] = "%\[emph\](.+)\[\/emph\]%Uis";
$this->replace[] = "<span style=\"background-color:".$this->info['EmphHintergrundfarbe'].";color:".$this->info['EmphSchriftfarbe'].";\">$1</span>";
}
//> Darf BB Code [COLOR] dekodiert werden?
if($this->permitted['color'] == true) {
//> Format: [color=#xxxxxx]xxx[/color]
$this->pattern[] = "%\[color=(#{1}[0-9a-zA-Z]+?)\](.+)\[\/color\]%Uis";
$this->replace[] = "<font color=\"$1\">$2</font>";
}
//> Darf BB Code [SIZE] dekodiert werden?
if($this->permitted['size'] == true) {
//> Format: [size=xx]xxx[/size]
$this->pattern[] = "%\[size=([0-9]+?)\](.+)\[\/size\]%eUis";
$this->replace[] = "\$this->_size('\$1','\$2')";
}
//> Darf BB Code [KTEXT] decodiert werden?
if($this->permitted['ktext'] == true) {
//> Format: [ktext=xxx]
$this->pattern[] = "%\[ktext=([^[/]*)\]%esiU";
$this->replace[] = "\$this->_addKtextOpen('\\1')";
//> Format: [/ktext]
$this->pattern[] = "%\[/ktext\]%esiU";
$this->replace[] = "\$this->_addKtextClose()";
}
//> Darf BB Code [IMG] dekodiert werden?
if($this->permitted['img'] == true) {
//> Format: [img]xxx.de[/img]
$this->pattern[] = "%\[img\]([-a-zA-Z0-9@:\%_\+,.~#?&//=]+?)\[\/img\]%eUi";
$this->replace[] = "\$this->_img('\$1')";
//> Format: [img=left|right]xxx.de[/img]
$this->pattern[] = "%\[img=(left|right)\]([-a-zA-Z0-9@:\%_\+,.~#?&//=]+?)\[\/img\]%eUi";
$this->replace[] = "\$this->_img('\$2','\$1')";
}
//> Darf BB Code [SCREENSHOT] dekodiert werden?
if($this->permitted['screenshot'] == true) {
//> Format: [shot]xxx.de[/screenshot]
$this->pattern[] = "%\[shot\]([-a-zA-Z0-9@:\%_\+.~#?&//=]+?)\[\/shot\]%eUi";
$this->replace[] = "\$this->_screenshot('\$1')";
//> Format: [shot=left|right]xxx.de[/screenshot]
$this->pattern[] = "%\[shot=(left|right)\]([-a-zA-Z0-9@:\%_\+.~#?&//=]+?)\[\/shot\]%eUi";
$this->replace[] = "\$this->_screenshot('\$2','\$1')";
}
//> Farf BB Code [VIDEO] dekodiert werden?
if($this->permitted['video'] == true) {
//> Format: [video=xxx]xxx[/video]
$this->pattern[] = "%\[video=(google|youtube|myvideo|gametrailers)\](.+)\[\/video\]%eUis";
$this->replace[] = "\$this->_video('\$1','\$2')";
}
//> Darf BB Code [COUNTDOWN] dekodiert werden?
if($this->permitted['countdown'] == true) {
//> Format: [countdown=Std:Min:Sek]TT.MM.JJJJ[/countdown]
$this->pattern[] = "%\[countdown=(([0-9]{2}):([0-9]{2}):([0-9]{2}))\](([0-9]{2})\.([0-9]{2})\.([0-9]{4}))\[\/countdown\]%eUis";
$this->replace[] = "\$this->_countdown('\$5','\$1')";
//> Format: [countdown]TT.MM.JJJJ[/countdown]
$this->pattern[] = "%\[countdown\](([0-9]{2})\.([0-9]{2})\.([0-9]{4}))\[\/countdown\]%eUis";
$this->replace[] = "\$this->_countdown('\$1')";
}
###############################################
//> Darf BB Code [QUOTE] dekodiert werden?
if($this->permitted['quote'] == true) {
//> Format: [quote]
$this->pattern[] = "%\[quote\]%esiU";
$this->replace[] = "\$this->_addQuoteOpen()";
//> Format: [quote=xxx]
$this->pattern[] = "%\[quote=([^[/]*)\]%esiU";
$this->replace[] = "\$this->_addQuoteOpen('\\1')";
//> Format: [/quote]
$this->pattern[] = "%\[/quote\]%esiU";
$this->replace[] = "\$this->_addQuoteClose()";
}
//> Darf BB Code [FLASH] dekodiert werden?
if($this->permitted['flash'] == true) {
//> Format: [flash]*[/flash]
$this->pattern[] = "%\[flash(( \w+=\'\d+\')*)]((http|https|ftp)://[a-z-0-9@:\%_\+.~#\?&/=,;]+)\[/flash]%ie";
$this->replace[] = '$this->_flash("$3", trim("$1"));';
}
//> String parsen
$string = preg_replace($this->pattern,$this->replace,$string);
//> Darf BB Code [QUOTE] dekodiert werden?
if($this->permitted['quote'] == true) {
$string = $this->_quote($string);
}
//> Darf BB Code [KTEXT] decodiert werden?
if($this->permitted['ktext'] == true) {
$string = $this->_ktext($string);
}
//> Smilies Filtern.
$string = $this->_smileys($string);
//> Zum schluss die blöcke die verschlüsselt wurden wieder entschlüsseln und Parsen.
if($this->permitted['php'] == true) {
$string = preg_replace("%\[php\](.+)\[\/php\]%esiU", '$this->_phpblock("$1")', $string);
$string = preg_replace("%\[php=([^;]*);(\d+)\](.+)\[\/php\]%esiU", 'this->_phpblock("$3","$1","$2")', $string);
$string = preg_replace("%\[php=(.*)\](.+)\[\/php\]%esiU", '$this->_phpblock("$2","$1")', $string);
}
if($this->permitted['html'] == true) {
$string = preg_replace("%\[html\](.+)\[\/html\]%esiU","\$this->_htmlblock('\$1')",$string);
$string = preg_replace("%\[html=([^;]*);(\d+)\](.+)\[\/html\]%esiU","\$this->_htmlblock('\$3','\$1','\$2')",$string);
$string = preg_replace("%\[html=(.*)\](.+)\[\/html\]%esiU","\$this->_htmlblock('\$2','\$1')",$string);
}
if($this->permitted['css'] == true) {
$string = preg_replace("%\[css\](.+)\[\/css\]%esiU","\$this->_cssblock('\$1')",$string);
$string = preg_replace("%\[css=([^;]*);(\d+)\](.+)\[\/css\]%esiU","\$this->_cssblock('\$3','\$1','\$2')",$string);
$string = preg_replace("%\[css=(.*)\](.+)\[\/css\]%esiU","\$this->_cssblock('\$2','\$1')",$string);
}
if($this->permitted['code'] == true) {
$string = preg_replace("%\[code\](.+)\[\/code\]%esiU","\$this->_codeblock('\$1')",$string);
$string = preg_replace("%\[code=([^;]*);(\d+)\](.+)\[\/code\]%esiU","\$this->_codeblock('\$3','\$1','\$2')",$string);
$string = preg_replace("%\[code=(.*)\](.+)\[\/code\]%esiU","\$this->_codeblock('\$2','\$1')",$string);
}
if($this->permitted['list'] == true) {
$string = preg_replace("%\[list\](.+)\[\/list\]%esiU","\$this->_list('\$1')",$string);
}
unset($this->pattern);
unset($this->replace);
unset($this->ayCacheQuoteOpen);
unset($this->ayCacheQuoteClose);
unset($this->ayCacheKtextOpen);
unset($this->ayCacheKtextClose);
return $string;
}
}
?>
Vielen Dank Rock@wulf, du hast mir sehr weitergeholfen!!
Seitdem funktionieren übrigens auch die Ausgaben auf der Internetseite wie z.B. News oder Forenbeiträge (davor hat man immer nur den Titel gesehen, den Inhalt des Posts jedoch nicht. Die Posts waren allerdings in der Datenbank abgespeichert.)
Zuletzt modifiziert von CeeJay am 04.04.2013 - 14:49:48