diff --git a/e107_handlers/e_parse_class.php b/e107_handlers/e_parse_class.php index 156cbca17..5961006bf 100644 --- a/e107_handlers/e_parse_class.php +++ b/e107_handlers/e_parse_class.php @@ -9,9 +9,9 @@ * Text processing and parsing functions * * $Source: /cvs_backup/e107_0.8/e107_handlers/e_parse_class.php,v $ -* $Revision: 1.78 $ -* $Date: 2009-10-30 23:38:14 $ -* $Author: e107steved $ +* $Revision: 1.79 $ +* $Date: 2009-11-12 21:41:34 $ +* $Author: marj_nl_fr $ * */ if (!defined('e107_INIT')) { exit(); } @@ -461,6 +461,7 @@ class e_parse * @param boolean $mod [optional] The 'no_html' and 'no_php' modifiers blanket prevent HTML and PHP posting regardless of posting permissions. (used in logging) * @param boolean $original_author [optional] * @return string + * @todo complete the documentation of this essential method */ public function toDB($data, $nostrip = FALSE, $no_encode = FALSE, $mod = FALSE, $original_author = FALSE) { @@ -768,8 +769,8 @@ class e_parse * Truncate a HTML string to a maximum length $len ­ append the string $more if it was truncated * * @param string $text String to process - * @param integer $len Length of characters to be truncated - * @param string $more String which will be added if truncation + * @param integer $len [optional] Length of characters to be truncated - default 200 + * @param string $more [optional] String which will be added if truncation - default ' ... ' * @return string */ public function html_truncate ($text, $len = 200, $more = ' ... ') @@ -862,7 +863,9 @@ class e_parse { // Always valid if(strlen($text) <= $len) + { return $text; + } /* shouldn't be needed if (strtolower(CHARSET) !== 'utf-8') { @@ -878,7 +881,9 @@ class e_parse $text, $matches); // return if utf-8 length is less than max as well if (empty($matches[2])) + { return $text; + } $ret = $matches[1]; } // search for possible broken html entities @@ -886,7 +891,9 @@ class e_parse // it should work for any characters encoding $leftAmp = strrpos(substr($ret, -8), '&'); if($leftAmp) + { $ret = substr($ret, 0, strlen($ret) - 8 + $leftAmp); + } return $ret.$more; } @@ -941,11 +948,14 @@ class e_parse * @param mixed $postID [optional] * @param boolean $wrap [optional] * @return string + * @todo complete the documentation of this essential method */ - public function toHTML($text, $parseBB = FALSE, $modifiers = "", $postID = "", $wrap = FALSE) + public function toHTML($text, $parseBB = FALSE, $modifiers = '', $postID = "", $wrap = FALSE) { if($text == '') + { return $text; + } global $pref, $fromadmin; @@ -989,17 +999,24 @@ class e_parse // Turn off a few things if not enabled in options if(!varsettrue($pref['smiley_activate'])) + { $opts['emotes'] = FALSE; + } if(!varsettrue($pref['make_clickable'])) + { $opts['link_click'] = FALSE; + } if(!varsettrue($pref['link_replace'])) + { $opts['link_replace'] = FALSE; + } $fromadmin = $opts['fromadmin']; // Convert defines(constants) within text. eg. Lan_XXXX - must be the entire text string (i.e. not embedded) // The check for '::' is a workaround for a bug in the Zend Optimiser 3.3.0 and PHP 5.2.4 combination // - causes crashes if '::' in site name + //TODO - marj - find a way to use language method here XOR remove the limit of 24 characters. if($opts['defs'] && (strlen($text) < 25) && ((strpos($text, '::') === FALSE) && defined(trim($text)))) { return constant(trim($text)); @@ -1076,7 +1093,10 @@ class e_parse switch ($matches[2]) { case 'php' : - if (DB_INF_SHOW) echo "PHP decode: ".htmlentities($matches[4])."

"; + if (DB_INF_SHOW) + { + echo "PHP decode: ".htmlentities($matches[4])."

"; + } // Probably run the output through the normal processing functions - but put here so the PHP code can disable if desired $proc_funcs = TRUE; @@ -1089,20 +1109,28 @@ class e_parse // if (!$matches[3]) $bbcode = str_replace($search, $replace, $matches[4]); // Because we're bypassing most of the initial parser processing, we should be able to just reverse the effects of toDB() and execute the code if (!$matches[3]) + { $bbcode = html_entity_decode($matches[4], ENT_QUOTES, 'UTF-8'); + } if (DB_INF_SHOW) + { echo "PHP after decode: ".htmlentities($bbcode)."

"; + } break; + case 'html' : $proc_funcs = TRUE; $convertNL = FALSE; break; + case 'hide' : $proc_funcs = TRUE; + default : // Most bbcodes will just execute their normal file // Just read in the code file and execute it $bbcode = file_get_contents($bbFile); } // end - switch ($matches[2]) + if ($bbcode) { // Execute the file ob_start(); @@ -1143,7 +1171,9 @@ class e_parse { // Its a style block - just pass it through unaltered - except, do we need the line break stuff? - QUERY XXX-01 if(DB_INF_SHOW) + { echo "Processing stylesheet: {$sub_blk}
"; + } $ret_parser .= $sub_blk; } else