Actions

Source Code of This Project

/lib/model/DBuilder/Filter/News.php

<?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;
    }

}