From 755ea99bd4944ab2e090e3b7a9f1cf003b805e68 Mon Sep 17 00:00:00 2001 From: JEDIBC Date: Wed, 27 Jul 2011 12:24:34 +0200 Subject: [PATCH] Correction of a BC break with json_encode and PHP 5.2.x --- lib/Twig/Extension/Core.php | 50 +++++++++++++++++++++++++++++++------------ 1 files changed, 36 insertions(+), 14 deletions(-) diff --git a/lib/Twig/Extension/Core.php b/lib/Twig/Extension/Core.php index 2c9bdb6..9013a83 100644 --- a/lib/Twig/Extension/Core.php +++ b/lib/Twig/Extension/Core.php @@ -251,23 +251,45 @@ function twig_urlencode_filter($url, $raw = false) return urlencode($url); } -/** - * JSON encodes a PHP variable. - * - * @param mixed $value The value to encode. - * @param integer $options Bitmask consisting of JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT - * - * @return mixed The JSON encoded value - */ -function twig_jsonencode_filter($value, $options = 0) +if (version_compare(PHP_VERSION, '5.3.0', '<')) { - if ($value instanceof Twig_Markup) { - $value = (string) $value; - } elseif (is_array($value)) { - array_walk_recursive($value, '_twig_markup2string'); + /** + * JSON encodes a PHP variable. + * + * @param mixed $value The value to encode. + * @param integer $options Not used on PHP 5.2.x + * + * @return mixed The JSON encoded value + */ + function twig_jsonencode_filter($value, $options = 0) + { + if ($value instanceof Twig_Markup) { + $value = (string) $value; + } elseif (is_array($value)) { + array_walk_recursive($value, '_twig_markup2string'); + } + + return json_encode($value); } +} else { + /** + * JSON encodes a PHP variable. + * + * @param mixed $value The value to encode. + * @param integer $options Bitmask consisting of JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT + * + * @return mixed The JSON encoded value + */ + function twig_jsonencode_filter($value, $options = 0) + { + if ($value instanceof Twig_Markup) { + $value = (string) $value; + } elseif (is_array($value)) { + array_walk_recursive($value, '_twig_markup2string'); + } - return json_encode($value, $options); + return json_encode($value, $options); + } } function _twig_markup2string(&$value) -- 1.7.2.5