Passed
Push — master ( abdb51...0ee754 )
by Dev
16:27 queued 01:19
created

SitemapController::getPages()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 9
c 1
b 0
f 0
nc 1
nop 3
dl 0
loc 15
rs 9.9666
1
<?php
2
3
namespace PiedWeb\CMSBundle\Controller;
4
5
use PiedWeb\CMSBundle\Service\ConfigHelper as Helper;
6
use PiedWeb\CMSBundle\Service\Repository;
7
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
8
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
9
use Symfony\Component\HttpFoundation\Request;
10
11
class SitemapController extends AbstractController
12
{
13
    public function showFeed(
14
        Request $request,
15
        ParameterBagInterface $params
16
    ) {
17
        // Retrieve info from homepage, for i18n, assuming it's named with locale
18
        $locale = $request->getLocale() ?? $params->get('locale');
19
        $LocaleHomepage = Repository::getPageRepository($this->getDoctrine(), $params->get('pwc.entity_page'))
20
            ->getPage($locale, Helper::get($request, $params)->getHost(), Helper::get($request, $params)->isFirstApp());
21
        $page = $LocaleHomepage ?? Repository::getPageRepository($this->getDoctrine(), $params->get('pwc.entity_page'))
22
            ->getPage('homepage', Helper::get($request, $params)->getHost(), Helper::get($request, $params)->isFirstApp());
23
24
        return $this->render('@PiedWebCMS/page/rss.xml.twig', [
25
            'pages' => $this->getPages(5, $request, $params),
26
            'page' => $page,
27
            'feedUri' => 'feed'.($params->get('locale') == $locale ? '' : '.'.$locale).'.xml',
28
            'app_base_url' => Helper::get($request, $params)->getBaseUrl(),
29
            'app_name' => Helper::get($request, $params)->getApp('name'),
30
        ]);
31
    }
32
33
    public function showSitemap(
34
        Request $request,
35
        ParameterBagInterface $params
36
    ) {
37
        $pages = $this->getPages(null, $request, $params);
38
39
        if (!$pages) {
40
            throw $this->createNotFoundException();
41
        }
42
43
        return $this->render('@PiedWebCMS/page/sitemap.'.$request->getRequestFormat().'.twig', [
44
            'pages' => $pages,
45
            'app_base_url' => Helper::get($request, $params)->getBaseUrl(),
46
        ]);
47
    }
48
49
    protected function getPages(?int $limit = null, Request $request, ParameterBagInterface $params)
50
    {
51
        $pages = Repository::getPageRepository($this->getDoctrine(), $params->get('pwc.entity_page'))
52
            ->getIndexablePages(
53
                Helper::get($request, $params)->getHost(),
54
                Helper::get($request, $params)->isFirstApp(),
55
                $request->getLocale(),
56
                $params->get('locale'),
57
                $limit
58
            )->getQuery()->getResult();
59
60
        //foreach ($pages as $page) echo $page->getMetaRobots().' '.$page->getTitle().'<br>';
61
        //exit('feed updated');
62
63
        return $pages;
64
    }
65
}
66