Completed
Pull Request — develop (#109)
by Alexander
13:01
created

WebsiteArticleController   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 6
dl 0
loc 52
ccs 0
cts 15
cp 0
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A indexAction() 0 17 1
A createResponse() 0 15 2
1
<?php
2
3
/*
4
 * This file is part of Sulu.
5
 *
6
 * (c) MASSIVE ART WebServices GmbH
7
 *
8
 * This source file is subject to the MIT license that is bundled
9
 * with this source code in the file LICENSE.
10
 */
11
12
namespace Sulu\Bundle\ArticleBundle\Controller;
13
14
use JMS\Serializer\SerializationContext;
15
use Sulu\Bundle\ArticleBundle\Document\ArticleDocument;
16
use Sulu\Component\HttpCache\HttpCache;
17
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
18
use Symfony\Component\HttpFoundation\Request;
19
use Symfony\Component\HttpFoundation\Response;
20
21
/**
22
 * Handles articles.
23
 */
24
class WebsiteArticleController extends Controller
25
{
26
    /**
27
     * Article index action.
28
     *
29
     * @param Request $request
30
     * @param ArticleDocument $object
31
     * @param string $view
32
     *
33
     * @return Response
34
     */
35
    public function indexAction(Request $request, ArticleDocument $object, $view)
36
    {
37
        $content = $this->get('jms_serializer')->serialize(
38
            $object,
39
            'array',
40
            SerializationContext::create()
41
                ->setSerializeNull(true)
42
                ->setGroups(['website', 'content'])
43
                ->setAttribute('website', true)
44
        );
45
46
        return $this->render(
47
            $view . '.html.twig',
48
            $this->get('sulu_website.resolver.template_attribute')->resolve($content),
49
            $this->createResponse($request)
50
        );
51
    }
52
53
    /**
54
     * Create response.
55
     *
56
     * @param Request $request
57
     *
58
     * @return Response
59
     */
60
    private function createResponse(Request $request)
61
    {
62
        $response = new Response();
63
        $cacheLifetime = $request->attributes->get('_cacheLifetime');
64
65
        if ($cacheLifetime) {
66
            $response->setPublic();
67
            $response->headers->set(
68
                HttpCache::HEADER_REVERSE_PROXY_TTL,
69
                $cacheLifetime
70
            );
71
        }
72
73
        return $response;
74
    }
75
}
76