sid : rewriting

This commit is contained in:
Etienne Roudeix
2013-08-30 09:13:54 +02:00
parent 75b4564297
commit 4ba16dc290
5 changed files with 170 additions and 6 deletions

View File

@@ -23,6 +23,7 @@
namespace Thelia\Tools;
use Symfony\Component\HttpFoundation\Request;
use Thelia\Model\ConfigQuery;
use Thelia\Rewriting\RewritingRetriever;
@@ -103,6 +104,13 @@ class URL
return self::absoluteUrl($path, $parameters);
}
/**
* @param $view
* @param $viewId
* @param $viewLocale
*
* @return null|string
*/
public static function retrieve($view, $viewId, $viewLocale)
{
$rewrittenUrl = null;
@@ -113,4 +121,30 @@ class URL
return $rewrittenUrl === null ? self::viewUrl($view, array($view . '_id' => $viewId, 'locale' => $viewLocale)) : $rewrittenUrl;
}
public static function retrieveCurrent(Request $request)
{
$rewrittenUrl = null;
if(ConfigQuery::isRewritingEnable()) {
$view = $request->query->get('view', null);
$viewId = $view === null ? null : $request->query->get($view . '_id', null);
$viewLocale = $request->query->get('locale', null);
$allOtherParameters = $request->query->all();
if($view !== null) {
unset($allOtherParameters['view']);
}
if($viewId !== null) {
unset($allOtherParameters[$view . '_id']);
}
if($viewLocale !== null) {
unset($allOtherParameters['locale']);
}
$retriever = new RewritingRetriever();
$rewrittenUrl = $retriever->getSpecificUrl($view, $viewId, $viewLocale, $allOtherParameters);
}
return $rewrittenUrl === null ? self::viewUrl($view, array($view . '_id' => $viewId, 'locale' => $viewLocale)) : $rewrittenUrl;
}
}