From dde042f8522f17b0984db12af05c58b57b3149de Mon Sep 17 00:00:00 2001 From: David Stockton Date: Wed, 14 May 2014 19:50:43 -0600 Subject: [PATCH 1/2] Digit filter should not touch boolean --- library/Zend/Filter/Digits.php | 4 ++-- tests/ZendTest/Filter/DigitsTest.php | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/library/Zend/Filter/Digits.php b/library/Zend/Filter/Digits.php index eea9b58a7a8..01c64b83fc1 100644 --- a/library/Zend/Filter/Digits.php +++ b/library/Zend/Filter/Digits.php @@ -18,14 +18,14 @@ class Digits extends AbstractFilter * * Returns the string $value, removing all but digit characters * - * If the value provided is non-scalar, the value will remain unfiltered + * If the value provided is not integer, float or string, the value will remain unfiltered * * @param string $value * @return string|mixed */ public function filter($value) { - if (!is_scalar($value)) { + if (! (is_int($value) || is_float($value) || is_string($value))) { return $value; } $value = (string) $value; diff --git a/tests/ZendTest/Filter/DigitsTest.php b/tests/ZendTest/Filter/DigitsTest.php index 7c478b3cd68..a405f07fda8 100644 --- a/tests/ZendTest/Filter/DigitsTest.php +++ b/tests/ZendTest/Filter/DigitsTest.php @@ -90,7 +90,9 @@ public function returnUnfilteredDataProvider() array(array( 'abc123', 'abc 123' - )) + )), + array(true), + array(false), ); } @@ -102,6 +104,6 @@ public function testReturnUnfiltered($input) { $filter = new DigitsFilter(); - $this->assertEquals($input, $filter($input)); + $this->assertSame($input, $filter($input)); } } From ec6dfa90c3264b700b0a10d23a170dadb7fa2eb0 Mon Sep 17 00:00:00 2001 From: David Stockton Date: Thu, 15 May 2014 10:49:35 -0600 Subject: [PATCH 2/2] Early return for int values which are always just digits --- library/Zend/Filter/Digits.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/library/Zend/Filter/Digits.php b/library/Zend/Filter/Digits.php index 01c64b83fc1..c5e856fbd58 100644 --- a/library/Zend/Filter/Digits.php +++ b/library/Zend/Filter/Digits.php @@ -25,7 +25,10 @@ class Digits extends AbstractFilter */ public function filter($value) { - if (! (is_int($value) || is_float($value) || is_string($value))) { + if (is_int($value)) { + return (string) $value; + } + if (! (is_float($value) || is_string($value))) { return $value; } $value = (string) $value;