Update of /cvsroot/tikiwiki/_smarty/libs In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv32052/libs Modified Files: Tag: BRANCH-1-9 Config_File.class.php Smarty.class.php Smarty_Compiler.class.php debug.tpl Log Message: Upgrade to smarty 2.6.18: copy the release - change the https in fetch , instead of merge Index: Config_File.class.php =================================================================== RCS file: /cvsroot/tikiwiki/_smarty/libs/Config_File.class.php,v retrieving revision 1.3.4.4 retrieving revision 1.3.4.5 diff -u -d -r1.3.4.4 -r1.3.4.5 --- Config_File.class.php 5 Sep 2006 15:26:04 -0000 1.3.4.4 +++ Config_File.class.php 11 May 2007 15:54:47 -0000 1.3.4.5 @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * @link http://smarty.php.net/ - * @version 2.6.14 + * @version 2.6.18 * @copyright Copyright: 2001-2005 New Digital Group, Inc. * @author Andrei Zmievski <an...@ph...> * @access public Index: Smarty.class.php =================================================================== RCS file: /cvsroot/tikiwiki/_smarty/libs/Smarty.class.php,v retrieving revision 1.3.4.4 retrieving revision 1.3.4.5 diff -u -d -r1.3.4.4 -r1.3.4.5 --- Smarty.class.php 5 Sep 2006 15:26:04 -0000 1.3.4.4 +++ Smarty.class.php 11 May 2007 15:54:47 -0000 1.3.4.5 @@ -27,7 +27,7 @@ * @author Monte Ohrt <monte at ohrt dot com> * @author Andrei Zmievski <an...@ph...> * @package Smarty - * @version 2.6.14 + * @version 2.6.18 */ /* $Id$ */ @@ -464,7 +464,7 @@ * * @var string */ - var $_version = '2.6.14'; + var $_version = '2.6.18'; /** * current template inclusion depth Index: Smarty_Compiler.class.php =================================================================== RCS file: /cvsroot/tikiwiki/_smarty/libs/Smarty_Compiler.class.php,v retrieving revision 1.3.4.4 retrieving revision 1.3.4.5 diff -u -d -r1.3.4.4 -r1.3.4.5 --- Smarty_Compiler.class.php 5 Sep 2006 15:26:04 -0000 1.3.4.4 +++ Smarty_Compiler.class.php 11 May 2007 15:54:47 -0000 1.3.4.5 @@ -21,7 +21,7 @@ * @link http://smarty.php.net/ * @author Monte Ohrt <monte at ohrt dot com> * @author Andrei Zmievski <an...@ph...> - * @version 2.6.14 + * @version 2.6.18 * @copyright 2001-2005 New Digital Group, Inc. * @package Smarty */ @@ -139,7 +139,7 @@ // #foo# // "text" // "text" - $this->_var_regexp = '(?:' . $this->_avar_regexp . '|' . $this->_num_const_regexp . '|' . $this->_qstr_regexp . ')'; + $this->_var_regexp = '(?:' . $this->_avar_regexp . '|' . $this->_qstr_regexp . ')'; // matches valid object call (one level of object nesting allowed in parameters): // $foo->bar @@ -240,9 +240,6 @@ $ldq = preg_quote($this->left_delimiter, '~'); $rdq = preg_quote($this->right_delimiter, '~'); - /* un-hide hidden xml open tags */ - $source_content = preg_replace("~<({$ldq}(.*?){$rdq})[?]~s", '< \\1', $source_content); - // run template source through prefilter functions if (count($this->_plugins['prefilter']) > 0) { foreach ($this->_plugins['prefilter'] as $filter_name => $prefilter) { @@ -281,7 +278,7 @@ /* loop through text blocks */ for ($curr_tb = 0, $for_max = count($text_blocks); $curr_tb < $for_max; $curr_tb++) { /* match anything resembling php tags */ - if (preg_match_all('~(<\?(?:\w+|=)?|\?>|language\s*=\s*[\"\']?php[\"\']?)~is', $text_blocks[$curr_tb], $sp_match)) { + if (preg_match_all('~(<\?(?:\w+|=)?|\?>|language\s*=\s*[\"\']?\s*php\s*[\"\']?)~is', $text_blocks[$curr_tb], $sp_match)) { /* replace tags with placeholders to prevent recursive replacements */ $sp_match[1] = array_unique($sp_match[1]); usort($sp_match[1], '_smarty_sort_length'); @@ -307,7 +304,7 @@ } } } - + /* Compile the template tags into PHP code. */ $compiled_tags = array(); for ($i = 0, $for_max = count($template_tags); $i < $for_max; $i++) { @@ -352,17 +349,30 @@ } } $compiled_content = ''; - + + $tag_guard = '%%%SMARTYOTG' . md5(uniqid(rand(), true)) . '%%%'; + /* Interleave the compiled contents and text blocks to get the final result. */ for ($i = 0, $for_max = count($compiled_tags); $i < $for_max; $i++) { if ($compiled_tags[$i] == '') { // tag result empty, remove first newline from following text block $text_blocks[$i+1] = preg_replace('~^(\r\n|\r|\n)~', '', $text_blocks[$i+1]); } - $compiled_content .= $text_blocks[$i].$compiled_tags[$i]; + // replace legit PHP tags with placeholder + $text_blocks[$i] = str_replace('<?', $tag_guard, $text_blocks[$i]); + $compiled_tags[$i] = str_replace('<?', $tag_guard, $compiled_tags[$i]); + + $compiled_content .= $text_blocks[$i] . $compiled_tags[$i]; } - $compiled_content .= $text_blocks[$i]; + $compiled_content .= str_replace('<?', $tag_guard, $text_blocks[$i]); + // escape php tags created by interleaving + $compiled_content = str_replace('<?', "<?php echo '<?' ?>\n", $compiled_content); + $compiled_content = preg_replace("~(?<!')language\s*=\s*[\"\']?\s*php\s*[\"\']?~", "<?php echo 'language=php' ?>\n", $compiled_content); + + // recover legit tags + $compiled_content = str_replace($tag_guard, '<?', $compiled_content); + // remove \n from the end of the file, if any if (strlen($compiled_content) && (substr($compiled_content, -1) == "\n") ) { $compiled_content = substr($compiled_content, 0, -1); @@ -372,9 +382,6 @@ $compiled_content = "<?php \$this->_cache_serials['".$this->_cache_include."'] = '".$this->_cache_serial."'; ?>" . $compiled_content; } - // remove unnecessary close/open tags - $compiled_content = preg_replace('~\?>\n?<\?php~', '', $compiled_content); - // run compiled template through postfilter functions if (count($this->_plugins['postfilter']) > 0) { foreach ($this->_plugins['postfilter'] as $filter_name => $postfilter) { @@ -927,7 +934,11 @@ $name = $this->_dequote($attrs['name']); if (empty($name)) { - $this->_syntax_error("missing insert name", E_USER_ERROR, __FILE__, __LINE__); + return $this->_syntax_error("missing insert name", E_USER_ERROR, __FILE__, __LINE__); + } + + if (!preg_match('~^\w+$~', $name)) { + return $this->_syntax_error("'insert: 'name' must be an insert function name", E_USER_ERROR, __FILE__, __LINE__); } if (!empty($attrs['script'])) { @@ -1160,7 +1171,7 @@ } $item = $this->_dequote($attrs['item']); if (!preg_match('~^\w+$~', $item)) { - return $this->_syntax_error("'foreach: item' must be a variable name (literal string)", E_USER_ERROR, __FILE__, __LINE__); + return $this->_syntax_error("'foreach: 'item' must be a variable name (literal string)", E_USER_ERROR, __FILE__, __LINE__); } if (isset($attrs['key'])) { @@ -1671,11 +1682,11 @@ // if contains unescaped $, expand it if(preg_match_all('~(?:\`(?<!\\\\)\$' . $this->_dvar_guts_regexp . '(?:' . $this->_obj_ext_regexp . ')*\`)|(?:(?<!\\\\)\$\w+(\[[a-zA-Z0-9]+\])*)~', $var_expr, $_match)) { $_match = $_match[0]; - rsort($_match); - reset($_match); + $_replace = array(); foreach($_match as $_var) { - $var_expr = str_replace ($_var, '".(' . $this->_parse_var(str_replace('`','',$_var)) . ')."', $var_expr); + $_replace[$_var] = '".(' . $this->_parse_var(str_replace('`','',$_var)) . ')."'; } + $var_expr = strtr($var_expr, $_replace); $_return = preg_replace('~\.""|(?<!\\\\)""\.~', '', $var_expr); } else { $_return = $var_expr; @@ -2219,9 +2230,9 @@ if ($_cacheable || 0<$this->_cacheable_state++) return ''; if (!isset($this->_cache_serial)) $this->_cache_serial = md5(uniqid('Smarty')); - $_ret = 'if ($this->caching && !$this->_cache_including) { echo \'{nocache:' + $_ret = 'if ($this->caching && !$this->_cache_including): echo \'{nocache:' . $this->_cache_serial . '#' . $this->_nocache_count - . '}\'; };'; + . '}\'; endif;'; return $_ret; } @@ -2236,9 +2247,9 @@ $_cacheable = !isset($this->_plugins[$type][$name]) || $this->_plugins[$type][$name][4]; if ($_cacheable || --$this->_cacheable_state>0) return ''; - return 'if ($this->caching && !$this->_cache_including) { echo \'{/nocache:' + return 'if ($this->caching && !$this->_cache_including): echo \'{/nocache:' . $this->_cache_serial . '#' . ($this->_nocache_count++) - . '}\'; };'; + . '}\'; endif;'; } Index: debug.tpl =================================================================== RCS file: /cvsroot/tikiwiki/_smarty/libs/debug.tpl,v retrieving revision 1.3.4.1 retrieving revision 1.3.4.2 diff -u -d -r1.3.4.1 -r1.3.4.2 --- debug.tpl 13 Mar 2005 00:18:57 -0000 1.3.4.1 +++ debug.tpl 11 May 2007 15:54:47 -0000 1.3.4.2 @@ -1,64 +1,157 @@ {* Smarty *} +{* debug.tpl, last updated version 2.1.0 *} +{assign_debug_info} +{capture assign=debug_output} +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> +<head> + <title>Smarty Debug Console</title> +{literal} +<style type="text/css"> +/* <![CDATA[ */ +body, h1, h2, td, th, p { + font-family: sans-serif; + font-weight: normal; + font-size: 0.9em; + margin: 1px; + padding: 0; +} -{* debug.tpl, last updated version 2.0.1 *} +h1 { + margin: 0; + text-align: left; + padding: 2px; + background-color: #f0c040; + color: black; + font-weight: bold; + font-size: 1.2em; + } -{assign_debug_info} +h2 { + background-color: #9B410E; + color: white; + text-align: left; + font-weight: bold; + padding: 2px; + border-top: 1px solid black; +} + +body { + background: black; +} +p, table, div { + background: #f0ead8; +} + +p { + margin: 0; + font-style: italic; + text-align: center; +} + +table { + width: 100%; +} + +th, td { + font-family: monospace; + vertical-align: top; + text-align: left; + width: 50%; +} + +td { + color: green; +} + +.odd { + background-color: #eeeeee; +} + +.even { + background-color: #fafafa; +} + +.exectime { + font-size: 0.8em; + font-style: italic; +} + +#table_assigned_vars th { + color: blue; +} + +#table_config_vars th { + color: maroon; +} +/* ]]> */ +</style> +{/literal} +</head> +<body> + +<h1>Smarty Debug Console</h1> + +<h2>included templates & config files (load time in seconds)</h2> + +<div> +{section name=templates loop=$_debug_tpls} + {section name=indent loop=$_debug_tpls[templates].depth} {/section} + <font color={if $_debug_tpls[templates].type eq "template"}brown{elseif $_debug_tpls[templates].type eq "insert"}black{else}green{/if}> + {$_debug_tpls[templates].filename|escape:html}</font> + {if isset($_debug_tpls[templates].exec_time)} + <span class="exectime"> + ({$_debug_tpls[templates].exec_time|string_format:"%.5f"}) + {if %templates.index% eq 0}(total){/if} + </span> + {/if} + <br /> +{sectionelse} + <p>no templates included</p> +{/section} +</div> + +<h2>assigned template variables</h2> + +<table id="table_assigned_vars"> + {section name=vars loop=$_debug_keys} + <tr class="{cycle values="odd,even"}"> + <th>{ldelim}${$_debug_keys[vars]|escape:'html'}{rdelim}</th> + <td>{$_debug_vals[vars]|@debug_print_var}</td></tr> + {sectionelse} + <tr><td><p>no template variables assigned</p></td></tr> + {/section} +</table> + +<h2>assigned config file variables (outer template scope)</h2> + +<table id="table_config_vars"> + {section name=config_vars loop=$_debug_config_keys} + <tr class="{cycle values="odd,even"}"> + <th>{ldelim}#{$_debug_config_keys[config_vars]|escape:'html'}#{rdelim}</th> + <td>{$_debug_config_vals[config_vars]|@debug_print_var}</td></tr> + {sectionelse} + <tr><td><p>no config vars assigned</p></td></tr> + {/section} +</table> +</body> +</html> +{/capture} {if isset($_smarty_debug_output) and $_smarty_debug_output eq "html"} - <table border=0 width=100%> - <tr bgcolor=#cccccc><th colspan=2>Smarty Debug Console</th></tr> - <tr bgcolor=#cccccc><td colspan=2><b>included templates & config files (load time in seconds):</b></td></tr> - {section name=templates loop=$_debug_tpls} - <tr bgcolor={if %templates.index% is even}#eeeeee{else}#fafafa{/if}><td colspan=2><tt>{section name=indent loop=$_debug_tpls[templates].depth} {/section}<font color={if $_debug_tpls[templates].type eq "template"}brown{elseif $_debug_tpls[templates].type eq "insert"}black{else}green{/if}>{$_debug_tpls[templates].filename|escape:html}</font>{if isset($_debug_tpls[templates].exec_time)} <font size=-1><i>({$_debug_tpls[templates].exec_time|string_format:"%.5f"}){if %templates.index% eq 0} (total){/if}</i></font>{/if}</tt></td></tr> - {sectionelse} - <tr bgcolor=#eeeeee><td colspan=2><tt><i>no templates included</i></tt></td></tr> - {/section} - <tr bgcolor=#cccccc><td colspan=2><b>assigned template variables:</b></td></tr> - {section name=vars loop=$_debug_keys} - <tr bgcolor={if %vars.index% is even}#eeeeee{else}#fafafa{/if}><td valign=top><tt><font color=blue>{ldelim}${$_debug_keys[vars]}{rdelim}</font></tt></td><td nowrap><tt><font color=green>{$_debug_vals[vars]|@debug_print_var}</font></tt></td></tr> - {sectionelse} - <tr bgcolor=#eeeeee><td colspan=2><tt><i>no template variables assigned</i></tt></td></tr> - {/section} - <tr bgcolor=#cccccc><td colspan=2><b>assigned config file variables (outer template scope):</b></td></tr> - {section name=config_vars loop=$_debug_config_keys} - <tr bgcolor={if %config_vars.index% is even}#eeeeee{else}#fafafa{/if}><td valign=top><tt><font color=maroon>{ldelim}#{$_debug_config_keys[config_vars]}#{rdelim}</font></tt></td><td><tt><font color=green>{$_debug_config_vals[config_vars]|@debug_print_var}</font></tt></td></tr> - {sectionelse} - <tr bgcolor=#eeeeee><td colspan=2><tt><i>no config vars assigned</i></tt></td></tr> - {/section} - </table> -</BODY></HTML> + {$debug_output} {else} -<SCRIPT language=javascript> - if( self.name == '' ) {ldelim} - var title = 'Console'; - {rdelim} - else {ldelim} - var title = 'Console_' + self.name; - {rdelim} - _smarty_console = window.open("",title.value,"width=680,height=600,resizable,scrollbars=yes"); - _smarty_console.document.write("<HTML><HEAD><TITLE>Smarty Debug Console_"+self.name+"</TITLE></HEAD><BODY bgcolor=#ffffff>"); - _smarty_console.document.write("<table border=0 width=100%>"); - _smarty_console.document.write("<tr bgcolor=#cccccc><th colspan=2>Smarty Debug Console</th></tr>"); - _smarty_console.document.write("<tr bgcolor=#cccccc><td colspan=2><b>included templates & config files (load time in seconds):</b></td></tr>"); - {section name=templates loop=$_debug_tpls} - _smarty_console.document.write("<tr bgcolor={if %templates.index% is even}#eeeeee{else}#fafafa{/if}><td colspan=2><tt>{section name=indent loop=$_debug_tpls[templates].depth} {/section}<font color={if $_debug_tpls[templates].type eq "template"}brown{elseif $_debug_tpls[templates].type eq "insert"}black{else}green{/if}>{$_debug_tpls[templates].filename|escape:html|escape:javascript}</font>{if isset($_debug_tpls[templates].exec_time)} <font size=-1><i>({$_debug_tpls[templates].exec_time|string_format:"%.5f"}){if %templates.index% eq 0} (total){/if}</i></font>{/if}</tt></td></tr>"); - {sectionelse} - _smarty_console.document.write("<tr bgcolor=#eeeeee><td colspan=2><tt><i>no templates included</i></tt></td></tr>"); - {/section} - _smarty_console.document.write("<tr bgcolor=#cccccc><td colspan=2><b>assigned template variables:</b></td></tr>"); - {section name=vars loop=$_debug_keys} - _smarty_console.document.write("<tr bgcolor={if %vars.index% is even}#eeeeee{else}#fafafa{/if}><td valign=top><tt><font color=blue>{ldelim}${$_debug_keys[vars]}{rdelim}</font></tt></td><td nowrap><tt><font color=green>{$_debug_vals[vars]|@debug_print_var|escape:javascript}</font></tt></td></tr>"); - {sectionelse} - _smarty_console.document.write("<tr bgcolor=#eeeeee><td colspan=2><tt><i>no template variables assigned</i></tt></td></tr>"); - {/section} - _smarty_console.document.write("<tr bgcolor=#cccccc><td colspan=2><b>assigned config file variables (outer template scope):</b></td></tr>"); - {section name=config_vars loop=$_debug_config_keys} - _smarty_console.document.write("<tr bgcolor={if %config_vars.index% is even}#eeeeee{else}#fafafa{/if}><td valign=top><tt><font color=maroon>{ldelim}#{$_debug_config_keys[config_vars]}#{rdelim}</font></tt></td><td><tt><font color=green>{$_debug_config_vals[config_vars]|@debug_print_var|escape:javascript}</font></tt></td></tr>"); - {sectionelse} - _smarty_console.document.write("<tr bgcolor=#eeeeee><td colspan=2><tt><i>no config vars assigned</i></tt></td></tr>"); - {/section} - _smarty_console.document.write("</table>"); - _smarty_console.document.write("</BODY></HTML>"); - _smarty_console.document.close(); -</SCRIPT> -{/if} +<script type="text/javascript"> +// <![CDATA[ + if ( self.name == '' ) {ldelim} + var title = 'Console'; + {rdelim} + else {ldelim} + var title = 'Console_' + self.name; + {rdelim} + _smarty_console = window.open("",title.value,"width=680,height=600,resizable,scrollbars=yes"); + _smarty_console.document.write('{$debug_output|escape:'javascript'}'); + _smarty_console.document.close(); +// ]]> +</script> +{/if} \ No newline at end of file |