<?php
/*
* This file is part of the pwp package.
* (c) 2009-2010 Victor Rad' <victor.v.rad[at]gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
/**
* List of news
*
* @package pwp
* @subpackage news
* @author Victor Rad'
*/
class newsActions extends sfActions
{
/**
* Forming of friendly URL from the POST query of news filtration
*/
public function preExecute()
{
// prepare data
$request = sfContext::getInstance()->getRequest();
$this->form = new NewsForm();
// forming friendly URL from filter query and redirect
if ($request->hasParameter($this->form->getName())) {
$this->form->bind($request->getParameter($this->form->getName()));
if($this->form->isValid()){
$this->redirect('@news_index_filter?'.http_build_query($this->form->getValues()));
}
}
}
/**
* List of news
*
* @param sfWebRequest $request
*/
public function executeIndex(sfWebRequest $request)
{
// prepare query
$newsBuilder = DFactory::get('News')->getBuilder()
->reorganize($request) // order
->joinProvides();
// form validation filter
if ($request->hasParameter('news_providers') or $request->hasParameter('date_range')) {
$this->form = new NewsForm();
$this->form->bind(array(
'news_providers' => $request->getParameter('news_providers'),
'date_range' => $request->getParameter('date_range')
));
if($this->form->isValid()) {
// filter news
$newsBuilder->filter->providers($request)
->filter->dateRange($request);
}
}
// pager
$this->pager = new sfDoctrinePager('News', sfConfig::get('app_news_per_page'));
$this->pager->setQuery($newsBuilder->getQuery());
$this->pager->setPage($request->getParameter('page', 1));
$this->pager->init();
// get news
$this->newsList = $newsBuilder->getQuery()->execute();
}
/**
* First column on page
*/
public function postExecute()
{
$this->getResponse()->setSlot('colOne', $this->getPartial('colOne'));
}
}