Gast Iggy80 Geschrieben 6. Februar 2006 Melden Share Geschrieben 6. Februar 2006 Hallo! Also folgendes: ich probiere für meine Page Software (Xoops) einen neuen BBCode zu erstellen. Was ich tun muss ist folgendes Das Stylesheet und die Overlib müssen ins Template eingebaut werden und die Funktion fürs ersetzen der [item] Codes muss in die BBCode Parse Funktion eingebaut werden. Das erste sollte soweit gefunzt haben. Ich habe eine Anleitung für eine andere Software (für das PhPBB) um die Parse Funktion einzubauen. ÖFFNE {forum_root}/include/bbcode.php SUCHE define("BBCODE_UID_LEN", 10); DANACH EINFÜGEN include('./itemstats/bb_itemstats.php'); SUCHE function bbencode_second_pass($text, $uid) { global $lang, $bbcode_tpl; DANACH EINFÜGEN // Parse text for ItemStats mod $text = itemstats_parse($text); Das ganze will ich jetzt auch bei Xoops einbauen. Ich vermute es gehört in die folgende Datei. Nur leider funktioniert es nicht einfach include('./itemstats/bb_itemstats.php'); und // Parse text for ItemStats mod $text = itemstats_parse($text); dort einzufügen. Kann mir eventuell jemand helfen ? Nähere Infos gibts auch gerne per PM oder so. <?php // $Id: module.textsanitizer.php,v 1.26.6.6.2.2 2005/10/28 01:42:20 skalpa Exp $ // ------------------------------------------------------------------------ // // XOOPS - PHP Content Management System // // Copyright (c) 2000 XOOPS.org // // <http://www.xoops.org/> // // ------------------------------------------------------------------------ // // This program is free software; you can redistribute it and/or modify // // it under the terms of the GNU General Public License as published by // // the Free Software Foundation; either version 2 of the License, or // // (at your option) any later version. // // // // You may not change or alter any portion of this comment or credits // // of supporting developers from this source code or any supporting // // source code which is considered copyrighted (c) material of the // // original comment or credit authors. // // // // This program is distributed in the hope that it will be useful, // // but WITHOUT ANY WARRANTY; without even the implied warranty of // // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // GNU General Public License for more details. // // // // You should have received a copy of the GNU General Public License // // along with this program; if not, write to the Free Software // // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // ------------------------------------------------------------------------ // // Author: Kazumi Ono (http://www.myweb.ne.jp/, http://jp.xoops.org/) // // Goghs Cheng (http://www.eqiao.com, http://www.devbeez.com/) // // Project: The XOOPS Project (http://www.xoops.org/) // // ------------------------------------------------------------------------- // /** * Class to "clean up" text for various uses * * <b>Singleton</b> * * @package kernel * @subpackage core * * @author Kazumi Ono <onokazu@xoops.org> * @author Goghs Cheng * @copyright (c) 2000-2003 The Xoops Project - www.xoops.org */ class MyTextSanitizer { /** * @var array */ var $smileys = array(); /** * */ var $censorConf; /* * Constructor of this class * * Gets allowed html tags from admin config settings * <br> should not be allowed since nl2br will be used * when storing data. * * @access private * * @todo Sofar, this does nuttin';-) */ function MyTextSanitizer() { } /** * Access the only instance of this class * * @return object * * @static * @staticvar object */ function &getInstance() { static $instance; if (!isset($instance)) { $instance = new MyTextSanitizer(); } return $instance; } /** * Get the smileys * * @return array */ function getSmileys() { return $this->smileys; } /** * Replace emoticons in the message with smiley images * * @param string $message * * @return string */ function smiley( $message ) { $db =& Database::getInstance(); if (count($this->smileys) == 0) { if ($getsmiles = $db->query("SELECT * FROM ".$db->prefix("smiles"))){ while ($smiles = $db->fetchArray($getsmiles)) { $message = str_replace($smiles['code'], '<img src="'.XOOPS_UPLOAD_URL.'/'.htmlspecialchars($smiles['smile_url']).'" alt="" />', $message); array_push($this->smileys, $smiles); } } } elseif (is_array($this->smileys)) { foreach ($this->smileys as $smile) { $message = str_replace($smile['code'], '<img src="'.XOOPS_UPLOAD_URL.'/'.htmlspecialchars($smile['smile_url']).'" alt="" />', $message); } } return $message; } /** * Make links in the text clickable * * @param string $text * @return string **/ function makeClickable( $text ) { /*$patterns = array("/(^|[^]_a-z0-9-=\"'\/])([a-z]+?):\/\/([^, \r\n\"\(\)'<>]+)/i", "/(^|[^]_a-z0-9-=\"'\/])www\.([a-z0-9\-]+)\.([^, \r\n\"\(\)'<>]+)/i", "/(^|[^]_a-z0-9-=\"'\/])ftp\.([a-z0-9\-]+)\.([^, \r\n\"\(\)'<>]+)/i", "/(^|[^]_a-z0-9-=\"'\/:\.])([a-z0-9\-_\.]+?)@([^, \r\n\"\(\)'<>\[\]]+)/i");*/ $patterns = array("/(^|[^]_a-z0-9-=\"'\/])([a-z]+?):\/\/([^ \r\n\"\(\)'<>]+)/i", "/(^|[^]_a-z0-9-=\"'\/])www\.([a-z0-9\-]+)\.([^ \r\n\"\(\)'<>]+)/i", "/(^|[^]_a-z0-9-=\"'\/])ftp\.([a-z0-9\-]+)\.([^ \r\n\"\(\)'<>]+)/i", "/(^|[^]_a-z0-9-=\"'\/:\.])([a-z0-9\-_\.]+?)@([^ \r\n\"\(\)'<>\[\]]+)/i"); $replacements = array("\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>", "\\1<a href=\"http://www.\\2.\\3\" target=\"_blank\">www.\\2.\\3</a>", "\\1<a href=\"ftp://ftp.\\2.\\3\" target=\"_blank\">ftp.\\2.\\3</a>", "\\1<script type=\"text/javascript\">var id='\\2';var host1='\\3';var host2='';document.write('<a href=\"mailto:'+id+'@'+host1+'.'+host2+'\">'+id+'@'+host1+'.'+host2+'</a>');</script>"); return preg_replace($patterns, $replacements, $text); } /** * Replace XoopsCodes with their equivalent HTML formatting * * @param string $text * @param bool $allowimage Allow images in the text? * On FALSE, uses links to images. * @return string **/ function xoopsCodeDecode( $text, $allowimage = 1 ) { $patterns = array(); $replacements = array(); //$patterns[] = "/\[code](.*)\[\/code\]/esU"; //$replacements[] = "'<div class=\"xoopsCode\"><code><pre>'.wordwrap(MyTextSanitizer::htmlSpecialChars('\\1'), 100).'</pre></code></div>'"; // RMV: added new markup for intrasite url (allows easier site moves) // TODO: automatically convert other URLs to this format if XOOPS_URL matches?? $patterns[] = "/\[siteurl=(['\"]?)([^\"'<>]*)\\1](.*)\[\/siteurl\]/sU"; $replacements[] = '<a href="'.XOOPS_URL.'/\\2">\\3</a>'; $patterns[] = "/\[url=(['\"]?)(http[s]?:\/\/[^\"'<>]*)\\1](.*)\[\/url\]/sU"; $replacements[] = '<a href="\\2" target="_blank">\\3</a>'; $patterns[] = "/\[url=(['\"]?)(ftp?:\/\/[^\"'<>]*)\\1](.*)\[\/url\]/sU"; $replacements[] = '<a href="\\2" target="_blank">\\3</a>'; $patterns[] = "/\[url=(['\"]?)([^\"'<>]*)\\1](.*)\[\/url\]/sU"; $replacements[] = '<a href="http://\\2" target="_blank">\\3</a>'; $patterns[] = "/\[color=(['\"]?)([a-zA-Z0-9]*)\\1](.*)\[\/color\]/sU"; $replacements[] = '<span style="color: #\\2;">\\3</span>'; $patterns[] = "/\[size=(['\"]?)([a-z0-9-]*)\\1](.*)\[\/size\]/sU"; $replacements[] = '<span style="font-size: \\2;">\\3</span>'; $patterns[] = "/\[font=(['\"]?)([^;<>\*\(\)\"']*)\\1](.*)\[\/font\]/sU"; $replacements[] = '<span style="font-family: \\2;">\\3</span>'; $patterns[] = "/\[email]([^;<>\*\(\)\"']*)\[\/email\]/sU"; $replacements[] = '<a href="mailto:\\1">\\1</a>'; $patterns[] = "/\[b](.*)\[\/b\]/sU"; $replacements[] = '<b>\\1</b>'; $patterns[] = "/\[i](.*)\[\/i\]/sU"; $replacements[] = '<i>\\1</i>'; $patterns[] = "/\[u](.*)\[\/u\]/sU"; $replacements[] = '<u>\\1</u>'; $patterns[] = "/\[d](.*)\[\/d\]/sU"; $replacements[] = '<del>\\1</del>'; //$patterns[] = "/\[li](.*)\[\/li\]/sU"; //$replacements[] = '<li>\\1</li>'; $patterns[] = "/\[img align=(['\"]?)(left|center|right)\\1]([^\"\(\)\?\&'<>]*)\[\/img\]/sU"; $patterns[] = "/\[img]([^\"\(\)\?\&'<>]*)\[\/img\]/sU"; $patterns[] = "/\[img align=(['\"]?)(left|center|right)\\1 id=(['\"]?)([0-9]*)\\3]([^\"\(\)\?\&'<>]*)\[\/img\]/sU"; $patterns[] = "/\[img id=(['\"]?)([0-9]*)\\1]([^\"\(\)\?\&'<>]*)\[\/img\]/sU"; if ($allowimage != 1) { $replacements[] = '<a href="\\3" target="_blank">\\3</a>'; $replacements[] = '<a href="\\1" target="_blank">\\1</a>'; $replacements[] = '<a href="'.XOOPS_URL.'/image.php?id=\\4" target="_blank">\\4</a>'; $replacements[] = '<a href="'.XOOPS_URL.'/image.php?id=\\2" target="_blank">\\3</a>'; } else { $replacements[] = '<img src="\\3" align="\\2" alt="" />'; $replacements[] = '<img src="\\1" alt="" />'; $replacements[] = '<img src="'.XOOPS_URL.'/image.php?id=\\4" align="\\2" alt="\\4" />'; $replacements[] = '<img src="'.XOOPS_URL.'/image.php?id=\\2" alt="\\3" />'; } // Support [list] [*] [/list] constructs. $patterns[] = '/\[\*\](.*)\r?\n/sU'; $replacements[] = '<li>\\1</li>'; //<ul> lists $patterns[] = '/\[list]/sU'; $replacements[] = '<ul>'; $patterns[] = '/\[\/list]/sU'; $replacements[] = '</ul>'; //<ol> lists $patterns[] = '/\[olist]/sU'; $replacements[] = '<ol>'; $patterns[] = '/\[\/list]/sU'; $replacements[] = '</ol>'; // [/rhl] $patterns[] = "/\[quote]/sU"; $replacements[] = _QUOTEC.'<div class="xoopsQuote"><blockquote>'; //$replacements[] = 'Quote: <div class="xoopsQuote"><blockquote>'; $patterns[] = "/\[\/quote]/sU"; $replacements[] = '</blockquote></div>'; $text = str_replace( "\x00", "", $text ); $c = "[\x01-\x1f]*"; $patterns[] = "/j{$c}a{$c}v{$c}a{$c}s{$c}c{$c}r{$c}i{$c}p{$c}t{$c}:/si"; $replacements[] = "(tammairanslip)"; $patterns[] = "/a{$c}b{$c}o{$c}u{$c}t{$c}:/si"; $replacements[] = "about :"; return preg_replace($patterns, $replacements, $text); } /** * Convert linebreaks to <br /> tags * * @param string $text * * @return string */ function nl2Br($text) { return preg_replace("/(\015\012)|(\015)|(\012)/","<br />",$text); } /** * Add slashes to the text if magic_quotes_gpc is turned off. * * @param string $text * @return string **/ function addSlashes($text) { return ( get_magic_quotes_gpc() ? $text : addslashes( $text ) ); } /* * if magic_quotes_gpc is on, stirip back slashes * * @param string $text * * @return string */ function stripSlashesGPC($text) { return ( get_magic_quotes_gpc() ? stripslashes($text) : $text ); } /* * for displaying data in html textbox forms * * @param string $text * * @return string */ function htmlSpecialChars( $text ) { //return preg_replace("/&/i", '&', htmlspecialchars($text, ENT_QUOTES)); return preg_replace(array("/&/i", "/ /i"), array('&', ' '), htmlspecialchars($text, ENT_QUOTES)); } /** * Reverses {@link htmlSpecialChars()} * * @param string $text * @return string **/ function undoHtmlSpecialChars( $text ) { return preg_replace(array("/>/i", "/</i", "/"/i", "/'/i"), array(">", "<", "\"", "'"), $text); } /** * Filters textarea form data in DB for display * * @param string $text * @param bool $html allow html? * @param bool $smiley allow smileys? * @param bool $xcode allow xoopscode? * @param bool $image allow inline images? * @param bool $br convert linebreaks? * @return string **/ function &displayTarea(&$text, $html = 0, $smiley = 1, $xcode = 1, $image = 1, $br = 1) { if ($html != 1) { // html not allowed $text =& $this->htmlSpecialChars($text); } $text =& $this->codePreConv($text, $xcode); // Ryuji_edit(2003-11-18) $text =& $this->makeClickable($text); if ($smiley != 0) { // process smiley $text =& $this->smiley($text); } if ($xcode != 0) { // decode xcode if ($image != 0) { // image allowed $text =& $this->xoopsCodeDecode($text); } else { // image not allowed $text =& $this->xoopsCodeDecode($text, 0); } } if ($br != 0) { $text =& $this->nl2Br($text); } $text =& $this->codeConv($text, $xcode, $image); // Ryuji_edit(2003-11-18) return $text; } /** * Filters textarea form data submitted for preview * * @param string $text * @param bool $html allow html? * @param bool $smiley allow smileys? * @param bool $xcode allow xoopscode? * @param bool $image allow inline images? * @param bool $br convert linebreaks? * @return string **/ function &previewTarea(&$text, $html = 0, $smiley = 1, $xcode = 1, $image = 1, $br = 1) { $text =& $this->stripSlashesGPC($text); if ($html != 1) { // html not allowed $text =& $this->htmlSpecialChars($text); } $text =& $this->codePreConv($text, $xcode); // Ryuji_edit(2003-11-18) $text =& $this->makeClickable($text); if ($smiley != 0) { // process smiley $text =& $this->smiley($text); } if ($xcode != 0) { // decode xcode if ($image != 0) { // image allowed $text =& $this->xoopsCodeDecode($text); } else { // image not allowed $text =& $this->xoopsCodeDecode($text, 0); } } if ($br != 0) { $text =& $this->nl2Br($text); } $text =& $this->codeConv($text, $xcode, $image); // Ryuji_edit(2003-11-18) return $text; } /** * Replaces banned words in a string with their replacements * * @param string $text * @return string * * @deprecated **/ function &censorString(&$text) { if (!isset($this->censorConf)) { $config_handler =& xoops_gethandler('config'); $this->censorConf =& $config_handler->getConfigsByCat(XOOPS_CONF_CENSOR); } if ($this->censorConf['censor_enable'] == 1) { $replacement = $this->censorConf['censor_replace']; foreach ($this->censorConf['censor_words'] as $bad) { if ( !empty($bad) && $bad != null && $bad != "" && $bad != " ") {//$bad must not be an empty string or everything will be censored. Spaces not allowed as bad strings either $bad = quotemeta($bad); $patterns[] = "/(\s)".$bad."/siU"; $replacements[] = "\\1".$replacement; $patterns[] = "/^".$bad."/siU"; $replacements[] = $replacement; $patterns[] = "/(\n)".$bad."/siU"; $replacements[] = "\\1".$replacement; $patterns[] = "/]".$bad."/siU"; $replacements[] = "]".$replacement; $text = preg_replace($patterns, $replacements, $text); } } } return $text; } /**#@+ * Sanitizing of [code] tag */ function codePreConv($text, $xcode = 1) { if($xcode != 0){ $patterns = "/\[code](.*)\[\/code\]/esU"; $replacements = "'[code]'.base64_encode('$1').' '"; $text = preg_replace($patterns, $replacements, $text); } return $text; } function codeConv($text, $xcode = 1, $image = 1){ if($xcode != 0){ $patterns = "/\ (.*)\[\/code\]/esU"; if ($image != 0) { // image allowed $replacements = "'<div class=\"xoopsCode\"><code><pre>'.MyTextSanitizer::codeSanitizer('$1').'</pre></code></div>'"; //$text =& $this->xoopsCodeDecode($text); } else { // image not allowed $replacements = "'<div class=\"xoopsCode\"><code><pre>'.MyTextSanitizer::codeSanitizer('$1', 0).'</pre></code></div>'"; //$text =& $this->xoopsCodeDecode($text, 0); } $text = preg_replace($patterns, $replacements, $text); } return $text; } function codeSanitizer($str, $image = 1){ if($image != 0){ $str = $this->xoopsCodeDecode( $this->htmlSpecialChars(str_replace('\"', '"', base64_decode($str))) ); }else{ $str = $this->xoopsCodeDecode( $this->htmlSpecialChars(str_replace('\"', '"', base64_decode($str))),0 ); } return $str; } /**#@-*/ ##################### Deprecated Methods ###################### /**#@+ * @deprecated */ function sanitizeForDisplay($text, $allowhtml = 0, $smiley = 1, $bbcode = 1) { if ( $allowhtml == 0 ) { $text = $this->htmlSpecialChars($text); } else { //$config =& $GLOBALS['xoopsConfig']; //$allowed = $config['allowed_html']; //$text = strip_tags($text, $allowed); $text = $this->makeClickable($text); } if ( $smiley == 1 ) { $text = $this->smiley($text); } if ( $bbcode == 1 ) { $text = $this->xoopsCodeDecode($text); } $text = $this->nl2Br($text); return $text; } function sanitizeForPreview($text, $allowhtml = 0, $smiley = 1, $bbcode = 1) { $text = $this->oopsStripSlashesGPC($text); if ( $allowhtml == 0 ) { $text = $this->htmlSpecialChars($text); } else { //$config =& $GLOBALS['xoopsConfig']; //$allowed = $config['allowed_html']; //$text = strip_tags($text, $allowed); $text = $this->makeClickable($text); } if ( $smiley == 1 ) { $text = $this->smiley($text); } if ( $bbcode == 1 ) { $text = $this->xoopsCodeDecode($text); } $text = $this->nl2Br($text); return $text; } function makeTboxData4Save($text) { //$text = $this->undoHtmlSpecialChars($text); return $this->addSlashes($text); } function makeTboxData4Show($text, $smiley=0) { $text = $this->htmlSpecialChars($text); return $text; } function makeTboxData4Edit($text) { return $this->htmlSpecialChars($text); } function makeTboxData4Preview($text, $smiley=0) { $text = $this->stripSlashesGPC($text); $text = $this->htmlSpecialChars($text); return $text; } function makeTboxData4PreviewInForm($text) { $text = $this->stripSlashesGPC($text); return $this->htmlSpecialChars($text); } function makeTareaData4Save($text) { return $this->addSlashes($text); } function &makeTareaData4Show(&$text, $html=1, $smiley=1, $xcode=1) { $return = $this->displayTarea($text, $html, $smiley, $xcode); return $return; } function makeTareaData4Edit($text) { return $this->htmlSpecialChars($text); } function &makeTareaData4Preview(&$text, $html=1, $smiley=1, $xcode=1) { $return = $this->previewTarea($text, $html, $smiley, $xcode); return $return; } function makeTareaData4PreviewInForm($text) { //if magic_quotes_gpc is on, do stipslashes $text = $this->stripSlashesGPC($text); return $this->htmlSpecialChars($text); } function makeTareaData4InsideQuotes($text) { return $this->htmlSpecialChars($text); } function &oopsStripSlashesGPC($text) { $return = $this->stripSlashesGPC($text); return $return; } function &oopsStripSlashesRT($text) { if (get_magic_quotes_runtime()) { $text =& stripslashes($text); } return $text; } function &oopsAddSlashes($text) { $return = $this->addSlashes($text); return $return; } function &oopsHtmlSpecialChars($text) { $return = $this->htmlSpecialChars($text); return $return; } function &oopsNl2Br($text) { $return = $this->nl2br($text); return $return; } /**#@-*/ } ?> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Gast Iggy80 Geschrieben 7. Februar 2006 Melden Share Geschrieben 7. Februar 2006 Für Mambo würde es so funktionieren. Hat jemand ne Idee wie man es übertragen könnte. OPEN{mambo_root}/components/com_content/content.php FIND defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); ADD-AFTER include('itemstats/bb_itemstats.php'); [Note you may need to try '../itemstats/phpbb_itemstats.php' or '../../itemstats/phpbb_itemstats.php' etc depending on your installation] FIND if ( $params->get( 'introtext' ) ) { ADD-BEFORE $row->fulltext = itemstats_parse($row->fulltext); ADD-AFTER // Parse text for ItemStats mod $row->introtext = itemstats_parse($row->introtext); SAVE AND CLOSE Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
NedBackhou Geschrieben 4. September 2021 Melden Share Geschrieben 4. September 2021 Saved as a favorite, I really like your web site! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Empfohlene Beiträge
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.