From b910b0af86230807966a090f26f0b3639e694a56 Mon Sep 17 00:00:00 2001 From: Etienne Roudeix Date: Wed, 4 Sep 2013 15:15:38 +0200 Subject: [PATCH] fix URL::retrieve --- .../Template/Smarty/Plugins/UrlGenerator.php | 4 +--- core/lib/Thelia/Model/Category.php | 2 +- core/lib/Thelia/Model/Content.php | 2 +- core/lib/Thelia/Model/Folder.php | 2 +- core/lib/Thelia/Model/Product.php | 2 +- .../Thelia/Rewriting/RewritingRetriever.php | 8 +++++++ core/lib/Thelia/Tools/URL.php | 24 +++++++++++++++---- 7 files changed, 32 insertions(+), 12 deletions(-) diff --git a/core/lib/Thelia/Core/Template/Smarty/Plugins/UrlGenerator.php b/core/lib/Thelia/Core/Template/Smarty/Plugins/UrlGenerator.php index 635c03b8c..1d18488f8 100755 --- a/core/lib/Thelia/Core/Template/Smarty/Plugins/UrlGenerator.php +++ b/core/lib/Thelia/Core/Template/Smarty/Plugins/UrlGenerator.php @@ -169,9 +169,7 @@ class UrlGenerator extends AbstractSmartyPlugin protected function getCurrentUrl() { - $retriever = URL::init()->retrieveCurrent($this->request); - - return $retriever->rewrittenUrl === null ? $retriever->url : $retriever->rewrittenUrl ; + return URL::init()->retrieveCurrent($this->request)->toString(); } protected function getReturnToUrl() diff --git a/core/lib/Thelia/Model/Category.php b/core/lib/Thelia/Model/Category.php index 475481c2b..590064a12 100755 --- a/core/lib/Thelia/Model/Category.php +++ b/core/lib/Thelia/Model/Category.php @@ -23,7 +23,7 @@ class Category extends BaseCategory public function getUrl($locale) { - return URL::init()->retrieve('category', $this->getId(), $locale); + return URL::init()->retrieve('category', $this->getId(), $locale)->toString(); } /** diff --git a/core/lib/Thelia/Model/Content.php b/core/lib/Thelia/Model/Content.php index f51915776..6522951fe 100755 --- a/core/lib/Thelia/Model/Content.php +++ b/core/lib/Thelia/Model/Content.php @@ -9,6 +9,6 @@ class Content extends BaseContent { public function getUrl($locale) { - return URL::init()->retrieve('content', $this->getId(), $locale); + return URL::init()->retrieve('content', $this->getId(), $locale)->toString(); } } diff --git a/core/lib/Thelia/Model/Folder.php b/core/lib/Thelia/Model/Folder.php index 2672c17de..5461ba847 100755 --- a/core/lib/Thelia/Model/Folder.php +++ b/core/lib/Thelia/Model/Folder.php @@ -17,7 +17,7 @@ class Folder extends BaseFolder public function getUrl($locale) { - return URL::init()->retrieve('folder', $this->getId(), $locale); + return URL::init()->retrieve('folder', $this->getId(), $locale)->toString(); } /** diff --git a/core/lib/Thelia/Model/Product.php b/core/lib/Thelia/Model/Product.php index b4b036896..606a2f3db 100755 --- a/core/lib/Thelia/Model/Product.php +++ b/core/lib/Thelia/Model/Product.php @@ -9,6 +9,6 @@ class Product extends BaseProduct { public function getUrl($locale) { - return URL::init()->retrieve('product', $this->getId(), $locale); + return URL::init()->retrieve('product', $this->getId(), $locale)->toString(); } } diff --git a/core/lib/Thelia/Rewriting/RewritingRetriever.php b/core/lib/Thelia/Rewriting/RewritingRetriever.php index 7958af012..917028bf4 100755 --- a/core/lib/Thelia/Rewriting/RewritingRetriever.php +++ b/core/lib/Thelia/Rewriting/RewritingRetriever.php @@ -98,4 +98,12 @@ class RewritingRetriever $this->rewrittenUrl = $this->search->getUrl(); } } + + /** + * @return mixed + */ + public function toString() + { + return $this->rewrittenUrl === null ? $this->url : $this->rewrittenUrl; + } } diff --git a/core/lib/Thelia/Tools/URL.php b/core/lib/Thelia/Tools/URL.php index a527746ce..190f7541c 100755 --- a/core/lib/Thelia/Tools/URL.php +++ b/core/lib/Thelia/Tools/URL.php @@ -124,25 +124,32 @@ class URL } /** + * Retrieve a rewritten URL from a view, a view id and a locale + * * @param $view * @param $viewId * @param $viewLocale * - * @return null|string + * @return RewritingRetriever You can access $url and $rewrittenUrl properties */ public function retrieve($view, $viewId, $viewLocale) { - $rewrittenUrl = null; if(ConfigQuery::isRewritingEnable()) { - $rewrittenUrl = $this->retriever->loadViewUrl($view, $viewLocale, $viewId); + $this->retriever->loadViewUrl($view, $viewLocale, $viewId); } - return $rewrittenUrl === null ? self::viewUrl($view, array($view . '_id' => $viewId, 'locale' => $viewLocale)) : $rewrittenUrl; + return $this->retriever; } + /** + * Retrieve a rewritten URL from the current GET parameters + * + * @param Request $request + * + * @return RewritingRetriever You can access $url and $rewrittenUrl properties or use toString method + */ public function retrieveCurrent(Request $request) { - $rewrittenUrl = null; if(ConfigQuery::isRewritingEnable()) { $view = $request->query->get('view', null); $viewLocale = $request->query->get('locale', null); @@ -165,6 +172,13 @@ class URL return $this->retriever; } + /** + * Retrieve a rewritten URL from the current GET parameters or use toString method + * + * @param $url + * + * @return RewritingResolver + */ public function resolve($url) { $this->resolver->load($url);