Prevent iteration over associative arrays.
This commit is contained in:
+12
-1
@@ -142,7 +142,7 @@ class Mustache {
|
|||||||
|
|
||||||
// regular section
|
// regular section
|
||||||
case '#':
|
case '#':
|
||||||
if (is_array($val)) {
|
if ($this->varIsIterable($val)) {
|
||||||
foreach ($val as $local_context) {
|
foreach ($val as $local_context) {
|
||||||
$replace .= $this->_render($content, $this->getContext($context, $local_context));
|
$replace .= $this->_render($content, $this->getContext($context, $local_context));
|
||||||
}
|
}
|
||||||
@@ -387,6 +387,17 @@ class Mustache {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether the given $var should be iterated (i.e. in a section context).
|
||||||
|
*
|
||||||
|
* @access protected
|
||||||
|
* @param mixed $var
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function varIsIterable($var) {
|
||||||
|
return is_object($var) || (is_array($var) && !array_diff_key($var, array_keys(array_keys($var))));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prepare a string to be used in a regular expression.
|
* Prepare a string to be used in a regular expression.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user