Completed
Push — master ( 7a96d0...2cf789 )
by Yaroslav
02:13
created

PublicationUrlGenerator::generateUrlForSlug()   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
        return $this->generateUrlForSlug($publication->getSlug(), $referenceType);
39
    }
40
41
    /**
42
     * @param string $slug
43
     * @param int $referenceType
44
     * @return string
45
     */
46
    public function generateUrlForSlug($slug, $referenceType = UrlGeneratorInterface::ABSOLUTE_PATH)
47
    {
48
        $request = $this->requestStack->getCurrentRequest();
49
        $locale = $request->getLocale();
50
        $defaultLocale = $request->getDefaultLocale();
51
52
        if ($locale === $defaultLocale) {
53
            return $this->urlGenerator->generate('harentius_blog_show_default', [
54
                'slug' => $slug,
55
            ], $referenceType);
56
        }
57
58
        return $this->urlGenerator->generate('harentius_blog_show', [
59
            'slug' => $slug,
60
            '_locale' => $locale,
61
        ], $referenceType);
62
    }
63
}
64