. */ /* */ /*************************************************************************************/ namespace Thelia\Rewriting; use Propel\Runtime\ActiveQuery\Criteria; use Thelia\Model\RewritingUrlQuery; use Thelia\Model\Map\RewritingUrlTableMap; use Thelia\Tools\URL; /** * Class RewritingRetriever * @package Thelia\Rewriting * @author Etienne Roudeix * * This class provides methods to retrieve a rewritten URL from a query */ class RewritingRetriever { protected $search = null; protected $rewritingUrlQuery = null; public $url; public $rewrittenUrl; public function __construct($view = null, $viewLocale = null, $viewId = null) { $this->rewritingUrlQuery = new RewritingUrlQuery(); if($view !== null && $viewLocale !== null) { $this->load($view, $viewLocale, $viewId); } } /** * @param $view * @param $viewLocale * @param null $viewId */ public function loadViewUrl($view, $viewLocale, $viewId = null) { $this->search = $this->rewritingUrlQuery->getViewUrlQuery($view, $viewLocale, $viewId); $allParametersWithoutView = array(); $allParametersWithoutView['locale'] = $viewLocale; if(null !== $viewId) { $allParametersWithoutView[$view . '_id'] = $viewId; } $this->url = URL::viewUrl($view, $allParametersWithoutView); if($this->search !== null) { $this->rewrittenUrl = $this->search->getUrl(); } } /** * @param $view * @param $viewLocale * @param null $viewId * @param array $viewOtherParameters */ public function loadSpecificUrl($view, $viewLocale, $viewId = null, $viewOtherParameters = array()) { if(empty($viewOtherParameters)) { $this->loadViewUrl($view, $viewLocale, $viewId); return; } $this->search = $this->rewritingUrlQuery->getSpecificUrlQuery($view, $viewLocale, $viewId, $viewOtherParameters); $allParametersWithoutView = $viewOtherParameters; $allParametersWithoutView['locale'] = $viewLocale; if(null !== $viewId) { $allParametersWithoutView[$view . '_id'] = $viewId; } $this->url = URL::viewUrl($view, $allParametersWithoutView); if($this->search !== null) { $this->rewrittenUrl = $this->search->getUrl(); } } /** * @return mixed */ public function toString() { return $this->rewrittenUrl === null ? $this->url : $this->rewrittenUrl; } }