<?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.
*/
/**
* See DBuilder_Filter
*
* @package pwp
* @subpackage DBuilder
* @author Victor Rad'
*/
class DBuilder_Filter_News extends DBuilder_Filter
{
/**
* Filter news by provider
* e.g.: "linux.com"
*
* @param sfWebRequest $request news_providers parameter
* @return <type>
*/
public function providers(sfWebRequest $request)
{
// check and prepare data
$q = $this->getQuery();
$provider = $request->getParameter('news_providers');
if ($provider == sfConfig::get('app_news_all_providers')){
return $this->returnInstance;
}
// design query
$q->where('p.name = ?', $provider);
return $this->returnInstance;
}
/**
* Filter news by date range
* e.g.: "29.08.2009-01.09.2009"
*
* @param sfWebRequest $request date_range parameter
* @return <type>
*/
public function dateRange(sfWebRequest $request)
{
// check and prepare data
$q = $this->getQuery();
$dateRange = $request->getParameter('date_range');
if ($dateRange == sfConfig::get('app_news_all_date_range')){
return $this->returnInstance;
}
list($from, $till) = explode(sfConfig::get('app_news_date_range_separate'), $dateRange);
$from = date('Y-m-d H:i:s', strtotime($from));
$till = date('Y-m-d H:i:s', strtotime($till) + 86399);
// design query
$q->andWhere('n.created_at >= ?', $from);
$q->andWhere('n.created_at <= ?', $till);
return $this->returnInstance;
}
}