From aef9b631c3c2b0f50c5e557deb91fd7232329e84 Mon Sep 17 00:00:00 2001 From: Cameron Date: Sat, 15 Jun 2013 02:18:15 -0700 Subject: [PATCH] More [code] bbcode work. --- e107_core/bbcodes/bb_code.php | 101 ++++++++++++++++++++++++++++++++ e107_core/bbcodes/code.bb | 68 --------------------- e107_handlers/e_parse_class.php | 28 ++++----- 3 files changed, 115 insertions(+), 82 deletions(-) create mode 100644 e107_core/bbcodes/bb_code.php delete mode 100644 e107_core/bbcodes/code.bb 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('dataFilter($data); } - $data = str_replace('<?','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
"; - $className = 'bb_'.$code; - $this->bbList[$code] = new $className(); + $className = 'bb_'.$last_bbcode; + $this->bbList[$last_bbcode] = new $className(); } - elseif (file_exists($bbPath.$bbFile.'.bb')) + elseif(file_exists($bbPath.$bbFile.'.bb')) { $bbcode = file_get_contents($bbPath.$bbFile.'.bb'); }