From 8bb6f8803c60d68e110f208e5e6276b1a524cb22 Mon Sep 17 00:00:00 2001 From: mark_story Date: Sun, 11 Dec 2011 22:03:39 -0500 Subject: [PATCH] Fix infinite loop when minYear/maxYear are not int. Refs #2361 --- lib/Cake/Test/Case/View/Helper/FormHelperTest.php | 3 +++ lib/Cake/View/Helper/FormHelper.php | 12 ++---------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/lib/Cake/Test/Case/View/Helper/FormHelperTest.php b/lib/Cake/Test/Case/View/Helper/FormHelperTest.php index cee9a772b5c..41cf2c1e9a2 100644 --- a/lib/Cake/Test/Case/View/Helper/FormHelperTest.php +++ b/lib/Cake/Test/Case/View/Helper/FormHelperTest.php @@ -5624,6 +5624,9 @@ public function testYear() { '/select', ); $this->assertTags($result, $expected); + + $result = $this->Form->year('published', array(), array(), array('empty' => false)); + $this->assertContains('data[Contact][published][year]', $result); } /** diff --git a/lib/Cake/View/Helper/FormHelper.php b/lib/Cake/View/Helper/FormHelper.php index 5498f2db8b5..fa8d0abbbf2 100644 --- a/lib/Cake/View/Helper/FormHelper.php +++ b/lib/Cake/View/Helper/FormHelper.php @@ -2461,17 +2461,9 @@ protected function _generateOptions($name, $options = array()) { case 'year': $current = intval(date('Y')); - if (!isset($options['min'])) { - $min = $current - 20; - } else { - $min = $options['min']; - } + $min = !isset($options['min']) ? $current - 20 : (int)$options['min']; + $max = !isset($options['max']) ? $current + 20 : (int)$options['max']; - if (!isset($options['max'])) { - $max = $current + 20; - } else { - $max = $options['max']; - } if ($min > $max) { list($min, $max) = array($max, $min); }