<?PHP
/*
 * DIREITOS AUTORAIS RESERVADOS (C) 2007 UFRJ
 * 
 * ESTE PROGRAMA É SOFTWARE LIVRE; VOCÊ PODE REDISTRIBUÍ-LO E/OU MODIFICÁ-LO SOB OS
 * TERMOS DA LICENÇA PÚBLICA GERAL GNU CONFORME PUBLICADA PELA FREE SOFTWARE FOUNDATION;
 * TANTO A VERSÃO 2 DA LICENÇA, COMO (A SEU CRITÉRIO) QUALQUER VERSÃO POSTERIOR.

 * ESTE PROGRAMA É DISTRIBUÍDO NA EXPECTATIVA DE QUE SEJA ÚTIL, PORÉM, SEM NENHUMA GARANTIA;
 * NEM MESMO A GARANTIA IMPLÍCITA DE COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
 * CONSULTE A LICENÇA PÚBLICA GERAL DO GNU PARA MAIS DETALHES.
 * 
 * VOCÊ DEVE TER RECEBIDO UMA CÓPIA DA LICENÇA PÚBLICA GERAL DO GNU JUNTO COM ESTE PROGRAMA; 
 * SE NÃO, ACESSE <<HTTP://WWW.GNU.ORG/LICENSES/LICENSES.PT-BR.HTML>>
 */

<?

require_once '../common/begin.php';

try
{
	switch($_POST['action'])
	{
	case 'update':
		$autosave = new AutoSave();
		$autosave->endereco = $_POST['key'];
		$autosave->sessao = session_id();
		$autosave->dados = $_POST['data'];
		$autosave->replace();
		echo "{}";
		break;
	case 'delete':
		$autosave = Doctrine_Query::create()
			->from('Autosave a')
			->where('a.endereco = ? and a.sessao = ?',
				array($_POST['key'],session_id()))
			->fetchOne();
		if($autosave)
			$autosave->delete();
		echo "{}";
		break;
	case 'get':
		Doctrine_Query::create()
			->delete()
			->from('Autosave a')
			->where('a.data_atualizacao < ?',
				date('Y-m-d H:i:s', time() - 60*60))
			->execute();

		$autosave = Doctrine_Query::create()
			->from('Autosave a')
			->where('a.endereco = ? and a.sessao = ?',
				array($_POST['key'],session_id()))
			->fetchOne();
		if($autosave)
		{
			echo "{updated_at: '".$autosave->data_atualizacao."',
				   data: ".stripslashes($autosave->dados)."}\n";
		}
		else
			echo "{}";
		break;
	default:
		throw new Exception("Ação inválida");
	}
}
catch(Exception $e)
{
	$ret = array('error' => $e->getMessage());
	echo json_encode($ret);
}


?>
