From d5283af818b59c5d96355d6e42bbd77e1322d8cb Mon Sep 17 00:00:00 2001 From: Saleh Souzanchi Date: Sun, 2 Dec 2012 16:30:45 +0330 Subject: [PATCH] fixed utf-8 pattern in router option --- lib/Cake/Routing/Route/CakeRoute.php | 2 +- .../Test/Case/Routing/Route/CakeRouteTest.php | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/Cake/Routing/Route/CakeRoute.php b/lib/Cake/Routing/Route/CakeRoute.php index a95c8ce8b1d..293aeb58c42 100644 --- a/lib/Cake/Routing/Route/CakeRoute.php +++ b/lib/Cake/Routing/Route/CakeRoute.php @@ -182,7 +182,7 @@ public function parse($url) { if (!$this->compiled()) { $this->compile(); } - if (!preg_match($this->_compiledRoute, $url, $route)) { + if (!preg_match($this->_compiledRoute, urldecode($url), $route)) { return false; } foreach ($this->defaults as $key => $val) { diff --git a/lib/Cake/Test/Case/Routing/Route/CakeRouteTest.php b/lib/Cake/Test/Case/Routing/Route/CakeRouteTest.php index c393dc27c65..99a86ecf6c0 100644 --- a/lib/Cake/Test/Case/Routing/Route/CakeRouteTest.php +++ b/lib/Cake/Test/Case/Routing/Route/CakeRouteTest.php @@ -880,4 +880,28 @@ public function testParseTrailingUTF8() { $this->assertEquals($expected, $result); } + +/** + * test that utf-8 patterns work for :section + * + * @return void + */ + public function testUTF8PatternOnSection() { + $route = new CakeRoute( + '/:section', + array('plugin' => 'blogs', 'controller' => 'posts' , 'action' => 'index' ), + array( + 'persist' => array('section'), + 'section' => 'آموزش|weblog' + ) + ); + + $result = $route->parse('/%D8%A2%D9%85%D9%88%D8%B2%D8%B4'); + $expected = array('section' => 'آموزش', 'plugin' => 'blogs', 'controller' => 'posts', 'action' => 'index', 'pass' => array(), 'named' => array()); + $this->assertEquals($expected, $result); + + $result = $route->parse('/weblog'); + $expected = array('section' => 'weblog', 'plugin' => 'blogs', 'controller' => 'posts', 'action' => 'index', 'pass' => array(), 'named' => array()); + $this->assertEquals($expected, $result); + } }