From bf265d5f5f778cc6910b297891e0f01f3bb3972a Mon Sep 17 00:00:00 2001 From: Damien Pobel Date: Thu, 22 Nov 2012 17:00:58 +0100 Subject: [PATCH] Fix EZP-20125: Siteaccess matching error when SA name is in the URL --- .../Symfony/SiteAccess/Matcher/URIElement.php | 7 +++++-- .../SiteAccess/Tests/RouterURIElement2Test.php | 17 +++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/eZ/Publish/Core/MVC/Symfony/SiteAccess/Matcher/URIElement.php b/eZ/Publish/Core/MVC/Symfony/SiteAccess/Matcher/URIElement.php index 3283e24b0de..7ab3dfa8189 100644 --- a/eZ/Publish/Core/MVC/Symfony/SiteAccess/Matcher/URIElement.php +++ b/eZ/Publish/Core/MVC/Symfony/SiteAccess/Matcher/URIElement.php @@ -104,8 +104,11 @@ public function setRequest( SimplifiedRequest $request ) */ public function analyseURI( $uri ) { - $uriElements = implode( '/', $this->getURIElements() ); - $uri = str_replace( "/$uriElements", '', $uri ); + $uriElements = '/' . implode( '/', $this->getURIElements() ); + if ( strpos( $uri, $uriElements ) === 0 ) + { + sscanf( $uri, "$uriElements%s", $uri ); + } return $uri; } diff --git a/eZ/Publish/Core/MVC/Symfony/SiteAccess/Tests/RouterURIElement2Test.php b/eZ/Publish/Core/MVC/Symfony/SiteAccess/Tests/RouterURIElement2Test.php index cb93b64868c..d6ecaa595d7 100644 --- a/eZ/Publish/Core/MVC/Symfony/SiteAccess/Tests/RouterURIElement2Test.php +++ b/eZ/Publish/Core/MVC/Symfony/SiteAccess/Tests/RouterURIElement2Test.php @@ -117,9 +117,9 @@ public function matchProvider() * @covers \eZ\Publish\Core\MVC\Symfony\SiteAccess\Matcher\URIElement::setRequest * @covers \eZ\Publish\Core\MVC\Symfony\SiteAccess\Matcher\URIElement::getURIElements */ - public function testAnalyseURI( $uri, $expectedFixedUpURI ) + public function testAnalyseURI( $level, $uri, $expectedFixedUpURI ) { - $matcher = new URIElementMatcher( 2 ); + $matcher = new URIElementMatcher( $level ); $matcher->setRequest( new SimplifiedRequest( array( 'pathinfo' => $uri ) ) ); @@ -132,9 +132,9 @@ public function testAnalyseURI( $uri, $expectedFixedUpURI ) * @dataProvider analyseProvider * @covers \eZ\Publish\Core\MVC\Symfony\SiteAccess\Matcher\URIElement::analyseLink */ - public function testAnalyseLink( $fullUri, $linkUri ) + public function testAnalyseLink( $level, $fullUri, $linkUri ) { - $matcher = new URIElementMatcher( 2 ); + $matcher = new URIElementMatcher( $level ); $matcher->setRequest( new SimplifiedRequest( array( 'pathinfo' => $fullUri ) ) ); @@ -144,8 +144,13 @@ public function testAnalyseLink( $fullUri, $linkUri ) public function analyseProvider() { return array( - array( '/my/siteaccess/foo/bar', '/foo/bar' ), - array( '/vive/le/sucre/en-poudre', '/sucre/en-poudre' ) + array( 2, '/my/siteaccess/foo/bar', '/foo/bar' ), + array( 2, '/vive/le/sucre/en-poudre', '/sucre/en-poudre' ), + // Issue https://jira.ez.no/browse/EZP-20125 + array( 1, '/fre/content/edit/104/1/fre-FR', '/content/edit/104/1/fre-FR' ), + array( 1, '/fre/utf8-with-accent/é/fre/à/à/fre/é', '/utf8-with-accent/é/fre/à/à/fre/é' ), + array( 2, '/é/fre/utf8-with-accent/é/fre/à/à/fre/é', '/utf8-with-accent/é/fre/à/à/fre/é' ), + array( 2, '/prefix/fre/url/alias/prefix/fre/prefix/fre/url', '/url/alias/prefix/fre/prefix/fre/url' ), ); } }