summaryrefslogtreecommitdiff
path: root/inc/lib/Twig/Extension
diff options
context:
space:
mode:
authorczaks <marcin@6irc.net>2013-11-11 21:54:35 +0100
committerczaks <marcin@6irc.net>2013-11-11 21:54:35 +0100
commitf5657caf24753ed7c25d56659ae8dfe79d48b99a (patch)
tree989f1149070194f18f6250c851159dda813151fe /inc/lib/Twig/Extension
parent0a58973631626879abeea4956b33cc2b56dea453 (diff)
parent9fb63b053fbb552a2a8bbde1e230a8b73296fb6d (diff)
Merge branch 'master' of https://github.com/savetheinternet/Tinyboard into vichan-devel-4.5
Conflicts: inc/config.php install.php post.php stylesheets/style.css
Diffstat (limited to 'inc/lib/Twig/Extension')
-rw-r--r--inc/lib/Twig/Extension/Core.php22
-rw-r--r--inc/lib/Twig/Extension/StringLoader.php12
2 files changed, 18 insertions, 16 deletions
diff --git a/inc/lib/Twig/Extension/Core.php b/inc/lib/Twig/Extension/Core.php
index e68687b4..60fe1936 100644
--- a/inc/lib/Twig/Extension/Core.php
+++ b/inc/lib/Twig/Extension/Core.php
@@ -348,7 +348,7 @@ function twig_random(Twig_Environment $env, $values = null)
return $values < 0 ? mt_rand($values, 0) : mt_rand(0, $values);
}
- if ($values instanceof Traversable) {
+ if (is_object($values) && $values instanceof Traversable) {
$values = iterator_to_array($values);
} elseif (is_string($values)) {
if ('' === $values) {
@@ -620,7 +620,7 @@ function twig_array_merge($arr1, $arr2)
*/
function twig_slice(Twig_Environment $env, $item, $start, $length = null, $preserveKeys = false)
{
- if ($item instanceof Traversable) {
+ if (is_object($item) && $item instanceof Traversable) {
$item = iterator_to_array($item, false);
}
@@ -687,7 +687,7 @@ function twig_last(Twig_Environment $env, $item)
*/
function twig_join_filter($value, $glue = '')
{
- if ($value instanceof Traversable) {
+ if (is_object($value) && $value instanceof Traversable) {
$value = iterator_to_array($value, false);
}
@@ -829,7 +829,7 @@ function twig_in_filter($value, $compare)
}
return false !== strpos($compare, (string) $value);
- } elseif ($compare instanceof Traversable) {
+ } elseif (is_object($compare) && $compare instanceof Traversable) {
return in_array($value, iterator_to_array($compare, false), is_object($value));
}
@@ -1329,13 +1329,13 @@ function twig_constant($constant, $object = null)
*
* @param array $items An array of items
* @param integer $size The size of the batch
- * @param string $fill A string to fill missing items
+ * @param mixed $fill A value used to fill missing items
*
* @return array
*/
function twig_array_batch($items, $size, $fill = null)
{
- if ($items instanceof Traversable) {
+ if (is_object($items) && $items instanceof Traversable) {
$items = iterator_to_array($items, false);
}
@@ -1345,10 +1345,12 @@ function twig_array_batch($items, $size, $fill = null)
if (null !== $fill) {
$last = count($result) - 1;
- $result[$last] = array_merge(
- $result[$last],
- array_fill(0, $size - count($result[$last]), $fill)
- );
+ if ($fillCount = $size - count($result[$last])) {
+ $result[$last] = array_merge(
+ $result[$last],
+ array_fill(0, $fillCount, $fill)
+ );
+ }
}
return $result;
diff --git a/inc/lib/Twig/Extension/StringLoader.php b/inc/lib/Twig/Extension/StringLoader.php
index 20f3f994..5e1a60d0 100644
--- a/inc/lib/Twig/Extension/StringLoader.php
+++ b/inc/lib/Twig/Extension/StringLoader.php
@@ -43,16 +43,16 @@ class Twig_Extension_StringLoader extends Twig_Extension
*/
function twig_template_from_string(Twig_Environment $env, $template)
{
- static $loader;
+ $name = sprintf('__string_template__%s', hash('sha256', uniqid(mt_rand(), true), false));
- if (null === $loader) {
- $loader = new Twig_Loader_String();
- }
+ $loader = new Twig_Loader_Chain(array(
+ new Twig_Loader_Array(array($name => $template)),
+ $current = $env->getLoader(),
+ ));
- $current = $env->getLoader();
$env->setLoader($loader);
try {
- $template = $env->loadTemplate($template);
+ $template = $env->loadTemplate($name);
} catch (Exception $e) {
$env->setLoader($current);