Exemple #1
0
// Funktion zum Einbinden von Bildern
function do_bbcode_img($action, $attributes, $content, $params, $node_object)
{
    if ($action == 'validate') {
        return true;
    }
    return '<img src="' . htmlspecialchars($content) . '" alt="">';
}
$bbcode = new StringParser_BBCode();
$bbcode->addFilter(STRINGPARSER_FILTER_PRE, 'convertlinebreaks');
$bbcode->addParser(array('block', 'inline', 'link', 'listitem'), 'htmlspecialchars');
$bbcode->addParser(array('block', 'inline', 'link', 'listitem'), 'nl2br');
$bbcode->addParser('list', 'bbcode_stripcontents');
$bbcode->addCode('b', 'simple_replace', null, array('start_tag' => '<b>', 'end_tag' => '</b>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
$bbcode->addCode('code', 'simple_replace', null, array('start_tag' => '<code>', 'end_tag' => '</code>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
$bbcode->addCode('i', 'simple_replace', null, array('start_tag' => '<i>', 'end_tag' => '</i>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
$bbcode->addCode('url', 'usecontent?', 'do_bbcode_url', array('usecontent_param' => 'default'), 'link', array('listitem', 'block', 'inline'), array('link'));
$bbcode->addCode('link', 'callback_replace_single', 'do_bbcode_url', array(), 'link', array('listitem', 'block', 'inline'), array('link'));
$bbcode->addCode('img', 'usecontent', 'do_bbcode_img', array(), 'image', array('listitem', 'block', 'inline', 'link'), array());
$bbcode->addCode('bild', 'usecontent', 'do_bbcode_img', array(), 'image', array('listitem', 'block', 'inline', 'link'), array());
$bbcode->setOccurrenceType('img', 'image');
$bbcode->setOccurrenceType('bild', 'image');
$bbcode->setMaxOccurrences('image', 2);
$bbcode->addCode('list', 'simple_replace', null, array('start_tag' => '<ul>', 'end_tag' => '</ul>'), 'list', array('block', 'listitem'), array());
$bbcode->addCode('*', 'simple_replace', null, array('start_tag' => '<li>', 'end_tag' => '</li>'), 'listitem', array('list'), array());
$bbcode->setCodeFlag('*', 'closetag', BBCODE_CLOSETAG_OPTIONAL);
$bbcode->setCodeFlag('*', 'paragraphs', true);
$bbcode->setCodeFlag('list', 'paragraph_type', BBCODE_PARAGRAPH_BLOCK_ELEMENT);
$bbcode->setCodeFlag('list', 'opentag.before.newline', BBCODE_NEWLINE_DROP);
$bbcode->setCodeFlag('list', 'closetag.before.newline', BBCODE_NEWLINE_DROP);
$bbcode->setRootParagraphHandling(true);
 /**
  * strips bbcodes out of a string
  *
  * @global Database $db
  * @param string $text the string
  * @param bool $strict if true codes with strippable 1 are stripped too
  * @return string the stripped string
  */
 public function strip($text, $strict = false)
 {
     $parser = new StringParser_BBCode();
     $parser->setGlobalCaseSensitive(false);
     $parser->addCode('list', 'callback_replace', 'bbcode_list', array(), 'list', array('block', 'listitem'), array('inline'));
     $parser->addCode('*', 'simple_replace', null, array('start_tag' => '<li>', 'end_tag' => '</li>'), 'listitem', array('list'), array());
     $parser->setCodeFlag('*', 'closetag', BBCODE_CLOSETAG_OPTIONAL);
     $parser->setCodeFlag('*', 'paragraphs', true);
     $parser->setCodeFlag('list', 'paragraph_type', BBCODE_PARAGRAPH_BLOCK_ELEMENT);
     $parser->setCodeFlag('list', 'opentag.before.newline', BBCODE_NEWLINE_DROP);
     $parser->setCodeFlag('list', 'closetag.before.newline', BBCODE_NEWLINE_DROP);
     foreach ($result as $code) {
         if ($code['strippable'] === '0') {
             continue;
         } elseif ($code['strippable'] === '1' && !$strict) {
             continue;
         }
         $params = array('start_tag' => '', 'end_tag' => '');
         $tmp = explode('&', $code['params']);
         foreach ($tmp as $pair) {
             $parts = explode('=', $pair);
             if (count($parts) < 2) {
                 continue;
             }
             $values = explode(',', $parts[1]);
             if (count($values) == 1) {
                 $values = urldecode($values[0]);
             } else {
                 $values = array_map('urldecode', $values);
             }
             $params[urldecode($parts[0])] = $values;
         }
         unset($tmp);
         $parser->addCode($code['name'], $code['parsetype'], preg_match('/(simple_replace|simple_replace_simgle)/i', $code['parsetype']) ? null : array('BBCodes', '_strip'), $params, $code['contenttype'], explode('|', $code['allowedin']), explode('|', $code['notallowedin']));
     }
     return $parser->parse($text);
 }
 function BBCodeToHTML($content)
 {
     global $_ARRAYLANG;
     $objBBCode = new \StringParser_BBCode();
     $objBBCode->addFilter(STRINGPARSER_FILTER_PRE, array(&$this, 'convertlinebreaks'));
     //unify all linebreak variants from different systems
     $objBBCode->addFilter(STRINGPARSER_FILTER_PRE, array(&$this, 'convertlinks'));
     //      $objBBCode->addFilter(STRINGPARSER_FILTER_POST, array(&$this, 'stripBBtags'));
     $objBBCode->addFilter(STRINGPARSER_FILTER_POST, array(&$this, 'removeDoubleEscapes'));
     $objBBCode->addParser(array('block', 'inline', 'link', 'listitem'), 'htmlspecialchars');
     $objBBCode->addParser(array('block', 'inline', 'link', 'listitem'), 'nl2br');
     $objBBCode->addParser('list', array(&$this, 'bbcode_stripcontents'));
     $objBBCode->addCode('b', 'simple_replace', null, array('start_tag' => '<b>', 'end_tag' => '</b>'), 'inline', array('block', 'inline'), array());
     $objBBCode->addCode('i', 'simple_replace', null, array('start_tag' => '<i>', 'end_tag' => '</i>'), 'inline', array('block', 'inline'), array());
     $objBBCode->addCode('u', 'simple_replace', null, array('start_tag' => '<u>', 'end_tag' => '</u>'), 'inline', array('block', 'inline'), array());
     $objBBCode->addCode('s', 'simple_replace', null, array('start_tag' => '<strike>', 'end_tag' => '</strike>'), 'inline', array('block', 'inline'), array());
     $objBBCode->addCode('url', 'usecontent?', array(&$this, 'do_bbcode_url'), array('usecontent_param' => 'default'), 'inline', array('listitem', 'block', 'inline'), array('link'));
     $objBBCode->addCode('img', 'usecontent', array(&$this, 'do_bbcode_img'), array('usecontent_param' => array('w', 'h')), 'image', array('listitem', 'block', 'inline', 'link'), array());
     $objBBCode->addCode('quote', 'callback_replace', array(&$this, 'do_bbcode_quote'), array('usecontent_param' => 'default'), 'block', array('block', 'inline'), array('list', 'listitem'));
     $objBBCode->addCode('code', 'usecontent', array(&$this, 'do_bbcode_code'), array('usecontent_param' => 'default'), 'block', array('block', 'inline'), array('list', 'listitem'));
     $objBBCode->addCode('list', 'simple_replace', null, array('start_tag' => '<ul>', 'end_tag' => '</ul>'), 'list', array('block', 'listitem'), array());
     $objBBCode->addCode('*', 'simple_replace', null, array('start_tag' => '<li>', 'end_tag' => '</li>'), 'listitem', array('list'), array());
     $objBBCode->setCodeFlag('*', 'closetag', BBCODE_CLOSETAG_OPTIONAL);
     $objBBCode->setCodeFlag('*', 'paragraphs', true);
     $objBBCode->setCodeFlag('list', 'paragraph_type', BBCODE_PARAGRAPH_BLOCK_ELEMENT);
     $objBBCode->setCodeFlag('list', 'opentag.before.newline', BBCODE_NEWLINE_DROP);
     $objBBCode->setCodeFlag('list', 'closetag.before.newline', BBCODE_NEWLINE_DROP);
     $objBBCode->setOccurrenceType('img', 'image');
     $objBBCode->setMaxOccurrences('image', 5);
     $objBBCode->setRootParagraphHandling(false);
     //do not convert new lines to paragraphs, see stringparser_bbcode::setParagraphHandlingParameters();
     $content = $objBBCode->parse($content);
     return $content;
 }
Exemple #4
0
 function parseBBcode($input)
 {
     //load our BBcode parser - Dan: This probably shouldn't be in the controller but I can't think of a better place for it
     if (!class_exists('StringParser_BBCode')) {
         include_once JPATH_BASE . "/administrator/components/com_ninja/helpers/bbcode/stringparser_bbcode.class.php";
     }
     $bbcode = new StringParser_BBCode();
     //this is a temporary fix, so the module can appear on pages that have Ninjamonials or Ninjaboard installed
     //in which case these functions will already have been created. So we don't want to cause an error by creatign thema again
     if (!function_exists('convertlinebreaks')) {
         //Initialise the settings
         // Unify line breaks of different operating systems
         function convertlinebreaks($text)
         {
             $text = preg_replace("/\r\n|\r|\n/", "\n", $text);
             $text = str_replace("\r\n", "\n", $text);
             $text = str_replace('\\r\\n', "\n", $text);
             $text = str_replace("<br/>", "\n", $text);
             $text = str_replace("<br />", "\n", $text);
             return str_replace("<br>", "\n", $text);
         }
         // Remove everything but the newline charachter
         function bbcode_stripcontents($text)
         {
             return preg_replace("/[^\n]/", '', $text);
         }
         function do_bbcode_url($action, $attributes, $content, $params, $node_object)
         {
             if (!isset($attributes['default'])) {
                 $url = $content;
                 $text = htmlspecialchars($content);
             } else {
                 $url = $attributes['default'];
                 $text = $content;
             }
             if ($action == 'validate') {
                 if (substr($url, 0, 5) == 'data:' || substr($url, 0, 5) == 'file:' || substr($url, 0, 11) == 'javascript:' || substr($url, 0, 4) == 'jar:') {
                     return false;
                 }
                 return true;
             }
             return '<a href="' . htmlspecialchars($url) . '">' . $text . '</a>';
         }
         // Function to include images
         function do_bbcode_img($action, $attributes, $content, $params, $node_object)
         {
             if ($action == 'validate') {
                 if (substr($content, 0, 5) == 'data:' || substr($content, 0, 5) == 'file:' || substr($content, 0, 11) == 'javascript:' || substr($content, 0, 4) == 'jar:' || substr($content, -4) == '.php') {
                     return false;
                 }
                 return true;
             }
             return '<img src="' . htmlspecialchars($content) . '" alt="">';
         }
         function do_bbcode_color($action, $attributes, $content, $params, $node_object)
         {
             //the default attribute is one after the bbtag itself [color=blah]text[/color]
             if (isset($attributes['default'])) {
                 return '<span style="color:' . $attributes['default'] . '">' . $content . '</span>';
             }
             return $content;
         }
         function do_bbcode_quote($action, $attributes, $content, $params, $node_object)
         {
             if (!isset($attributes['default'])) {
                 $whoSaid = '';
             } else {
                 $whoSaid = '<span class="nmWhoSaid">' . JText::sprintf('NM_WHOSAID', $attributes['default']) . '</span>';
             }
             return '<blockquote class="nmQuote"><span>' . $whoSaid . $content . '</span></blockquote>';
         }
         function do_bbcode_size($action, $attributes, $content, $params, $node_object)
         {
             if (isset($attributes['default'])) {
                 return '<span style="font-size:' . $attributes['default'] . '%">' . $content . '</span>';
             }
             return $content;
         }
     }
     $bbcode->addFilter(1, 'convertlinebreaks');
     $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), 'htmlspecialchars');
     $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), 'nl2br');
     $bbcode->addParser('list', 'bbcode_stripcontents');
     $bbcode->addCode('b', 'simple_replace', null, array('start_tag' => '<strong>', 'end_tag' => '</strong>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
     $bbcode->addCode('i', 'simple_replace', null, array('start_tag' => '<em>', 'end_tag' => '</em>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
     $bbcode->addCode('u', 'simple_replace', null, array('start_tag' => '<u>', 'end_tag' => '</u>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
     $bbcode->addCode('color', 'callback_replace', 'do_bbcode_color', array('usecontent_param' => 'default'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
     $bbcode->addCode('url', 'usecontent?', 'do_bbcode_url', array('usecontent_param' => 'default'), 'link', array('listitem', 'block', 'inline'), array('link'));
     $bbcode->addCode('quote', 'callback_replace', 'do_bbcode_quote', array('usecontent_param' => 'default'), 'block', array('block'), array('link', 'listitem', 'inline'));
     $bbcode->addCode('size', 'callback_replace', 'do_bbcode_size', array('usecontent_param' => 'default'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
     $bbcode->addCode('img', 'usecontent', 'do_bbcode_img', array(), 'image', array('listitem', 'block', 'inline', 'link'), array());
     $bbcode->setOccurrenceType('img', 'image');
     $bbcode->setMaxOccurrences('image', 4);
     $bbcode->addCode('ul', 'simple_replace', null, array('start_tag' => '<ul>', 'end_tag' => '</ul>'), 'list', array('block', 'listitem'), array());
     $bbcode->addCode('ol', 'simple_replace', null, array('start_tag' => '<ol>', 'end_tag' => '</ol>'), 'list', array('block', 'listitem'), array());
     $bbcode->addCode('*', 'simple_replace', null, array('start_tag' => '<li>', 'end_tag' => '</li>'), 'listitem', array('list'), array());
     $bbcode->setCodeFlag('*', 'closetag', BBCODE_CLOSETAG_OPTIONAL);
     $bbcode->setCodeFlag('*', 'paragraphs', true);
     $bbcode->setCodeFlag('list', 'paragraph_type', BBCODE_PARAGRAPH_BLOCK_ELEMENT);
     $bbcode->setCodeFlag('list', 'opentag.before.newline', BBCODE_NEWLINE_DROP);
     $bbcode->setCodeFlag('list', 'closetag.before.newline', BBCODE_NEWLINE_DROP);
     $bbcode->setRootParagraphHandling(false);
     /*
      * End setup bbcode
      */
     $parsed_input = $bbcode->parse(trim($input));
     /*
      * TODO - This is a very quick and dirty emoticon emoticon handler.
      * This MUST be replaced asap
      */
     // Smileys to find...
     $emoticonsIn = array(':)', ':(', ':o', ':s', '8)', ':D');
     // And replace them with...
     $emoticonsOut = array('<img border="0" src="' . JRoute::_('media/com_ninjamonials/images/emoticons/smiley_smile.png') . '" alt=":)"/>', '<img border="0" src="' . JRoute::_('media/com_ninjamonials/images/emoticons/smiley_sad.png') . '" alt=":("/>', '<img border="0" src="' . JRoute::_('media/com_ninjamonials/images/emoticons/smiley_surprised.png') . '" alt=":o"/>', '<img border="0" src="' . JRoute::_('media/com_ninjamonials/images/emoticons/smiley_confused.png') . '" alt=":s"/>', '<img border="0" src="' . JRoute::_('media/com_ninjamonials/images/emoticons/smiley_cool.png') . '" alt="8)"/>', '<img border="0" src="' . JRoute::_('media/com_ninjamonials/images/emoticons/smiley_biggrin.png') . '" alt=":D"/>');
     $output = str_replace($emoticonsIn, $emoticonsOut, $parsed_input);
     return $output;
 }
Exemple #5
0
function gf_formatTextBlock($str, $postmode = 'html', $mode = '')
{
    global $CONF_FORUM;
    $bbcode = new StringParser_BBCode();
    $bbcode->setGlobalCaseSensitive(false);
    // It is impossible to include block level elements in a <p> element. Therefore I fix this.
    $bbcode->setParagraphHandlingParameters("\n\n", "", "");
    if ($postmode == 'text') {
        $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), 'bbcode_htmlspecialchars');
    }
    if ($CONF_FORUM['use_glfilter'] == 1 && ($postmode == 'html' || $postmode == 'HTML')) {
        $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), 'gf_checkHTML');
        // calls GL's checkHTML on all text blocks
    }
    $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), 'nl2br');
    if ($mode != 'subject') {
        $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), 'gf_replacesmilie');
        // calls replacesmilie on all text blocks
    }
    $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), 'gf_fixtemplate');
    if ($mode != 'subject') {
        $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), 'PLG_replacetags');
    }
    $bbcode->addParser('list', 'bbcode_stripcontents');
    $bbcode->addCode('b', 'simple_replace', null, array('start_tag' => '<b>', 'end_tag' => '</b>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('i', 'simple_replace', null, array('start_tag' => '<i>', 'end_tag' => '</i>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('u', 'simple_replace', null, array('start_tag' => '<span style="text-decoration: underline;">', 'end_tag' => '</span>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('p', 'simple_replace', null, array('start_tag' => '<p>', 'end_tag' => '</p>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('s', 'simple_replace', null, array('start_tag' => '<del>', 'end_tag' => '</del>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('size', 'usecontent?', 'do_bbcode_size', array('usercontent_param' => 'default'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('color', 'usecontent?', 'do_bbcode_color', array('usercontent_param' => 'default'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    if ($mode != 'subject') {
        $bbcode->addCode('list', 'callback_replace', 'do_bbcode_list', array('usecontent_param' => 'default'), 'list', array('inline', 'block', 'listitem'), array());
        $bbcode->addCode('*', 'simple_replace', null, array('start_tag' => '<li>', 'end_tag' => '</li>'), 'listitem', array('list'), array());
        $bbcode->addCode('quote', 'simple_replace', null, array('start_tag' => '<div class="quotemain">', 'end_tag' => '</div>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->addCode('url', 'usecontent?', 'do_bbcode_url', array('usecontent_param' => 'default'), 'link', array('listitem', 'block', 'inline'), array('link'));
        $bbcode->addCode('link', 'callback_replace_single', 'do_bbcode_url', array(), 'link', array('listitem', 'block', 'inline'), array('link'));
        $bbcode->addCode('img', 'usecontent', 'do_bbcode_img', array(), 'image', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->addCode('code', 'usecontent', 'do_bbcode_code', array('usecontent_param' => 'default'), 'code', array('listitem', 'block', 'inline', 'link'), array());
    }
    $bbcode->setCodeFlag('quote', 'paragraph_type', BBCODE_PARAGRAPH_ALLOW_INSIDE);
    $bbcode->setCodeFlag('*', 'closetag', BBCODE_CLOSETAG_OPTIONAL);
    $bbcode->setCodeFlag('*', 'paragraphs', true);
    $bbcode->setCodeFlag('list', 'opentag.before.newline', BBCODE_NEWLINE_DROP);
    $bbcode->setCodeFlag('list', 'closetag.before.newline', BBCODE_NEWLINE_DROP);
    $bbcode->setRootParagraphHandling(true);
    if ($CONF_FORUM['use_censor'] and $mode == 'preview') {
        $str = COM_checkWords($str);
    }
    $str = $bbcode->parse($str);
    return $str;
}
Exemple #6
0
/**
 * Initializes the BBCode parser.
 *
 * @return object
 */
function &plugin_bbcode_init()
{
    static $bbcode = null;
    if (!defined('BBCODE_INIT_DONE')) {
        $bbcode = new StringParser_BBCode();
        // If you set it to false the case-sensitive will be ignored for all codes
        $bbcode->setGlobalCaseSensitive(false);
        $bbcode->setMixedAttributeTypes(true);
        $BBCODE_TAGS_SIMPLE = array('b' => 'strong', 'i' => 'em', 'quote' => 'blockquote', 'blockquote', 'strong', 'em', 'ins', 'del', 'hr', 'h2', 'h3', 'h4', 'h5', 'h6');
        foreach ($BBCODE_TAGS_SIMPLE as $key => $val) {
            if (!is_numeric($key)) {
                $bbtag = $key;
                $htmltag = $val;
            } else {
                $htmltag = $bbtag = $val;
            }
            $bbcode->addCode($bbtag, 'simple_replace', null, array('start_tag' => "<{$htmltag}>", 'end_tag' => "</{$htmltag}>"), 'inline', array('listitem', 'block', 'inline', 'link'), array());
            $bbcode->setCodeFlag($bbtag, 'closetag', BBCODE_CLOSETAG_MUSTEXIST);
        }
        /* other tags */
        $bbcode->addCode('u', 'simple_replace', null, array('start_tag' => '<span style="text-decoration: underline">', 'end_tag' => '</span>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->addCode('color', 'callback_replace', 'do_bbcode_color', array('usecontent_param' => array('default')), 'inline', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->setCodeFlag('color', 'closetag', BBCODE_CLOSETAG_MUSTEXIST);
        $bbcode->addCode('size', 'callback_replace', 'do_bbcode_size', array('usecontent_param' => array('default')), 'inline', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->setCodeFlag('color', 'closetag', BBCODE_CLOSETAG_MUSTEXIST);
        $bbcode->addCode('code', 'usecontent', 'do_bbcode_code', array(), 'inline', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->setCodeFlag('code', 'closetag', BBCODE_CLOSETAG_MUSTEXIST);
        $bbcode->addCode('html', 'usecontent', 'do_bbcode_html', array(), 'inline', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->setCodeFlag('html', 'closetag', BBCODE_CLOSETAG_MUSTEXIST);
        $bbcode->addCode('url', 'callback_replace', 'do_bbcode_url', array('usecontent_param' => array('default', 'new')), 'link', array('listitem', 'block', 'inline'), array('link'));
        $bbcode->addCode('img', 'callback_replace_single', 'do_bbcode_img', array('usecontent_param' => array('default', 'float', 'alt', 'popup', 'width', 'height', 'title')), 'image', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->setCodeFlag('img', 'closetag', 'BBCODE_CLOSETAG_FORBIDDEN');
        $bbcode->addCode('video', 'callback_replace_single', 'do_bbcode_video', array('usecontent_param' => array('default', 'float', 'width', 'height')), 'image', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->setCodeFlag('video', 'closetag', 'BBCODE_CLOSETAG_FORBIDDEN');
        $bbcode->addCode('list', 'callback_replace', 'do_bbcode_list', array('start_tag' => '<ul>', 'end_tag' => '</ul>'), 'list', array('block', 'listitem'), array());
        $bbcode->setCodeFlag('list', 'closetag', BBCODE_CLOSETAG_MUSTEXIST);
        $bbcode->setCodeFlag('list', 'paragraph_type', BBCODE_PARAGRAPH_BLOCK_ELEMENT);
        $bbcode->setCodeFlag('list', 'opentag.before.newline', BBCODE_NEWLINE_DROP);
        $bbcode->setCodeFlag('list', 'closetag.before.newline', BBCODE_NEWLINE_DROP);
        $bbcode->addCode('*', 'simple_replace', null, array('start_tag' => '<li>', 'end_tag' => '</li>'), 'listitem', array('list'), array());
        $bbcode->setCodeFlag('*', 'closetag', BBCODE_CLOSETAG_OPTIONAL);
        $bbcode->setCodeFlag('*', 'paragraphs', false);
        $bbcode->addCode('align', 'callback_replace', 'do_bbcode_align', array('usecontent_param' => array('default')), 'block', array('listitem', 'block', 'inline', 'link'), array());
        define('BBCODE_INIT_DONE', true);
        // DMKE: there's no bbcode_init filter defined
        $bbcode = apply_filters('bbcode_init', $bbcode);
    }
    return $bbcode;
}
Exemple #7
0
function FF_formatTextBlock($str, $postmode = 'html', $mode = '', $status = 0)
{
    global $_CONF, $_FF_CONF, $_ff_pm;
    $bbcode = new StringParser_BBCode();
    $bbcode->setGlobalCaseSensitive(false);
    $filter = sanitizer::getInstance();
    if ($postmode == 'text') {
        $_ff_pm = 'text';
    } else {
        $_ff_pm = 'html';
    }
    $filter->setPostmode($postmode);
    if ($postmode == 'text') {
        $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), 'bbcode_htmlspecialchars');
    }
    if ($_FF_CONF['use_glfilter'] == 1 && ($postmode == 'html' || $postmode == 'HTML')) {
        $str = str_replace('<pre>', '[code]', $str);
        $str = str_replace('</pre>', '[/code]', $str);
    }
    if ($postmode != 'html' && $postmode != 'HTML') {
        $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), 'nl2br');
    }
    //    $bbcode->addParser(array('block','inline','link','listitem'), '_ff_fixtemplate');
    if (!($status & DISABLE_BBCODE)) {
        $bbcode->addParser('list', 'bbcode_stripcontents');
        $bbcode->addCode('code', 'usecontent', 'do_bbcode_code', array('usecontent_param' => 'default'), 'code', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->addCode('b', 'simple_replace', null, array('start_tag' => '<b>', 'end_tag' => '</b>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->addCode('i', 'simple_replace', null, array('start_tag' => '<i>', 'end_tag' => '</i>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->addCode('u', 'simple_replace', null, array('start_tag' => '<span style="text-decoration: underline;">', 'end_tag' => '</span>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->addCode('p', 'simple_replace', null, array('start_tag' => '<p>', 'end_tag' => '</p>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->addCode('s', 'simple_replace', null, array('start_tag' => '<del>', 'end_tag' => '</del>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->addCode('size', 'callback_replace', 'do_bbcode_size', array('usecontent_param' => 'default'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->addCode('color', 'callback_replace', 'do_bbcode_color', array('usercontent_param' => 'default'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->addCode('list', 'callback_replace', 'do_bbcode_list', array('usecontent_param' => 'default'), 'list', array('inline', 'block', 'listitem'), array());
        $bbcode->addCode('*', 'simple_replace', null, array('start_tag' => '<li>', 'end_tag' => '</li>'), 'listitem', array('list'), array());
        if ($mode != 'noquote') {
            $bbcode->addCode('quote', 'simple_replace', null, array('start_tag' => '</p><blockquote>', 'end_tag' => '</blockquote><p>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
            //            $bbcode->addCode ('quote','simple_replace',null,array('start_tag' => '<blockquote>', 'end_tag' => '</blockquote>'),
            //                              'inline', array('listitem','block','inline','link'), array());
        }
        $bbcode->addCode('url', 'usecontent?', 'do_bbcode_url', array('usecontent_param' => 'default'), 'link', array('listitem', 'block', 'inline'), array('link'));
        $bbcode->addCode('img', 'usecontent', 'do_bbcode_img', array(), 'image', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->addCode('file', 'usecontent', 'do_bbcode_file', array(), 'image', array('listitem', 'block', 'inline', 'link'), array());
        $bbcode->setCodeFlag('quote', 'paragraph_type', BBCODE_PARAGRAPH_ALLOW_INSIDE);
        $bbcode->setCodeFlag('*', 'closetag', BBCODE_CLOSETAG_OPTIONAL);
        $bbcode->setCodeFlag('*', 'paragraphs', true);
        $bbcode->setCodeFlag('list', 'opentag.before.newline', BBCODE_NEWLINE_DROP);
        $bbcode->setCodeFlag('list', 'closetag.before.newline', BBCODE_NEWLINE_DROP);
    }
    $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), '_ff_replacetags');
    if (!($status & DISABLE_SMILIES)) {
        $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), '_ff_replacesmilie');
        // calls replacesmilie on all text blocks
    }
    $bbcode->setRootParagraphHandling(true);
    if ($_FF_CONF['use_censor']) {
        // and $mode == 'preview') {
        $str = COM_checkWords($str);
    }
    $str = $bbcode->parse($str);
    if (!($status & DISABLE_URLPARSE)) {
        $str = $filter->linkify($str);
    }
    return $str;
}
Exemple #8
0
function parse_post($text, $allowsmilie = false)
{
    global $nuke_quotes, $fr_platform, $images;
    $images = array();
    if (is_ipb()) {
        // Replace <br.*/> with \n
        $text = preg_replace('#<br.*?/>#is', "\n", $text);
    }
    $smilies = false;
    $v = process_input(array('smilies' => BOOLEAN));
    if (isset($v['smilies'])) {
        $smilies = $v['smilies'] === true;
    }
    // Trim each line
    $lines = preg_split("/\n/", $text);
    for ($i = 0; $i < count($lines); $i++) {
        $lines[$i] = trim($lines[$i]);
    }
    $text = join("\n", $lines);
    $text = prepare_utf8_string($text, false);
    $bbcode = new StringParser_BBCode();
    $bbcode->setGlobalCaseSensitive(false);
    // Handle default BBCode
    $bbcode->addCode('quote', 'callback_replace', 'handle_quotes', array(), 'inline', array('listitem', 'block', 'inline', 'link'), array(''));
    $bbcode->addCode('url', 'usecontent?', 'handle_url', array('usecontent_param' => 'default'), 'link', array('listitem', 'block', 'inline'), array('link'));
    $bbcode->addCode('source', 'usecontent?', 'handle_url', array('usecontent_param' => 'default'), 'link', array('listitem', 'block', 'inline'), array('link'));
    if (!is_mybb()) {
        // myBB wonky attachment codes are already handled
        $bbcode->addCode('attach', 'callback_replace', 'handle_attach', array(), 'inline', array('listitem', 'block', 'inline', 'link'), array(''));
    }
    $bbcode->addCode('attach', 'callback_replace', 'handle_attach', array(), 'inline', array('listitem', 'block', 'inline', 'link'), array(''));
    $bbcode->addCode('img', 'callback_replace', 'handle_image', array(), 'inline', array('listitem', 'block', 'inline', 'link'), array(''));
    $bbcode->addCode('imgl', 'callback_replace', 'handle_image', array(), 'inline', array('listitem', 'block', 'inline', 'link'), array(''));
    $bbcode->addCode('imgr', 'callback_replace', 'handle_image', array(), 'inline', array('listitem', 'block', 'inline', 'link'), array(''));
    //$bbcode->addCode('spoiler', 'callback_replace', 'handle_spoiler', array(), 'inline',
    //array('listitem', 'block', 'inline', 'link'), array(''));
    $bbcode->addCode('b', 'callback_replace', 'handle_bbcode_bold', array('usecontent_param' => array('default')), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('i', 'callback_replace', 'handle_bbcode_italic', array('usecontent_param' => array('default')), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('color', 'callback_replace', 'handle_bbcode_color', array('usecontent_param' => array('default')), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->setCodeFlag('color', 'closetag', BBCODE_CLOSETAG_MUSTEXIST);
    // Video Link BBCode
    $bbcode->addCode('yt', 'callback_replace', 'fr_handle_youtube', array(), 'inline', array('listitem', 'block', 'inline', 'link'), array(''));
    $bbcode->addCode('youtube', 'callback_replace', 'fr_handle_youtube', array(), 'inline', array('listitem', 'block', 'inline', 'link'), array(''));
    $bbcode->addCode('video', 'callback_replace', 'handle_video', array(), 'inline', array('listitem', 'block', 'inline', 'link'), array(''));
    $bbcode->addCode('ame', 'callback_replace', 'handle_video', array(), 'inline', array('listitem', 'block', 'inline', 'link'), array(''));
    $bbcode->addCode('media', 'callback_replace', is_xen() ? 'handle_xen_media' : 'handle_video', array(), 'inline', array('listitem', 'block', 'inline', 'link'), array(''));
    $bbcode->addCode('tex', 'callback_replace', 'fr_handle_tex', array(), 'inline', array('listitem', 'block', 'inline', 'link'), array(''));
    if (function_exists('fr_branded_bbcode_handler')) {
        @fr_branded_bbcode_handler($bbcode);
    }
    if (is_mybb()) {
        $bbcode->setMixedAttributeTypes(true);
    }
    $nuked_quotes = $text;
    $text = htmlspecialchars_uni($text);
    $nuke_quotes = true;
    $nuked_quotes = $bbcode->parse($nuked_quotes);
    if (is_ipb()) {
        $nuked_quotes = ipb_handle_attachments($nuked_quotes);
    }
    $nuke_quotes = false;
    $text = $bbcode->parse($text);
    if (is_ipb()) {
        $text = ipb_handle_attachments($text);
    }
    // Snag out images
    preg_match_all('#\\[IMG\\](.*?)\\[/IMG\\]#is', $text, $matches);
    $text = preg_replace("#\\[IMG\\](.*?)\\[/IMG\\]#is", '', $text);
    $nuked_quotes = preg_replace("#\\[IMG\\](.*?)\\[/IMG\\]#is", '', $nuked_quotes);
    if ($smilies) {
        if (is_vb()) {
            global $vbulletin;
            $parser = new vB_BbCodeParser($vbulletin, fetch_tag_list());
            $text = $parser->parse_smilies($text, false);
            $text = preg_replace_callback('#img src="(.*?)"#is', parse_post_callback, $text);
        }
    }
    $text = preg_replace("#\n\n\n+#", "\n\n", $text);
    $text = preg_replace("#\n#", "<br/>", $text);
    $text = remove_bbcode($text);
    $nuked_quotes = preg_replace("#\n\n\n+#", "\n\n", $nuked_quotes);
    $nuked_quotes = remove_bbcode($nuked_quotes);
    return array($text, $nuked_quotes, $images);
}
function smarty_modifier_bbcode2html($message)
{
    $bbcode = new StringParser_BBCode();
    $bbcode->addFilter(STRINGPARSER_FILTER_PRE, 'convertlinebreaks');
    //$bbcode->addParser (array ('block', 'inline', 'link', 'listitem'), 'htmlspecialchars');
    $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), 'nl2br');
    $bbcode->addParser('list', 'bbcode_stripcontents');
    $bbcode->addCode('b', 'simple_replace', null, array('start_tag' => '<span style="font-weight:bold">', 'end_tag' => '</span>'), 'inline', array('listitem', 'block', 'inline', 'link', 'quote', 'color', 'size'), array());
    $bbcode->addCode('i', 'simple_replace', null, array('start_tag' => '<span style="font-style:italic">', 'end_tag' => '</span>'), 'inline', array('listitem', 'block', 'inline', 'link', 'quote', 'color', 'size'), array());
    $bbcode->addCode('u', 'simple_replace', null, array('start_tag' => '<span style="text-decoration:underline">', 'end_tag' => '</span>'), 'inline', array('listitem', 'block', 'inline', 'link', 'quote', 'color', 'size'), array());
    $bbcode->addCode('url', 'usecontent?', 'do_bbcode_url', array('usecontent_param' => 'default'), 'link', array('listitem', 'block', 'inline', 'quote', 'color', 'size'), array('link'));
    $bbcode->addCode('quote', 'callback_replace', 'do_bbcode_quote', array('usecontent_param' => 'default'), 'quote', array('listitem', 'block', 'inline', 'quote'), array('link'));
    $bbcode->addCode('code', 'usecontent', 'do_bbcode_code', array(), 'code', array('listitem', 'block', 'inline', 'quote', 'code'), array('link'));
    $bbcode->addCode('color', 'callback_replace', 'do_bbcode_color', array('usecontent_param' => 'default'), 'color', array('listitem', 'block', 'inline', 'quote', 'size'), array('link'));
    $bbcode->addCode('size', 'callback_replace', 'do_bbcode_size', array('usecontent_param' => 'default'), 'size', array('listitem', 'block', 'inline', 'quote', 'color'), array('link'));
    $bbcode->addCode('link', 'callback_replace_single', 'do_bbcode_url', array(), 'link', array('listitem', 'block', 'inline', 'quote', 'color', 'size'), array('link'));
    $bbcode->addCode('img', 'usecontent', 'do_bbcode_img', array(), 'image', array('listitem', 'block', 'inline', 'link', 'quote', 'color', 'size'), array());
    $bbcode->addCode('list', 'callback_replace', 'do_bbcode_list', array('usecontent_param' => 'default'), 'list', array('block', 'listitem', 'quote', 'color', 'size'), array());
    $bbcode->addCode('*', 'simple_replace', null, array('start_tag' => '<li>', 'end_tag' => '</li>'), 'listitem', array('list'), array());
    $bbcode->setCodeFlag('*', 'closetag', BBCODE_CLOSETAG_OPTIONAL);
    $bbcode->setCodeFlag('*', 'paragraphs', true);
    $bbcode->setCodeFlag('list', 'paragraph_type', BBCODE_PARAGRAPH_BLOCK_ELEMENT);
    $bbcode->setCodeFlag('list', 'opentag.before.newline', BBCODE_NEWLINE_DROP);
    $bbcode->setCodeFlag('list', 'closetag.before.newline', BBCODE_NEWLINE_DROP);
    $bbcode->setRootParagraphHandling(false);
    return $bbcode->parse($message);
}
Exemple #10
0
/**
 * Parse text block and interpret BBcodes
 *
 * @param   string  $str        text to parse
 * @param   string  $postmode   Either html or text
 * @param   array   $parser     Additional parsers for the bbcode interpreter
 * @param   array   $code       Additional bbcodes
 * @return  string              the formatted string
 */
function BBC_formatTextBlock($str, $postmode = 'html', $parser = array(), $code = array())
{
    global $_CONF;
    $postmode = strtolower($postmode);
    $bbcode = new StringParser_BBCode();
    $bbcode->setGlobalCaseSensitive(false);
    if ($postmode == 'text') {
        $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), '_bbcode_htmlspecialchars');
        $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), 'nl2br');
    } else {
        $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), 'COM_checkHTML');
    }
    $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), '_bcode_replacetags');
    $bbcode->addParser('list', '_bbcode_stripcontents');
    if (is_array($parser) && count($parser) > 0) {
        foreach ($parser as $extraparser) {
            if (isset($extraparser[0])) {
                $parm1 = $extraparser[0];
            } else {
                $parm1 = '';
            }
            if (isset($extraparser[1])) {
                $parm2 = $extraparser[1];
            } else {
                $parm2 = '';
            }
            $bbcode->addParser($parm1, $parm2);
            // $extraparser[0],$extraparser[1]);
        }
    }
    $bbcode->addCode('b', 'simple_replace', null, array('start_tag' => '<b>', 'end_tag' => '</b>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('i', 'simple_replace', null, array('start_tag' => '<i>', 'end_tag' => '</i>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('u', 'simple_replace', null, array('start_tag' => '<span style="text-decoration: underline;">', 'end_tag' => '</span>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('p', 'simple_replace', null, array('start_tag' => '<p>', 'end_tag' => '</p>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('s', 'simple_replace', null, array('start_tag' => '<del>', 'end_tag' => '</del>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('size', 'callback_replace', '_bbcode_size', array('usecontent_param' => 'default'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('color', 'callback_replace', '_bbcode_color', array('usercontent_param' => 'default'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('list', 'callback_replace', '_bbcode_list', array('usecontent_param' => 'default'), 'list', array('inline', 'block', 'listitem'), array());
    $bbcode->addCode('*', 'simple_replace', null, array('start_tag' => '<li>', 'end_tag' => '</li>'), 'listitem', array('list'), array());
    $bbcode->addCode('quote', 'simple_replace', null, array('start_tag' => '</p><div class="quotemain"><img src="' . $_CONF['site_url'] . '/forum/images/img_quote.gif" alt=""/>', 'end_tag' => '</div><p>'), 'inline', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('url', 'usecontent?', '_bbcode_url', array('usecontent_param' => 'default'), 'link', array('listitem', 'block', 'inline'), array('link'));
    $bbcode->addCode('img', 'usecontent', '_bbcode_img', array(), 'image', array('listitem', 'block', 'inline', 'link'), array());
    $bbcode->addCode('code', 'usecontent', '_bbcode_code', array('usecontent_param' => 'default'), 'code', array('listitem', 'block', 'inline', 'link'), array());
    if (is_array($code) && count($code) > 0) {
        foreach ($code as $extracode) {
            $bbcode->addCode($extracode[0], $extracode[1], $extracode[2], $extracode[3], $extracode[4], $extracode[5], $extracode[6]);
        }
    }
    $bbcode->setCodeFlag('quote', 'paragraph_type', BBCODE_PARAGRAPH_ALLOW_INSIDE);
    $bbcode->setCodeFlag('*', 'closetag', BBCODE_CLOSETAG_OPTIONAL);
    $bbcode->setCodeFlag('*', 'paragraphs', true);
    $bbcode->setCodeFlag('list', 'opentag.before.newline', BBCODE_NEWLINE_DROP);
    $bbcode->setCodeFlag('list', 'closetag.before.newline', BBCODE_NEWLINE_DROP);
    $bbcode->addParser(array('block', 'inline', 'link', 'listitem'), '_bbcode_replacetags');
    $bbcode->setRootParagraphHandling(true);
    if ($_CONF['censormode']) {
        $str = COM_checkWords($str);
    }
    $str = $bbcode->parse($str);
    return $str;
}
Exemple #11
0
/**
 * formats posting texts into plain text for e-mail notifications using the stringparser bbcode class
 * http://www.christian-seiler.de/projekte/php/bbcode/
 *
 * @param string $string
 * @return string
 */
function email_format($string)
{
    global $settings;
    require_once 'modules/stringparser_bbcode/stringparser_bbcode.class.php';
    $bbcode = new StringParser_BBCode();
    $bbcode->setGlobalCaseSensitive(false);
    $bbcode->addCode('quote', 'simple_replace', null, array('start_tag' => '', 'end_tag' => ''), 'inline', array('listitem', 'block', 'inline', 'link', 'quote'), array());
    if ($settings['bbcode'] == 1) {
        $bbcode->addParser('list', 'bbcode_stripcontents');
        $bbcode->addCode('b', 'simple_replace', null, array('start_tag' => '*', 'end_tag' => '*'), 'inline', array('listitem', 'block', 'inline', 'link', 'quote', 'pre', 'monospace'), array());
        $bbcode->addCode('i', 'simple_replace', null, array('start_tag' => '', 'end_tag' => ''), 'inline', array('listitem', 'block', 'inline', 'link', 'quote', 'pre', 'monospace'), array());
        $bbcode->addCode('u', 'simple_replace', null, array('start_tag' => '', 'end_tag' => ''), 'inline', array('listitem', 'block', 'inline', 'link', 'quote', 'pre', 'monospace'), array());
        $bbcode->addCode('url', 'usecontent?', 'do_bbcode_url_email', array('usecontent_param' => 'default'), 'link', array('listitem', 'block', 'inline', 'quote', 'pre', 'monospace'), array('link'));
        $bbcode->addCode('link', 'usecontent?', 'do_bbcode_url_email', array('usecontent_param' => 'default'), 'link', array('listitem', 'block', 'inline', 'quote', 'pre', 'monospace'), array('link'));
        if ($settings['bbcode_img'] == 1) {
            $bbcode->addCode('img', 'usecontent', 'do_bbcode_img_email', array(), 'image', array('listitem', 'block', 'inline', 'link', 'quote'), array());
        }
        $bbcode->addCode('color', 'callback_replace', 'do_bbcode_color_email', array('start_tag' => '', 'end_tag' => ''), 'inline', array('listitem', 'block', 'inline', 'link', 'quote', 'pre', 'monospace'), array());
        $bbcode->addCode('size', 'callback_replace', 'do_bbcode_size_email', array('start_tag' => '', 'end_tag' => ''), 'inline', array('listitem', 'block', 'inline', 'link', 'quote'), array());
        $bbcode->addCode('list', 'simple_replace', null, array('start_tag' => '', 'end_tag' => ''), 'list', array('block', 'listitem'), array());
        $bbcode->addCode('*', 'simple_replace', null, array('start_tag' => '* ', 'end_tag' => ''), 'listitem', array('list'), array());
        $bbcode->setCodeFlag('*', 'closetag', BBCODE_CLOSETAG_OPTIONAL);
        #$bbcode->addCode ('code', 'simple_replace', null, array ('start_tag' => '', 'end_tag' => ''), 'code', array ('block', 'inline'), array ());
        if ($settings['bbcode_code'] == 1) {
            $bbcode->addCode('code', 'usecontent', 'do_bbcode_code_email', array(), 'code', array('block', 'quote'), array());
            $bbcode->addCode('pre', 'simple_replace', null, array('start_tag' => '', 'end_tag' => ''), 'pre', array('block', 'quote'), array());
            $bbcode->addCode('inlinecode', 'simple_replace', null, array('start_tag' => '', 'end_tag' => ''), 'inline', array('listitem', 'block', 'inline', 'link', 'quote'), array());
            $bbcode->addCode('monospace', 'simple_replace', null, array('start_tag' => '', 'end_tag' => ''), 'inline', array('listitem', 'block', 'inline', 'link', 'quote'), array());
        }
    }
    $string = $bbcode->parse($string);
    return $string;
}
Exemple #12
0
 private function addReply()
 {
     if (isset($_POST['addReply'])) {
         if (!isset($_POST['reply']) or empty($_POST['reply'])) {
             $msg = 'You need to fillout a reply!';
             header('Location: index.php?mod=Forum&act=read&id=' . (int) $_GET['id'] . '&msg=' . urlencode($msg));
             exit;
         } else {
             $message = nl2br(htmlentities($_POST['reply'], ENT_COMPAT, 'UTF-8'));
             // Smiley
             //$message = str_replace(":-)","<img src=\"/images/smiley/smile.png\">",$message);
             $message = str_replace(":-)", "<img src=images/smiley/smile.png>", $message);
             //$message = str_replace(":-(","<img src=\"/images/smiley/sad.png\">",$message);
             $message = str_replace(":-(", "<img src=images/smiley/sad.png>", $message);
             //Smiley  ende
             //BBCodes test
             require_once 'stringparser_bbcode.class.php';
             $bbcode = new StringParser_BBCode();
             $bbcode->addCode('b', 'simple_replace', null, array('start_tag' => '<b>', 'end_tag' => '</b>'), 'inline', array('block', 'inline'), array());
             // Fett
             $bbcode->addCode('i', 'simple_replace', null, array('start_tag' => '<i>', 'end_tag' => '</i>'), 'inline', array('block', 'inline'), array());
             // Kursiv
             $bbcode->addCode('u', 'simple_replace', null, array('start_tag' => '<u>', 'end_tag' => '</u>'), 'inline', array('block', 'inline'), array());
             // Unterstrichen
             $bbcode->addCode('list', 'simple_replace', null, array('start_tag' => '<ul>', 'end_tag' => '</ul>'), 'list', array('block', 'listitem'), array());
             // Liste
             $bbcode->addCode('*', 'simple_replace', null, array('start_tag' => '<li>', 'end_tag' => '</li>'), 'listitem', array('list'), array());
             // Punkt in der Liste
             $bbcode->addCode('url', 'usecontent?', 'do_bbcode_url', array('usecontent_param' => 'default'), 'link', array('listitem', 'block', 'inline'), array('link'));
             $bbcode->addCode('link', 'callback_replace_single', 'do_bbcode_url', array(), 'link', array('listitem', 'block', 'inline'), array('link'));
             $bbcode->addCode('img', 'usecontent', 'do_bbcode_img', array(), 'image', array('listitem', 'block', 'inline', 'link'), array());
             $bbcode->addCode('bild', 'usecontent', 'do_bbcode_img', array(), 'image', array('listitem', 'block', 'inline', 'link'), array());
             $bbcode->setOccurrenceType('img', 'image');
             $bbcode->setOccurrenceType('bild', 'image');
             $bbcode->setMaxOccurrences('image', 2);
             $bbcode->setCodeFlag('*', 'closetag', BBCODE_CLOSETAG_OPTIONAL);
             $bbcode->setCodeFlag('*', 'paragraphs', true);
             $bbcode->setCodeFlag('list', 'paragraph_type', BBCODE_PARAGRAPH_BLOCK_ELEMENT);
             $bbcode->setCodeFlag('list', 'opentag.before.newline', BBCODE_NEWLINE_DROP);
             $bbcode->setCodeFlag('list', 'closetag.before.newline', BBCODE_NEWLINE_DROP);
             $bbcode->setRootParagraphHandling(true);
             $message = $bbcode->parse($message);
             //BBCodes ende test
             $top = $this->db->fetchRow('SELECT * FROM `<ezrpg>forum_top` WHERE `id`=?', array($_GET['id']));
             $insert = array();
             $insert['id_cat'] = $top->id_cat;
             $insert['id_top'] = $top->id;
             $insert['poster'] = $this->player->username;
             $insert['message'] = $message;
             $insert['date'] = time();
             $this->db->insert('<ezrpg>forum_mes', $insert);
             $msg = 'The reply is succesfull added!';
             header('Location: index.php?mod=Forum&act=read&id=' . (int) $_GET['id'] . '&msg=' . urlencode($msg));
             exit;
         }
     }
 }
    {
        if ($action == "validate") {
            return true;
        }
        return "<img src=\"" . html_encode($content) . "\" alt=\"\" title=\"\" />";
    }
}
$bbcode = new StringParser_BBCode();
$bbcode->addFilter(STRINGPARSER_FILTER_PRE, "convertlinebreaks");
$bbcode->addParser(array("block", "inline", "link", "listitem"), "htmlspecialchars");
$bbcode->addParser(array("block", "inline", "link", "listitem"), "nl2br");
$bbcode->addParser("list", "bbcode_stripcontents");
$bbcode->addCode("quote", "simple_replace", null, array("start_tag" => "<span class=\"quoteStyle\">", "end_tag" => "</span>"), "inline", array("block", "inline"), array());
$bbcode->addCode("code", "simple_replace", null, array("start_tag" => "<span class=\"codeStyle\">", "end_tag" => "</span>"), "inline", array("block", "inline"), array());
$bbcode->addCode("u", "simple_replace", null, array("start_tag" => "<span style=\"text-decoration: underline\">", "end_tag" => "</span>"), "inline", array("listitem", "block", "inline", "link"), array());
$bbcode->addCode("b", "simple_replace", null, array("start_tag" => "<span style=\"font-weight: bold\">", "end_tag" => "</span>"), "inline", array("listitem", "block", "inline", "link"), array());
$bbcode->addCode("i", "simple_replace", null, array("start_tag" => "<span style=\"font-style: oblique\">", "end_tag" => "</span>"), "inline", array("listitem", "block", "inline", "link"), array());
$bbcode->addCode("url", "usecontent?", "do_bbcode_url", array("usecontent_param" => "default"), "link", array("listitem", "block", "inline"), array("link"));
$bbcode->addCode("color", "usecontent?", "do_bbcode_color", array("usecontent_param" => "default"), "link", array("listitem", "block", "inline"), array());
$bbcode->addCode("link", "callback_replace_single", "do_bbcode_url", array(), "link", array("listitem", "block", "inline"), array("link"));
$bbcode->addCode("img", "usecontent", "do_bbcode_img", array(), "image", array("listitem", "block", "inline", "link"), array());
$bbcode->setOccurrenceType("img", "image");
$bbcode->setMaxOccurrences("image", 10);
$bbcode->addCode("list", "simple_replace", null, array("start_tag" => "<ul>", "end_tag" => "</ul>"), "list", array("block", "listitem"), array());
$bbcode->addCode("*", "simple_replace", null, array("start_tag" => "<li>", "end_tag" => "</li>"), "listitem", array("list"), array());
$bbcode->setCodeFlag("*", "closetag", BBCODE_CLOSETAG_OPTIONAL);
$bbcode->setCodeFlag("*", "paragraphs", true);
$bbcode->setCodeFlag("list", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT);
$bbcode->setCodeFlag("list", "opentag.before.newline", BBCODE_NEWLINE_DROP);
$bbcode->setCodeFlag("list", "closetag.before.newline", BBCODE_NEWLINE_DROP);
$bbcode->setRootParagraphHandling(false);