<?php
/**
* This file is part of the PrestaSitemapBundle package.
*
* (c) PrestaConcept <www.prestaconcept.net>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Presta\SitemapBundle\Controller;
use Presta\SitemapBundle\Service\GeneratorInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
* Provides action to render sitemap files
*
* @author David Epely <depely@prestaconcept.net>
*/
class SitemapController
{
/**
* @var GeneratorInterface
*/
private $generator;
/**
* Time to live of the response in seconds
*
* @var int
*/
private $ttl;
/**
* @param int $ttl
*/
public function __construct(GeneratorInterface $generator, $ttl)
{
$this->generator = $generator;
$this->ttl = $ttl;
}
/**
* list sitemaps
*
* @return Response
*/
public function indexAction()
{
$sitemapindex = $this->generator->fetch('root');
if (!$sitemapindex) {
throw new NotFoundHttpException('Not found');
}
$response = new Response($sitemapindex->toXml());
$response->headers->set('Content-Type', 'text/xml');
$response->setPublic();
$response->setClientTtl($this->ttl);
return $response;
}
/**
* list urls of a section
*
* @param string $name
*
* @return Response
*/
public function sectionAction($name)
{
$section = $this->generator->fetch($name);
if (!$section) {
throw new NotFoundHttpException('Not found');
}
$response = new Response($section->toXml());
$response->headers->set('Content-Type', 'text/xml');
$response->setPublic();
$response->setClientTtl($this->ttl);
return $response;
}
/**
* Time to live of the response in seconds
*
* @return int
* @deprecated since v2.3.0
* @codeCoverageIgnore
*/
protected function getTtl()
{
@trigger_error(__METHOD__ . ' method is deprecated since v2.3.0', E_USER_DEPRECATED);
return $this->ttl;
}
}