mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-05 10:54:27 +02:00
*** empty log message ***
This commit is contained in:
@@ -54,4 +54,41 @@ function smarty_mod_spacify($string, $spacify_char = ' ')
|
|||||||
return implode($spacify_char, preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY));
|
return implode($spacify_char, preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*============================================*\
|
||||||
|
Custom functions
|
||||||
|
\*============================================*/
|
||||||
|
|
||||||
|
/*======================================================================*\
|
||||||
|
Function: smarty_func_options
|
||||||
|
Purpose: Returns the list of <option> tags generated from
|
||||||
|
the passed parameters
|
||||||
|
\*======================================================================*/
|
||||||
|
function smarty_func_options()
|
||||||
|
{
|
||||||
|
extract(func_get_arg(0));
|
||||||
|
|
||||||
|
settype($output, 'array');
|
||||||
|
settype($values, 'array');
|
||||||
|
settype($selected, 'array');
|
||||||
|
|
||||||
|
$html_result = "";
|
||||||
|
|
||||||
|
for ($i = 0; $i < count($output); $i++) {
|
||||||
|
/* By default, check value against $selected */
|
||||||
|
$sel_check = $values[$i];
|
||||||
|
$html_result .= "<option";
|
||||||
|
if ($i < count($values))
|
||||||
|
$html_result .= " value=\"".$values[$i]."\"";
|
||||||
|
else
|
||||||
|
$sel_check = $output[$i]; /* if more outputs than values, then
|
||||||
|
check output against $selected */
|
||||||
|
if (in_array($sel_check, $selected))
|
||||||
|
$html_result .= " selected";
|
||||||
|
$html_result .= ">".$output[$i]."</option>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
print $html_result;
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
@@ -41,6 +41,8 @@ class Smarty
|
|||||||
|
|
||||||
var $config_dir = "configs"; // directory where config files are located
|
var $config_dir = "configs"; // directory where config files are located
|
||||||
|
|
||||||
|
var $_custom_funcs = array( 'options' => 'smarty_func_options'
|
||||||
|
);
|
||||||
|
|
||||||
var $_modifiers = array( 'lower' => 'strtolower',
|
var $_modifiers = array( 'lower' => 'strtolower',
|
||||||
'upper' => 'strtoupper',
|
'upper' => 'strtoupper',
|
||||||
@@ -309,18 +311,6 @@ class Smarty
|
|||||||
if(!($template_contents = $this->_read_file($filepath)))
|
if(!($template_contents = $this->_read_file($filepath)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if(!$this->allow_php)
|
|
||||||
{
|
|
||||||
/* Escape php tags. */
|
|
||||||
$search = array( "/\<\?/i",
|
|
||||||
"/\?\>/i"
|
|
||||||
);
|
|
||||||
$replace = array( "<?",
|
|
||||||
"?>"
|
|
||||||
);
|
|
||||||
$template_contents = preg_replace($search, $replacea ,$template_contents);
|
|
||||||
}
|
|
||||||
|
|
||||||
$ldq = preg_quote($this->left_delimiter, "/");
|
$ldq = preg_quote($this->left_delimiter, "/");
|
||||||
$rdq = preg_quote($this->right_delimiter, "/");
|
$rdq = preg_quote($this->right_delimiter, "/");
|
||||||
|
|
||||||
@@ -329,6 +319,10 @@ class Smarty
|
|||||||
$template_tags = $match[1];
|
$template_tags = $match[1];
|
||||||
/* Split content by template tags to obtain non-template content. */
|
/* Split content by template tags to obtain non-template content. */
|
||||||
$text_blocks = preg_split("/$ldq.*?$rdq/s", $template_contents);
|
$text_blocks = preg_split("/$ldq.*?$rdq/s", $template_contents);
|
||||||
|
if(!$this->allow_php) {
|
||||||
|
/* Escape php tags. */
|
||||||
|
$text_blocks = preg_replace('!<\?([^?]*?)\?>!', '<?$1?>', $text_blocks);
|
||||||
|
}
|
||||||
|
|
||||||
$compiled_tags = array();
|
$compiled_tags = array();
|
||||||
foreach ($template_tags as $template_tag)
|
foreach ($template_tags as $template_tag)
|
||||||
@@ -414,11 +408,26 @@ class Smarty
|
|||||||
return $this->left_delimiter.$tag_command.$this->right_delimiter;
|
return $this->left_delimiter.$tag_command.$this->right_delimiter;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
/* TODO capture custom functions here */
|
if (isset($this->_custom_funcs[$tag_command])) {
|
||||||
break;
|
return $this->_compile_custom_func($tag_command, $tag_args);
|
||||||
|
} else
|
||||||
|
/* TODO syntax error: unknown tag */
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function _compile_custom_func($func_name, $tag_args)
|
||||||
|
{
|
||||||
|
$attrs = $this->_parse_attrs($tag_args);
|
||||||
|
$function = $this->_custom_funcs[$func_name];
|
||||||
|
foreach ($attrs as $arg_name => $arg_value)
|
||||||
|
$arg_list[] = "'$arg_name' => $arg_value";
|
||||||
|
|
||||||
|
return "<?php $function(array(".implode(',', $arg_list).")); ?>";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function _compile_config_load_tag($tag_args)
|
function _compile_config_load_tag($tag_args)
|
||||||
{
|
{
|
||||||
$attrs = $this->_parse_attrs($tag_args);
|
$attrs = $this->_parse_attrs($tag_args);
|
||||||
|
@@ -17,3 +17,5 @@ My interests are:
|
|||||||
none
|
none
|
||||||
{/section}
|
{/section}
|
||||||
{/strip}
|
{/strip}
|
||||||
|
|
||||||
|
{options output=$FirstName values=$LastName selected="Case"}
|
||||||
|
@@ -41,6 +41,8 @@ class Smarty
|
|||||||
|
|
||||||
var $config_dir = "configs"; // directory where config files are located
|
var $config_dir = "configs"; // directory where config files are located
|
||||||
|
|
||||||
|
var $_custom_funcs = array( 'options' => 'smarty_func_options'
|
||||||
|
);
|
||||||
|
|
||||||
var $_modifiers = array( 'lower' => 'strtolower',
|
var $_modifiers = array( 'lower' => 'strtolower',
|
||||||
'upper' => 'strtoupper',
|
'upper' => 'strtoupper',
|
||||||
@@ -309,18 +311,6 @@ class Smarty
|
|||||||
if(!($template_contents = $this->_read_file($filepath)))
|
if(!($template_contents = $this->_read_file($filepath)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if(!$this->allow_php)
|
|
||||||
{
|
|
||||||
/* Escape php tags. */
|
|
||||||
$search = array( "/\<\?/i",
|
|
||||||
"/\?\>/i"
|
|
||||||
);
|
|
||||||
$replace = array( "<?",
|
|
||||||
"?>"
|
|
||||||
);
|
|
||||||
$template_contents = preg_replace($search, $replacea ,$template_contents);
|
|
||||||
}
|
|
||||||
|
|
||||||
$ldq = preg_quote($this->left_delimiter, "/");
|
$ldq = preg_quote($this->left_delimiter, "/");
|
||||||
$rdq = preg_quote($this->right_delimiter, "/");
|
$rdq = preg_quote($this->right_delimiter, "/");
|
||||||
|
|
||||||
@@ -329,6 +319,10 @@ class Smarty
|
|||||||
$template_tags = $match[1];
|
$template_tags = $match[1];
|
||||||
/* Split content by template tags to obtain non-template content. */
|
/* Split content by template tags to obtain non-template content. */
|
||||||
$text_blocks = preg_split("/$ldq.*?$rdq/s", $template_contents);
|
$text_blocks = preg_split("/$ldq.*?$rdq/s", $template_contents);
|
||||||
|
if(!$this->allow_php) {
|
||||||
|
/* Escape php tags. */
|
||||||
|
$text_blocks = preg_replace('!<\?([^?]*?)\?>!', '<?$1?>', $text_blocks);
|
||||||
|
}
|
||||||
|
|
||||||
$compiled_tags = array();
|
$compiled_tags = array();
|
||||||
foreach ($template_tags as $template_tag)
|
foreach ($template_tags as $template_tag)
|
||||||
@@ -414,11 +408,26 @@ class Smarty
|
|||||||
return $this->left_delimiter.$tag_command.$this->right_delimiter;
|
return $this->left_delimiter.$tag_command.$this->right_delimiter;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
/* TODO capture custom functions here */
|
if (isset($this->_custom_funcs[$tag_command])) {
|
||||||
break;
|
return $this->_compile_custom_func($tag_command, $tag_args);
|
||||||
|
} else
|
||||||
|
/* TODO syntax error: unknown tag */
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function _compile_custom_func($func_name, $tag_args)
|
||||||
|
{
|
||||||
|
$attrs = $this->_parse_attrs($tag_args);
|
||||||
|
$function = $this->_custom_funcs[$func_name];
|
||||||
|
foreach ($attrs as $arg_name => $arg_value)
|
||||||
|
$arg_list[] = "'$arg_name' => $arg_value";
|
||||||
|
|
||||||
|
return "<?php $function(array(".implode(',', $arg_list).")); ?>";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function _compile_config_load_tag($tag_args)
|
function _compile_config_load_tag($tag_args)
|
||||||
{
|
{
|
||||||
$attrs = $this->_parse_attrs($tag_args);
|
$attrs = $this->_parse_attrs($tag_args);
|
||||||
|
@@ -17,3 +17,5 @@ My interests are:
|
|||||||
none
|
none
|
||||||
{/section}
|
{/section}
|
||||||
{/strip}
|
{/strip}
|
||||||
|
|
||||||
|
{options output=$FirstName values=$LastName selected="Case"}
|
||||||
|
Reference in New Issue
Block a user