Dec
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!


Google Agenda com PHP

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!


Receba nossos artigos em seu Email!


Digite o seu email abaixo:

Posts Relacionados:

Sobre o Autor: Renan Martins

Desenvolvedor Web, apaixonado pelo que faz!

1 Comment + Add Comment

  • 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]

Deixe o sua opinião abaixo

Wix – Criador de Sites

World Plone Day

World Plone Day

Nossos posts no seu Email

Informe seu email abaixo para receber nossas atualizações.

Facebook

Destaques

QuebraLink - Decodifica e inverte links Aprender Algoritmos Dicas Ubuntu Otimização de Sites

Sites Legais

Banner MeuPinguim

Vida de Programador Dicas em Geral - Dicas sobre Informática, Tecnologia e Inclusão Digital Ubuntu Dicas Infológico