diff --git a/core/lib/Thelia/Core/Event/GenerateRewrittenUrlEvent.php b/core/lib/Thelia/Core/Event/GenerateRewrittenUrlEvent.php new file mode 100644 index 000000000..7ee22cddd --- /dev/null +++ b/core/lib/Thelia/Core/Event/GenerateRewrittenUrlEvent.php @@ -0,0 +1,60 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Core\Event; + + +/** + * Class GenerateRewrittenUrlEvent + * @package Thelia\Core\Event + * @author Manuel Raynaud + */ +class GenerateRewrittenUrlEvent extends ActionEvent { + + protected $object; + protected $locale; + + protected $url; + + public function __construct($object, $locale) + { + $this->object; + $this->locale; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function isRewritten() + { + return null !== $this->url; + } + + public function getUrl() + { + return $this->url; + } + +} \ No newline at end of file diff --git a/core/lib/Thelia/Core/Event/TheliaEvents.php b/core/lib/Thelia/Core/Event/TheliaEvents.php index dab2db208..6a024f33b 100755 --- a/core/lib/Thelia/Core/Event/TheliaEvents.php +++ b/core/lib/Thelia/Core/Event/TheliaEvents.php @@ -441,4 +441,9 @@ final class TheliaEvents */ const MAILTRANSPORTER_CONFIG = 'action.mailertransporter.config'; + /** + * sent when Thelia try to generate a rewriten url + */ + const GENERATE_REWRITTENURL = 'action.generate_rewritenurl'; + } diff --git a/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php b/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php index d4b18ea24..19947efa6 100644 --- a/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php +++ b/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php @@ -23,6 +23,8 @@ namespace Thelia\Model\Tools; +use Thelia\Core\Event\GenerateRewrittenUrlEvent; +use Thelia\Core\Event\TheliaEvents; use Thelia\Exception\UrlRewritingException; use Thelia\Model\RewritingUrlQuery; use Thelia\Model\RewritingUrl; @@ -61,6 +63,16 @@ trait UrlRewritingTrait { $this->setLocale($locale); + $generateEvent = new GenerateRewrittenUrlEvent($this, $locale); + + $this->dispatchEvent(TheliaEvents::GENERATE_REWRITTENURL, $generateEvent); + + + if($generateEvent->isRewritten()) + { + return $generateEvent->getUrl(); + } + $title = $this->getTitle(); if(null == $title) {