verwendete ilchClan Version: 1.1
betroffene Homepage: socclan.de
hier mal die besagte 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) { $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); //> Datei pfad mit angegeben? $file = ($file == NULL) ? "":" von Datei <em>".$file."</em>"; //> Zeilen zählen. $lines = explode("\n",$string); /*for($no=1;$no<=count($lines);$no++) { $line .= "".$no.":<br />"; }*/ for($no=$firstline;$no<(count($lines)+$firstline);$no++) { $line .= "".$no.":<br />"; } $string = str_replace("\t", ' ', $string); $string = str_replace(' ', ' ', $string); $string = str_replace(' ', ' ', $string); $string = nl2br($string); //> Hier könnt ihr den Header und Footer für HTML editieren. $header = "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" align=\"center\"><tr><td valgin=\"top\">" ."<div style=\"overflow: auto; height: ".(37+(count($lines)*14))."px; width: {$this->info['BlockTabelleBreite']}px;\">" ."<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'].";\"> Code".$file."</td></tr>" ."<tr bgcolor=\"".$this->info['BlockHintergrundfarbeIT']."\"><td style=\"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\" width=\"20\" valign=\"top\"><code>" .$line ."</code></td><td width=\"5\"> </td><td valign=\"top\" style=\"BACKGROUND-COLOR:".$this->info['BlockHintergrundfarbeIT'].";Color:".$this->info['BlockCodeFarbe'].";\" nowrap><code>"; $footer = "</code></td></tr></table></div></td></tr></table>"; return $header.stripslashes($string).$footer; } //> htmlblock entschlüsseln und parsen! function _htmlblock($codecid,$file=NULL,$firstline=1) { $string = $this->codecblocks[$codecid.':html']; $string = htmlentities($string); //> Highlight Modul Funktion checken ob sie existerit. if(function_exists("highlight_html")) { $string = highlight_html($string,$this->info['BlockCodeFarbe']); } //> Datei pfad mit angegeben? $file = ($file == NULL) ? "":" von Datei <em>".$file."</em>"; //> Zeilen zählen. $lines = explode("\n",$string); for($no=$firstline;$no<(count($lines)+$firstline);$no++) { $line .= "".$no.":<br />"; } $string = str_replace("\t", ' ', $string); $string = str_replace(' ', ' ', $string); $string = str_replace(' ', ' ', $string); $string = nl2br($string); //> Hier könnt ihr den Header und Footer für HTML editieren. $header = "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" align=\"center\"><tr><td valgin=\"top\">" ."<div style=\"overflow: auto; width: {$this->info['BlockTabelleBreite']}px;\">" ."<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'].";\"> Html".$file."</td></tr>" ."<tr bgcolor=\"".$this->info['BlockHintergrundfarbeIT']."\"><td style=\"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\" width=\"20\" valign=\"top\"><code>" .$line ."</code></td><td width=\"5\"> </td><td valign=\"top\" style=\"BACKGROUND-COLOR:".$this->info['block_contentbgcolor'].";color:#000000;\" nowrap><code>"; $footer = "</code></td></tr></table></div></td></tr></table>"; return $header.$string.$footer; } //> cssblock entschlüsseln und parsen! function _cssblock($codecid,$file=NULL,$firstline=1) { $string = $this->codecblocks[$codecid.':css']; $string = htmlentities($string); //> Highlight Modul Funktion checken ob sie existerit. if(function_exists("highlight_css")) { $string = highlight_css($string); } //> Datei pfad mit angegeben? $file = ($file == NULL) ? "":" von Datei <em>".$file."</em>"; //> Zeilen zählen. $lines = explode("\n",$string); for($no=$firstline;$no<(count($lines)+$firstline);$no++) { $line .= "".$no.":<br />"; } $string = str_replace("\t", ' ', $string); $string = str_replace(' ', ' ', $string); $string = str_replace(' ', ' ', $string); $string = nl2br($string); //> Hier könnt ihr den Header und Footer für HTML editieren. $header = "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" align=\"center\"><tr><td valgin=\"top\">" ."<div style=\"overflow: auto;width: {$this->info['BlockTabelleBreite']}px;\">" ."<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'].";\"> Css".$file."</td></tr>" ."<tr bgcolor=\"".$this->info['BlockHintergrundfarbeIT']."\"><td style=\"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\" width=\"20\" valign=\"top\"><code>" .$line ."</code></td><td width=\"5\"> </td><td valign=\"top\" style=\"BACKGROUND-COLOR:".$this->info['block_contentbgcolor'].";color:#000000;\" nowrap><code>"; $footer = "</code></td></tr></table></div></td></tr></table>"; return $header.$string.$footer; } //> phpblock entschlüsseln und parsen! function _phpblock($codecid,$file=NULL,$firstline=1) { $string = $this->codecblocks[$codecid.':php']; //> Datei pfad mit angegeben? $file = ($file == NULL) ? "":" von Datei <em>".$file."</em>"; //> Zeilen zählen. $lines = explode("\n",$string); for($no=$firstline;$no<(count($lines)+$firstline);$no++) { $line .= "".$no.":<br />"; } ob_start(); highlight_string(trim(stripslashes($string))); $php = ob_get_contents(); ob_end_clean(); //> Hier könnt ihr den Header und Footer für HTML editieren. $header = "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" align=\"center\"><tr><td valgin=\"top\">" ."<div style=\"overflow: auto;width: {$this->info['BlockTabelleBreite']}px;\">" ."<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'].";\"> Php".$file."</td></tr>" ."<tr bgcolor=\"".$this->info['BlockHintergrundfarbeIT']."\"><td style=\"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\" width=\"20\" valign=\"top\"><code>" .$line ."</code></td><td width=\"5\"> </td><td valign=\"top\" style=\"BACKGROUND-COLOR:".$this->info['block_contentbgcolor']."\" nowrap><code>"; $footer = "</code></td></tr></table></div></td></tr></table>"; return $header.$php.$footer; } //> 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[] = "%".addcslashes($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']; if($size <= $max) { $fontsize = "<span style=\"font-size:".$size."px\">$string</span>"; } else { $fontsize = "<span style=\"font-size:".$max."px\">$string</span>"; } return $fontsize; } //> 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) { str_replace( array('<','>','(',')','#'), array('<','>','(',')','#'), $url ); return $url; } //> Links darstellen und ggf. kürzen function _shorturl($string,$caption=null) { if ($caption == null) { $caption = $string; } $string = trim($this->_filterurl($string)); $caption = trim($this->_filterurl($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\](.*)\[/img\])%i',$word)) { $maxd2 = sprintf("%00d",($this->info['WortMaxLaenge']/2)); $string = str_replace($word,substr($word,0,$maxd2)."...".substr($word,-$maxd2),$string); } return $string; } //> 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("url1" => "%^(www)(.[-a-zA-Z0-9@:;\%_\+.~#?&//=]+?)%i", "url2" => "%^(http|https|ftp)://{1}[-a-zA-Z0-9@:;\%_\+.~#?&//=]+?%i", "tags" => "%(\[(url|img(=(left|right))?|shot(=(left|right))?)\](.*)\[/(url|img|shot)\])|(\[url=(.*)\])%i"); foreach($lines as $line) { $words = explode(" ",$line); foreach($words as $word) if(strlen($word) > $this->info['WortMaxLaenge'] && !preg_match($pattern['url1'],$word) && !preg_match($pattern['url2'],$word) && !preg_match($pattern['tags'],$word)) { $maxd2 = sprintf("%00d",($this->info['WortMaxLaenge']/2)); $string = str_replace($word,substr($word,0,$maxd2)."...".substr($word,-$maxd2),$string); } } 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=\"0\" 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=\"0\" 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>"; $string = stripslashes($string); //> 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; } 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); } //> 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); $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[] = "%(( |\n|^)[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})%i"; $this->replace[] = "<a href=\"mailto:$1\">$1</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\]%eUi"; $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()"; } //> 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); } //> Badwors Filtern. $string = $this->_badwords($string); unset($this->pattern); unset($this->replace); unset($this->ayCacheQuoteOpen); unset($this->ayCacheQuoteClose); unset($this->ayCacheKtextOpen); unset($this->ayCacheKtextClose); return $string; } } ?>
Zuletzt modifiziert von trejay am 01.05.2009 - 21:01:13