diff --git a/e107_core/bbcodes/bb_code.php b/e107_core/bbcodes/bb_code.php
new file mode 100644
index 000000000..10164d042
--- /dev/null
+++ b/e107_core/bbcodes/bb_code.php
@@ -0,0 +1,101 @@
+getClass('code');
+ $pref = e107::getPref();
+ $tp = e107::getParser();
+
+ if($pref['smiley_activate'])
+ {
+ if (!is_object($tp->e_emote))
+ {
+ $tp->e_emote = new e_emoteFilter;
+ }
+ $code_text = $tp->e_emote->filterEmotesRev($code_text);
+ }
+
+ $search = array(E_NL,'\','$', '<');
+ $replace = array("\r\n","\\",'$', '<');
+ $code_text = str_replace($search, $replace, $code_text);
+
+
+ if(isset($pref['useGeshi']) && $pref['useGeshi'] && file_exists(e_PLUGIN."geshi/geshi.php"))
+ {
+ $code_md5 = md5($code_text);
+ if(!$CodeCache = $e107cache->retrieve('GeshiParsed_'.$code_md5))
+ {
+ require_once(e_PLUGIN."geshi/geshi.php");
+ if($parm)
+ {
+ $geshi = new GeSHi($code_text, $parm, e_PLUGIN."geshi/geshi/");
+ }
+ else
+ {
+ $geshi = new GeSHi($code_text, ($pref['defaultLanGeshi'] ? $pref['defaultLanGeshi'] : 'php'), e_PLUGIN."geshi/geshi/");
+ }
+
+ $geshi->line_style1 = "font-family: 'Courier New', Courier, monospace; font-weight: normal; font-style: normal;";
+ $geshi->set_encoding('utf-8');
+ $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
+ $geshi->set_header_type(GESHI_HEADER_DIV);
+ $CodeCache = $geshi->parse_code();
+ $e107cache->set('GeshiParsed_'.$code_md5, $CodeCache);
+ }
+ $ret = "".str_replace("&", "&", $CodeCache)."
";
+ }
+ else
+ {
+
+ $code_text = html_entity_decode($code_text, ENT_QUOTES, 'utf-8');
+ $code_text = trim($code_text);
+ $code_text = htmlspecialchars($code_text, ENT_QUOTES, 'utf-8');
+
+ if($parm == 'inline')
+ {
+ return "".$code_text."
";
+ }
+
+ // $highlighted_text = highlight_string($code_text, TRUE);
+ // highlighted_text = str_replace(array("","
"),"",$highlighted_text);
+ $divClass = ($parm) ? $parm : 'code_highlight';
+ $ret = "
".$code_text.""; + } + + $ret = str_replace("[", "[", $ret); + return $ret; + + } + + +} + + + +?> \ No newline at end of file diff --git a/e107_core/bbcodes/code.bb b/e107_core/bbcodes/code.bb deleted file mode 100644 index 7ecf467b6..000000000 --- a/e107_core/bbcodes/code.bb +++ /dev/null @@ -1,68 +0,0 @@ -//getClass('code'); - - - -global $pref, $e107cache; - -$tp = e107::getParser(); - -if($pref['smiley_activate']) -{ - if (!is_object($tp->e_emote)) - { - // require_once(e_HANDLER.'emote_filter.php'); - $tp->e_emote = new e_emoteFilter; - } - $code_text = $tp->e_emote->filterEmotesRev($code_text); -} - -$search = array(E_NL,'\','$', '<'); -$replace = array("\r\n","\\",'$', '<'); -$code_text = str_replace($search, $replace, $code_text); - - - -if(isset($pref['useGeshi']) && $pref['useGeshi'] && file_exists(e_PLUGIN."geshi/geshi.php")) { - - - - $code_md5 = md5($code_text); - if(!$CodeCache = $e107cache->retrieve('GeshiParsed_'.$code_md5)) { - require_once(e_PLUGIN."geshi/geshi.php"); - if($parm) { - $geshi = new GeSHi($code_text, $parm, e_PLUGIN."geshi/geshi/"); - } else { - $geshi = new GeSHi($code_text, ($pref['defaultLanGeshi'] ? $pref['defaultLanGeshi'] : 'php'), e_PLUGIN."geshi/geshi/"); - } - $geshi->line_style1 = "font-family: 'Courier New', Courier, monospace; font-weight: normal; font-style: normal;"; - $geshi->set_encoding('utf-8'); - $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); - $geshi->set_header_type(GESHI_HEADER_DIV); - $CodeCache = $geshi->parse_code(); - $e107cache->set('GeshiParsed_'.$code_md5, $CodeCache); - } - $ret = "
".str_replace("&", "&", $CodeCache)."
";
-}
-else
-{
-
-
-
-
- $code_text = html_entity_decode($code_text, ENT_QUOTES, 'utf-8');
- $code_text = trim($code_text);
- $code_text = htmlspecialchars($code_text, ENT_QUOTES, 'utf-8');
-
- if($parm == 'inline')
- {
- return "".$code_text."
";
- }
-
-// $highlighted_text = highlight_string($code_text, TRUE);
-// highlighted_text = str_replace(array("","
"),"",$highlighted_text);
- $divClass = ($parm) ? $parm : 'code_highlight';
- $ret = "".$code_text.""; -} -$ret = str_replace("[", "[", $ret); -return $ret; \ No newline at end of file diff --git a/e107_handlers/e_parse_class.php b/e107_handlers/e_parse_class.php index 8e47336f3..91b672fbb 100644 --- a/e107_handlers/e_parse_class.php +++ b/e107_handlers/e_parse_class.php @@ -487,7 +487,7 @@ class e_parse extends e_parser if ($mod != 'pReFs') //XXX We're not saving prefs. { $data = $this->preFilter($data); - $data = str_replace('','<?',$data); // replace so that it can still be used in [code][/code] bbcode. + if (strip_tags($data) != $data) // html tags present. { @@ -504,7 +504,7 @@ class e_parse extends e_parser $data = str_replace(array('[html]','[/html]'),'',$data); // $data = $this->dataFilter($data); } - $data = str_replace('<?','',$data); // replace so that it can still be used in [code][/code] bbcode. + } if (check_class($core_pref->get('post_html'))) /*$core_pref->is('post_html') && */ @@ -1417,15 +1417,16 @@ class e_parse extends e_parser // $matches[4] - bit between the tags (i.e. text to process) // $matches[5] - closing tag // In case we decide to load a file - $bbPath = e_CORE.'bbcodes/'; - $bbFile = strtolower(str_replace('_', '', $matches[2])); - $bbcode = ''; - $className = ''; - $full_text = ''; - $code_text = $matches[4]; + + $bbPath = e_CORE.'bbcodes/'; + $bbFile = strtolower(str_replace('_', '', $matches[2])); + $bbcode = ''; + $className = ''; + $full_text = ''; + $code_text = $matches[4]; + $parm = $matches[3] ? substr($matches[3],1) : ''; + $last_bbcode = $matches[2]; - $parm = $matches[3] ? substr($matches[3],1) : ''; - $last_bbcode = $matches[2]; switch ($matches[2]) { case 'php' : @@ -1474,11 +1475,10 @@ class e_parse extends e_parser if (file_exists($bbPath.'bb_'.$bbFile.'.php')) { // Its a bbcode class file require_once($bbPath.'bb_'.$bbFile.'.php'); - //echo "Load: {$bbFile}.php