<?
/*********************************************************************************
- Date operations by Andr� Cupini - andre@neobiz.com.br
- Sum or subtract day, months or years from any date
- Ex:
require_once("class_dt.php");
$dt = new DT;
$date = $dt->operations("06/01/2003", "sum", "day", "4")   // Return 10/01/2003
$date = $dt->operations("06/01/2003", "sub", "day", "4")   // Return 02/01/2003
$date = $dt->operations("06/01/2003", "sum", "month", "4") // Return 10/05/2003
*********************************************************************************/
class DT
{
	// Fun��o que soma ou subtrai, dias, meses ou anos de uma data qualquer
	function operations($date, $operation, $where = FALSE, $quant, $return_format = FALSE)
	{
		// Verifica erros
		$warning = "<br>Warning! Date Operations Fail... ";
		if(!$date || !$operation) {
			return "$warning invalid or inexistent arguments<br>";
		}else{
			if(!($operation == "sub" || $operation == "-" || $operation == "sum" || $operation == "+")) return "<br>$warning Invalid Operation...<br>";
			else {
				// Separa dia, m�s e ano
				list($day, $month, $year) = split("/", $date);

				// Determina a opera��o (Soma ou Subtra��o)
				($operation == "sub" || $operation == "-") ? $op = "-" : $op = '';

				// Determina aonde ser� efetuada a opera��o (dia, m�s, ano)
				if($where == "day")   $sum_day	 = $op."$quant";
				if($where == "month") $sum_month = $op."$quant";
				if($where == "year")  $sum_year	 = $op."$quant";

				// Gera o timestamp
				$date = mktime(0, 0, 0, $month + $sum_month, $day + $sum_day, $year + $sum_year);

				// Retorna o timestamp ou extended
				($return_format == "timestamp" || $return_format == "ts") ? $date = $date : $date = date("d/m/Y", "$date");

				// Retorna a data
				return $date;
			}
		}
	}
}
?>