mirror of
				https://github.com/e107inc/e107.git
				synced 2025-10-24 19:26:21 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			116 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Copyright (C) e107 Inc (e107.org), Licensed under GNU GPL (http://www.gnu.org/licenses/gpl.txt)
 | |
|  * [code] bbcode
 | |
|  */
 | |
| 
 | |
| if (!defined('e107_INIT')) { exit; }
 | |
| 
 | |
| 
 | |
| class bb_code extends e_bb_base
 | |
| {
 | |
| 	/**
 | |
| 	 * Called prior to save
 | |
| 	 * Re-assemble the bbcode
 | |
| 	 */
 | |
| 	function toDB($code_text, $parm)
 | |
| 	{
 | |
| 		$paramet 	= ($parm == 'inline') ? 'inline' : '';
 | |
| 	//	$code_text 	= htmlspecialchars($code_text, ENT_QUOTES, 'UTF-8');
 | |
| 	//	$code_text = str_replace('<','<r;',$code_text);
 | |
| 		$code_text = htmlentities($code_text, ENT_QUOTES, 'utf-8');	
 | |
| 
 | |
| 	//	$srch = array('{','}');
 | |
| 	//	$repl = array( '{', '}'); // avoid code getting parsed as templates or shortcodes. 
 | |
| 			
 | |
| 	//	$code_text = str_replace($srch, $repl, $code_text);
 | |
| 
 | |
| 		return $paramet ? '[code='.$paramet.']'.$code_text.'[/code]' : '[code]'.$code_text.'[/code]';
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 
 | |
| 	/**
 | |
| 	 *	Send output to browser. 
 | |
| 	 */
 | |
| 	function toHTML($code_text, $parm)
 | |
| 	{
 | |
| 		global $e107cache;
 | |
| 		
 | |
| 		$class = e107::getBB()->getClass('code');
 | |
| 		$pref 	= e107::getPref();
 | |
| 		$tp 	= e107::getParser();
 | |
| 			
 | |
| 		if($pref['smiley_activate']) 
 | |
| 		{
 | |
| 			$code_text = e107::getEmote()->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(defset('GESHI_NORMAL_LINE_NUMBERS'));
 | |
| 				$geshi->set_header_type(defset('GESHI_HEADER_DIV'));
 | |
| 				$CodeCache = $geshi->parse_code();
 | |
| 				$e107cache->set('GeshiParsed_'.$code_md5, $CodeCache);
 | |
| 			}
 | |
| 				$ret = "<code class='code_highlight code-box {$class}' style='unicode-bidi: embed; direction: ltr'>".str_replace("&", "&", $CodeCache)."</code>";
 | |
| 		}
 | |
| 		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');
 | |
| 
 | |
| 				$srch = array('{','}');
 | |
| 				$repl = array('{', '}'); 
 | |
| 
 | |
| 				$code_text = str_replace($srch, $repl, $code_text); // avoid code getting parsed as templates or shortcodes. 
 | |
| 				
 | |
| 				if($parm == 'inline')
 | |
| 				{
 | |
| 					return "<code style='unicode-bidi: embed; direction: ltr'>".$code_text."</code>";	
 | |
| 				}
 | |
| 				
 | |
| 			//	$highlighted_text = highlight_string($code_text, TRUE);
 | |
| 			// highlighted_text = str_replace(array("<code>","</code>"),"",$highlighted_text);
 | |
| 				$divClass = ($parm) ? $parm : 'code_highlight';
 | |
| 				$ret = "<pre class='prettyprint linenums ".e107::getParser()->toAttribute($divClass)." code-box {$class}' style='unicode-bidi: embed; direction: ltr'>".$code_text."</pre>";
 | |
| 		}
 | |
| 			
 | |
| 	
 | |
| 			
 | |
| 		$ret = str_replace("[", "[", $ret);
 | |
| 		
 | |
| 		return $ret;
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| ?>
 |