<?php
/*******************************************************************************
 * Copyright (c) 2010, 2015 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Wayne Beaton (Eclipse Foundation)- initial API and implementation
 *******************************************************************************/

require_once(dirname(__FILE__) . '/Review.class.php');
require_once(dirname(__FILE__) . '/Proposal.class.php');
require_once(dirname(__FILE__) . '/common.php');
require_once(dirname(__FILE__) . '/debug.php');

/**
 * This function obtains the recent project proposal and
 * review activity.
 *
 * @deprecated
 * @param $age How many days back in time do we go?
 * @param $limit Limit the number of rows returned (-1 means all rows).
 * @param $includeHistory Do we include all changes on the project (true), or only the most recent activity (false).
 * @return void
 */
function getRecentActivity($age, $limit=-1, $includeHistory=false) {		
	return getReviews('complete', $age);
}

/**
 * @deprecated
 * @param unknown $limit
 */
function getAllCompleteReviewActivity($limit = -1) {	
	return getReviews('complete', $age);
}

/**
 * @deprecated
 */
function getUpcomingReviews() {	
	return getReviews('upcoming');
}

/**
 * This function returns a collection of Proposal-type activities
 * reaching the specified number of months (default 6) into the past.
 * 
 * @deprecated
 * @param int $age How many months in the past do we go back?
 * @return Array of Proposals
 */
function getNewProjectProposals($age = 6) {
	return getProposals();
}


?>