/**
  * Formats a message for search result output.
  * 
  * @param	string		$text
  * @return	string
  */
 public function parse($text)
 {
     // remove nonessentials
     $text = Regex::compile('<!-- begin:parser_nonessential -->.*?<!-- end:parser_nonessential -->', Regex::DOT_ALL)->replace($text, '');
     // remove html codes
     $text = StringUtil::stripHTML($text);
     // decode html
     $text = StringUtil::decodeHTML($text);
     // get abstract
     $text = $this->getMessageAbstract($text);
     // encode html
     $text = StringUtil::encodeHTML($text);
     // do highlighting
     return KeywordHighlighter::getInstance()->doHighlight($text);
 }
Пример #2
0
 /**
  * Parses a message.
  * 
  * @param	string		$message
  * @param	boolean		$enableSmilies
  * @param	boolean		$enableHtml
  * @param	boolean		$enableBBCodes
  * @param	boolean		$doKeywordHighlighting
  * @return	string		parsed message
  */
 public function parse($message, $enableSmilies = true, $enableHtml = false, $enableBBCodes = true, $doKeywordHighlighting = true)
 {
     $this->cachedCodes = array();
     $this->message = $message;
     // call event
     EventHandler::getInstance()->fireAction($this, 'beforeParsing');
     if ($enableBBCodes) {
         // cache codes
         $this->message = $this->cacheCodes($this->message);
     }
     if (!$enableHtml) {
         // encode html
         $this->message = StringUtil::encodeHTML($this->message);
         // converts newlines to <br />'s
         if ($this->getOutputType() == 'text/html') {
             $this->message = nl2br($this->message);
         }
     } else {
         if ($this->getOutputType() == 'text/simplified-html') {
             $this->message = StringUtil::stripHTML($this->message);
         }
     }
     // parse bbcodes
     if ($enableBBCodes) {
         $this->message = parent::parse($this->message);
     }
     // parse smilies
     if ($enableSmilies) {
         $this->message = $this->parseSmilies($this->message, $enableHtml);
     }
     if ($enableBBCodes && !empty($this->cachedCodes)) {
         // insert cached codes
         $this->message = $this->insertCachedCodes($this->message);
     }
     // highlight search query
     if ($doKeywordHighlighting) {
         $this->message = KeywordHighlighter::getInstance()->doHighlight($this->message);
     }
     // replace bad html tags (script etc.)
     $badSearch = array('/(javascript):/i', '/(about):/i', '/(vbscript):/i');
     $badReplace = array('$1<b></b>:', '$1<b></b>:', '$1<b></b>:');
     $this->message = preg_replace($badSearch, $badReplace, $this->message);
     // call event
     EventHandler::getInstance()->fireAction($this, 'afterParsing');
     return $this->message;
 }