trinity-cms-bundles/src/Trinity/Bundle/SearchBundle/Page/SearchPage.php

86 lines
2.2 KiB
PHP

<?php
namespace Trinity\Bundle\SearchBundle\Page;
use Pagerfanta\Adapter\ArrayAdapter;
use Pagerfanta\Exception\NotValidCurrentPageException;
use Trinity\Bundle\ContentManagerBundle\Model\Page;
use Trinity\Bundle\ContentManagerBundle\Model\SeoPageInterface;
use Trinity\Bundle\ContentManagerBundle\Model\PageableInterface;
use Trinity\Bundle\ContentManagerBundle\Model\Block;
use Pagerfanta\Pagerfanta as Pager;
class SearchPage extends Page implements SeoPageInterface, PageableInterface
{
private $query = null;
private $pager = null;
public function getConfiguration()
{
return $this->configuration
->setBlock('title','Trinity\Bundle\ContentManagerBundle\Form\Type\BlockType')
->setBlock('editorial_blocks', 'Trinity\Bundle\EditorialBlockBundle\Form\Type\EditorialBlocksContainerBlockType')
->setDefaultController('TrinitySearchBundle:Search:index')
->setDefaultControllerClass('Trinity\Bundle\SearchBundle\Controller\SearchController::indexAction');
}
public function __construct($template = null)
{
parent::__construct(null !== $template ? $template : 'TrinitySearchBundle:Search:index.html.twig');
}
public function getBlockEditorialBlocks()
{
return $this->getBlock('editorial_blocks');
}
public function setBlockEditorialBlocks(Block $block)
{
return $this->setBlock($block);
}
// pagination des book
public function initPager()
{
$this->pager = new Pager(new ArrayAdapter($this->getQuery()));
$this->pager->setMaxPerPage(4);
$this->pager->setCurrentPage(1, false, true);
}
public function getPager()
{
if (null === $this->pager) {
$this->initPager();
}
return $this->pager;
}
public function getQuery()
{
return $this->query;
}
public function setQuery($query)
{
$this->query = $query;
}
public function setPage($page)
{
try {
$this->getPager()->setCurrentPage($page, false, true);
} catch (NotValidCurrentPageException $e) {
$this->getPager()->setCurrentPage(1, false, true);
}
}
public function getQueryCount()
{
return count($this->query);
}
}