Completed
Push — master ( e0b019...f60465 )
by Yaroslav
02:06
created

PublicationUrlGenerator::generateUrl()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 17
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 17
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 12
nc 2
nop 2
1
<?php
2
3
namespace Harentius\BlogBundle\Router;
4
5
use Harentius\BlogBundle\Entity\Base\PublicationInterface;
6
use Symfony\Component\HttpFoundation\RequestStack;
7
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
8
9
class PublicationUrlGenerator
10
{
11
    /**
12
     * @var RequestStack
13
     */
14
    private $requestStack;
15
16
    /**
17
     * @var UrlGeneratorInterface
18
     */
19
    private $urlGenerator;
20
21
    /**
22
     * @param RequestStack $requestStack
23
     * @param UrlGeneratorInterface $urlGenerator
24
     */
25
    public function __construct(RequestStack $requestStack, UrlGeneratorInterface $urlGenerator)
26
    {
27
        $this->requestStack = $requestStack;
28
        $this->urlGenerator = $urlGenerator;
29
    }
30
31
    /**
32
     * @param PublicationInterface $publication
33
     * @param int $referenceType
34
     * @return string
35
     */
36
    public function generateUrl(PublicationInterface $publication, $referenceType = UrlGeneratorInterface::ABSOLUTE_PATH)
37
    {
38
        $request = $this->requestStack->getCurrentRequest();
39
        $locale = $request->getLocale();
40
        $defaultLocale = $request->getDefaultLocale();
41
42
        if ($locale === $defaultLocale) {
43
            return $this->urlGenerator->generate('harentius_blog_show_default', [
44
                'slug' => $publication->getSlug(),
45
            ], $referenceType);
46
        }
47
48
        return $this->urlGenerator->generate('harentius_blog_show', [
49
            'slug' => $publication->getSlug(),
50
            '_locale' => $locale,
51
        ], $referenceType);
52
    }
53
}
54