Update Smarty und RedBean
Smarty: 3.1.30 - Redbean: 5.0.0
This commit is contained in:
parent
eb0835ff74
commit
0795a87ecd
193 changed files with 22035 additions and 14455 deletions
|
@ -21,6 +21,7 @@ abstract class Smarty_Internal_CompileBase
|
|||
* @var array
|
||||
*/
|
||||
public $required_attributes = array();
|
||||
|
||||
/**
|
||||
* Array of names of optional attribute required by tag
|
||||
* use array('_any') if there is no restriction of attributes names
|
||||
|
@ -28,12 +29,14 @@ abstract class Smarty_Internal_CompileBase
|
|||
* @var array
|
||||
*/
|
||||
public $optional_attributes = array();
|
||||
|
||||
/**
|
||||
* Shorttag attribute order defined by its names
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $shorttag_order = array();
|
||||
|
||||
/**
|
||||
* Array of names of valid option flags
|
||||
*
|
||||
|
@ -41,6 +44,20 @@ abstract class Smarty_Internal_CompileBase
|
|||
*/
|
||||
public $option_flags = array('nocache');
|
||||
|
||||
/**
|
||||
* Mapping array for boolqn option value
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $optionMap = array(1 => true, 0 => false, 'true' => true, 'false' => false);
|
||||
|
||||
/**
|
||||
* Mapping array with attributes as key
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $mapCache = array();
|
||||
|
||||
/**
|
||||
* This function checks if the attributes passed are valid
|
||||
* The attributes passed for the tag to compile are checked against the list of required and
|
||||
|
@ -56,71 +73,75 @@ abstract class Smarty_Internal_CompileBase
|
|||
public function getAttributes($compiler, $attributes)
|
||||
{
|
||||
$_indexed_attr = array();
|
||||
// loop over attributes
|
||||
if (!isset($this->mapCache[ 'option' ])) {
|
||||
$this->mapCache[ 'option' ] = array_fill_keys($this->option_flags, true);
|
||||
}
|
||||
foreach ($attributes as $key => $mixed) {
|
||||
// shorthand ?
|
||||
if (!is_array($mixed)) {
|
||||
// option flag ?
|
||||
if (in_array(trim($mixed, '\'"'), $this->option_flags)) {
|
||||
$_indexed_attr[trim($mixed, '\'"')] = true;
|
||||
if (isset($this->mapCache[ 'option' ][ trim($mixed, '\'"') ])) {
|
||||
$_indexed_attr[ trim($mixed, '\'"') ] = true;
|
||||
// shorthand attribute ?
|
||||
} elseif (isset($this->shorttag_order[$key])) {
|
||||
$_indexed_attr[$this->shorttag_order[$key]] = $mixed;
|
||||
} elseif (isset($this->shorttag_order[ $key ])) {
|
||||
$_indexed_attr[ $this->shorttag_order[ $key ] ] = $mixed;
|
||||
} else {
|
||||
// too many shorthands
|
||||
$compiler->trigger_template_error('too many shorthand attributes', $compiler->lex->taglineno);
|
||||
$compiler->trigger_template_error('too many shorthand attributes', null, true);
|
||||
}
|
||||
// named attribute
|
||||
} else {
|
||||
$kv = each($mixed);
|
||||
// option flag?
|
||||
if (in_array($kv['key'], $this->option_flags)) {
|
||||
if (is_bool($kv['value'])) {
|
||||
$_indexed_attr[$kv['key']] = $kv['value'];
|
||||
} elseif (is_string($kv['value']) && in_array(trim($kv['value'], '\'"'), array('true', 'false'))) {
|
||||
if (trim($kv['value']) == 'true') {
|
||||
$_indexed_attr[$kv['key']] = true;
|
||||
foreach ($mixed as $k => $v) {
|
||||
// option flag?
|
||||
if (isset($this->mapCache[ 'option' ][ $k ])) {
|
||||
if (is_bool($v)) {
|
||||
$_indexed_attr[ $k ] = $v;
|
||||
} else {
|
||||
$_indexed_attr[$kv['key']] = false;
|
||||
}
|
||||
} elseif (is_numeric($kv['value']) && in_array($kv['value'], array(0, 1))) {
|
||||
if ($kv['value'] == 1) {
|
||||
$_indexed_attr[$kv['key']] = true;
|
||||
} else {
|
||||
$_indexed_attr[$kv['key']] = false;
|
||||
if (is_string($v)) {
|
||||
$v = trim($v, '\'" ');
|
||||
}
|
||||
if (isset($this->optionMap[ $v ])) {
|
||||
$_indexed_attr[ $k ] = $this->optionMap[ $v ];
|
||||
} else {
|
||||
$compiler->trigger_template_error("illegal value '" . var_export($v, true) .
|
||||
"' for option flag '{$k}'", null, true);
|
||||
}
|
||||
}
|
||||
// must be named attribute
|
||||
} else {
|
||||
$compiler->trigger_template_error("illegal value of option flag \"{$kv['key']}\"", $compiler->lex->taglineno);
|
||||
$_indexed_attr[ $k ] = $v;
|
||||
}
|
||||
// must be named attribute
|
||||
} else {
|
||||
reset($mixed);
|
||||
$_indexed_attr[key($mixed)] = $mixed[key($mixed)];
|
||||
}
|
||||
}
|
||||
}
|
||||
// check if all required attributes present
|
||||
foreach ($this->required_attributes as $attr) {
|
||||
if (!array_key_exists($attr, $_indexed_attr)) {
|
||||
$compiler->trigger_template_error("missing \"" . $attr . "\" attribute", $compiler->lex->taglineno);
|
||||
if (!isset($_indexed_attr[ $attr ])) {
|
||||
$compiler->trigger_template_error("missing \"" . $attr . "\" attribute", null, true);
|
||||
}
|
||||
}
|
||||
// check for not allowed attributes
|
||||
if ($this->optional_attributes != array('_any')) {
|
||||
$tmp_array = array_merge($this->required_attributes, $this->optional_attributes, $this->option_flags);
|
||||
if (!isset($this->mapCache[ 'all' ])) {
|
||||
$this->mapCache[ 'all' ] =
|
||||
array_fill_keys(array_merge($this->required_attributes, $this->optional_attributes,
|
||||
$this->option_flags), true);
|
||||
}
|
||||
foreach ($_indexed_attr as $key => $dummy) {
|
||||
if (!in_array($key, $tmp_array) && $key !== 0) {
|
||||
$compiler->trigger_template_error("unexpected \"" . $key . "\" attribute", $compiler->lex->taglineno);
|
||||
if (!isset($this->mapCache[ 'all' ][ $key ]) && $key !== 0) {
|
||||
$compiler->trigger_template_error("unexpected \"" . $key . "\" attribute", null, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
// default 'false' for all option flags not set
|
||||
foreach ($this->option_flags as $flag) {
|
||||
if (!isset($_indexed_attr[$flag])) {
|
||||
$_indexed_attr[$flag] = false;
|
||||
if (!isset($_indexed_attr[ $flag ])) {
|
||||
$_indexed_attr[ $flag ] = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_indexed_attr[ 'nocache' ]) && $_indexed_attr[ 'nocache' ]) {
|
||||
$compiler->tag_nocache = true;
|
||||
}
|
||||
return $_indexed_attr;
|
||||
}
|
||||
|
||||
|
@ -162,12 +183,13 @@ abstract class Smarty_Internal_CompileBase
|
|||
}
|
||||
}
|
||||
// wrong nesting of tags
|
||||
$compiler->trigger_template_error("unclosed {$compiler->smarty->left_delimiter}" . $_openTag . "{$compiler->smarty->right_delimiter} tag");
|
||||
$compiler->trigger_template_error("unclosed {$compiler->smarty->left_delimiter}" . $_openTag .
|
||||
"{$compiler->smarty->right_delimiter} tag");
|
||||
|
||||
return;
|
||||
}
|
||||
// wrong nesting of tags
|
||||
$compiler->trigger_template_error("unexpected closing tag", $compiler->lex->taglineno);
|
||||
$compiler->trigger_template_error("unexpected closing tag", null, true);
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue