20
2011
Como atualizar o Google Agenda utilizando PHP
Olá pessoal!
Antes de começar a ler o artigo, vamos apresentar o mais novo colaborador do Algoritmizando: Renan Martins!
O Renan é Desenvolvedor Web, Curioso e curte tudo que envolva Internet! Assim como eu, e você nosso leitor! Aqui ele irá postar artigos, dicas e tutoriais sobre PHP, jQuery, CSS e tudo mais relacionado a Desenvolvimento Web para você que está aprendendo e também para quem já trabalha nessa área.
O Algoritmizando deseja boas vindas ao Renan e uma boa leitura para todos vocês!
Bom, hoje vou falar sobre o Google Agenda. Acho que muitas pessoas usam e a grande maioria pelo menos já ouviu falar sobre essa maravilha do Google.
Como muitas empresas utilizam esta agenda, devido a facilidade em compartilhar compromissos, eventos e etc., vou mostrar como atualizar sua agenda usando cURL.
Mas antes de começar, vamos precisar baixar duas classes e tratar o formulário para envio.
1º- Vamos baixar as classes:
GoogleCalendarWrapper.php
MyCurl.php
As duas classes podem ser encontradas no site abaixo, muito bom por sinal:
http://www.phpclasses.org
2º- Vamos tratar o formulário de cadastro de compromissos:
- Usando o jQuery Datepicker para ajudar na visualização do calendário.
- Usar uma função em JavaScript para tratar o horário de forma correta.
3º- Criando o Formulário:
<form action="modulos/agenda/scripts/s_cadastrar.php" method="post"> <table border="0" cellspacing="0" cellpadding="0"> <tr> <td>Nome do Evento</td> <td><input type="text" name="agenda_evento"></td> </tr> <tr> <td>Descrição</td> <td><textarea name="agenda_descricao"></textarea></td> </tr> <tr> <td>Local</td> <td><input type="text" name="agenda_local"></td> </tr> <tr> <td>Data Inicial</td> <td><input type="text" name="agenda_d_inicial" class="campo_data"></td> </tr> <tr> <td>Data Final</td> <td><input type="text" name="agenda_d_final" class="campo_data"></td> </tr> <tr> <td>Horário Inicial</td> <td><input type="text" name="agenda_h_inicial" class="mask-hora" maxlength="5" onkeypress="MascaraHora(this);" /></td> </tr> <tr> <td>Horário Final</td> <td><input type="text" name="agenda_h_final" class="mask-hora" maxlength="5" onkeypress="MascaraHora(this);" /></td> </tr> <tr> <td></td> <td><input type="submit" value="Enviar" class="enviar"></td> </tr> </table> </form>
4º- Montando o HTML completo:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Agendda Google - Renan Martins Pimentel</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<!-- Date picker -->
<link type="text/css" href="js/jquery_datepicker/core.css" rel="stylesheet" media="screen">
<link type="text/css" href="js/jquery_datepicker/datepicker.css" rel="stylesheet" media="screen">
<link type="text/css" href="js/jquery_datepicker/theme.css" rel="stylesheet" media="screen">
<script type="text/javascript" src="js/jquery_datepicker/datepicker.js"></script>
<script type="text/javascript" src="js/jquery_datepicker/datepicker-pt-BR.js"></script>
<script type="text/javascript">
//-- Função para exibir calendarios nos campos data jquery do botao de gerar relatorio --//
$(function(){
$(".campo_data").datepicker($.datepicker.regional['pt-BR']);
});
<!-- /Date picker -->
/* Mascara para horario */
function MascaraHora(objeto){
if(objeto.value.length == 2)
objeto.value = objeto.value + ':';
if(objeto.value.length == 4)
objeto.value = objeto.value;
}
</script>
</head>
<body>
<form action="s_cadastrar.php" method="post">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Nome do Evento</td>
<td><input type="text" name="agenda_evento"></td>
</tr>
<tr>
<td>Descrição</td>
<td><textarea name="agenda_descricao"></textarea></td>
</tr>
<tr>
<td>Local</td>
<td><input type="text" name="agenda_local" /></td>
</tr>
<tr>
<td>Data Inicial</td>
<td><input type="text" name="agenda_d_inicial" /></td>
</tr>
<tr>
<td>Data Final</td>
<td><input type="text" name="agenda_d_final" /></td>
</tr>
<tr>
<td>Horário Inicial</td>
<td><input type="text" name="agenda_h_inicial" maxlength="5" onkeypress="MascaraHora(this);" /></td>
</tr>
<tr>
<td>Horário Final</td>
<td><input type="text" name="agenda_h_final" maxlength="5" onkeypress="MascaraHora(this);" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Enviar" class="enviar"></td>
</tr>
</table>
</form>
</body>
</html>
5º- Script para envio:
<?php
include ('GoogleCalendarWrapper.php');
$gc = new GoogleCalendarWrapper("seuemail@gmail.com", "suasenha");
//$gc->feed_url = "http://www.google.com/calendar/feeds/untiuro1rs%40group.calendar.google.com/private-6a7151779f99b/basic";
//specify this, if you want to work with not-default calendar (check this:http://code.google.com/apis/gdata/calendar.html#get_feed)
//Função para tratar data que vem com padrão PT-BR pelo jQuery
function formatar_data_contrario($d)
{
$d1 = explode("/", $d);
return $d1[2]."-".$d1[1]."-".$d1[0];
}
// Receber os dados via POST
$titulo = $_POST['agenda_evento'];
$conteudo = $_POST['agenda_descricao'];
$local = $_POST['agenda_local'];
$dia_inicio = formatar_data_contrario($_POST['agenda_d_inicial']);
$dia_fim = formatar_data_contrario($_POST['agenda_d_final']);
$hora_inicio = $_POST['agenda_h_inicial'].":00";
$hora_fim = $_POST['agenda_h_final'].":00";
$s = array();
$s["title"] = "$titulo";
$s["content"] = "$conteudo";
$s["where"] = "$local";
$s["startDay"] = "$dia_inicio";
$s["startTime"] = "$hora_inicio";
$s["endDay"] = "$dia_fim";
$s["endTime"] = "$hora_fim";
if($gc->add_event($s))
echo "Enviado com sucesso!";
else
echo "Não enviou!";
?>
Lembrando um pouco de Lógica, que um evento não pode terminar antes da data de inicio, e o mesmo serve para o horário.
Em um outro tutorial eu explico como visualizar o Google Agenda dentro do seu sistema.
Para fazer download dos arquivos usados acima, clique aqui.
Abraços e até a próxima!

Artigo criado por















E aê Renan, tudo susse… seguinte, quis testar seu exemplo e deu tudo certo certo, a unica coisa que não funfou legal foi a questão da hora, pois temos um fuso diferente do fuso americano, e ta dando uma diferença sempre de 3 horas, entre o que cadastro e que é salvo no calendario, vc sabe de alguma maneira para sanar isso
Obrigado!
[Reply]