added assign/unassign custom functions, ability to re-extract tpl_vars

This commit is contained in:
mohrt
2001-06-13 15:12:14 +00:00
parent 80e1055814
commit d0c32ad4e7
5 changed files with 38 additions and 10 deletions

View File

@@ -201,6 +201,30 @@ function smarty_mod_default($string, $default="")
return $string; return $string;
} }
/*======================================================================*\
Function: smarty_func_assign
Purpose: assign a value to a template variable
\*======================================================================*/
function smarty_func_assign($vars,&$smarty_obj)
{
extract($vars);
$smarty_obj->assign($var,$val);
$smarty_obj->_extract = true;
return true;
}
/*======================================================================*\
Function: smarty_func_unassign
Purpose: unassign a template variable
\*======================================================================*/
function smarty_func_unassign($vars,&$smarty_obj)
{
extract($vars);
$smarty_obj->clear_assign($var);
$smarty_obj->_extract = true;
return true;
}
/*============================================*\ /*============================================*\
Custom tag functions Custom tag functions
\*============================================*/ \*============================================*/

View File

@@ -120,7 +120,9 @@ class Smarty
'html_select_time' => 'smarty_func_html_select_time', 'html_select_time' => 'smarty_func_html_select_time',
'math' => 'smarty_func_math', 'math' => 'smarty_func_math',
'fetch' => 'smarty_func_fetch', 'fetch' => 'smarty_func_fetch',
'counter' => 'smarty_func_counter' 'counter' => 'smarty_func_counter',
'assign' => 'smarty_func_assign',
'unassign' => 'smarty_func_unassign'
); );
var $custom_mods = array( 'lower' => 'strtolower', var $custom_mods = array( 'lower' => 'strtolower',
@@ -160,7 +162,7 @@ class Smarty
var $_conf_obj = null; // configuration object var $_conf_obj = null; // configuration object
var $_smarty_md5 = 'f8d698aea36fcbead2b9d5359ffca76f'; // md5 checksum of the string 'Smarty' var $_smarty_md5 = 'f8d698aea36fcbead2b9d5359ffca76f'; // md5 checksum of the string 'Smarty'
var $_version = '1.4.2'; // Smarty version number var $_version = '1.4.2'; // Smarty version number
var $_extract = false; // flag for custom functions
/*======================================================================*\ /*======================================================================*\
Function: Smarty Function: Smarty

View File

@@ -309,7 +309,7 @@ class Smarty_Compiler extends Smarty {
$arg_list[] = "'$arg_name' => $arg_value"; $arg_list[] = "'$arg_name' => $arg_value";
} }
return "<?php $function(array(".implode(',', (array)$arg_list)."), \$this); ?>"; return "<?php $function(array(".implode(',', (array)$arg_list)."), \$this); if(\$this->_extract) { extract(\$this->_tpl_vars); \$this->_extract=false; } ?>";
} }

View File

@@ -120,7 +120,9 @@ class Smarty
'html_select_time' => 'smarty_func_html_select_time', 'html_select_time' => 'smarty_func_html_select_time',
'math' => 'smarty_func_math', 'math' => 'smarty_func_math',
'fetch' => 'smarty_func_fetch', 'fetch' => 'smarty_func_fetch',
'counter' => 'smarty_func_counter' 'counter' => 'smarty_func_counter',
'assign' => 'smarty_func_assign',
'unassign' => 'smarty_func_unassign'
); );
var $custom_mods = array( 'lower' => 'strtolower', var $custom_mods = array( 'lower' => 'strtolower',
@@ -160,7 +162,7 @@ class Smarty
var $_conf_obj = null; // configuration object var $_conf_obj = null; // configuration object
var $_smarty_md5 = 'f8d698aea36fcbead2b9d5359ffca76f'; // md5 checksum of the string 'Smarty' var $_smarty_md5 = 'f8d698aea36fcbead2b9d5359ffca76f'; // md5 checksum of the string 'Smarty'
var $_version = '1.4.2'; // Smarty version number var $_version = '1.4.2'; // Smarty version number
var $_extract = false; // flag for custom functions
/*======================================================================*\ /*======================================================================*\
Function: Smarty Function: Smarty

View File

@@ -309,7 +309,7 @@ class Smarty_Compiler extends Smarty {
$arg_list[] = "'$arg_name' => $arg_value"; $arg_list[] = "'$arg_name' => $arg_value";
} }
return "<?php $function(array(".implode(',', (array)$arg_list)."), \$this); ?>"; return "<?php $function(array(".implode(',', (array)$arg_list)."), \$this); if(\$this->_extract) { extract(\$this->_tpl_vars); \$this->_extract=false; } ?>";
} }