Google Calendar en php

Capteurs et actionneurs HTTP

Google Calendar en php

Messagepar Manolo91 » 18 Nov 2014 14:07

Hello,

pour ceux utilisant une interaction avec les calendriers Google en php, sachez que ça ne fonctionne plus depuis hier : certaines fonctions ayant été dépréciées...

https://developers.google.com/google-ap ... /reference

A la recherche d'une nouvelle solution : une class php attaquant l'API google V3
Manolo91
 
Messages : 25
Inscription : 13 Sep 2012

Re: Google Calendar en php

Messagepar djo074 » 18 Nov 2014 21:56

Et bim :evil:
Un service google de plus en moins.
Je ne m'y connais pas en PHP mais en bidouillant un peu, il semble que ce soit cette partie dans googleAgenda.php qui soit concernée:

Code : Tout sélectionner
/**
     * DÈfinie l'agenda avec lequel on travail
     * @param string $sFeed url de l'agenda
     * @param bool $bFull permet d'avoir toutes les variables rempli sÈparÈment, sinon met adresse, date... dans description (default true)
     * @return void
     * @throws GoogleAgendaException si l'url n'est pas valide
     */
    public function __construct($sFeed, $bFull = true) {
        if ($bFull) {
            $sFeed = mb_strrchr($sFeed, 'basic', true) . 'full';
        }
 
        $sFeedContent = @file_get_contents($sFeed);
        if ($sFeedContent !== false && !empty($sFeedContent)) {
            $this->_sFeed = $sFeed;
        }
        else {
            throw new GoogleAgendaException('L\'url ['.$sFeed.'] n\'est pas valide.');
        }
    }



Mais en la mettant en commentaires, du coup le script marche mais on a plus les détails du calendrier.

Voilà la preuve que je ne m'y connais pas, donc si un guru passe par là... Ce serait super sympa. :-|
djo074
 
Messages : 85
Inscription : 07 Mars 2013

Re: Google Calendar en php

Messagepar Tinto » 19 Nov 2014 08:40

Le service ne disparait pas, il est mis a jour ... ce qui est bien différent ;)
Tinto
 
Messages : 534
Inscription : 10 Jan 2014

Re: Google Calendar en php

Messagepar nicoco59 » 19 Nov 2014 10:30

Bonjour,

Je n'ai pas eu le temps de regarder tous les changements dans l'API mais pour le moment, vous avez 2 choses à faire :

1/ Mettre l'URL de votre agenda en https dans le fichier agenda.php.
La mienne était en http et maintenant l'URL de l'agenda Google est en https.

2/ Commenter les lignes suivantes danns le fichier : GoogleAgenda.php

Code : Tout sélectionner
        #if ($bFull) {
        #    $sFeed = mb_strrchr($sFeed, 'basic', true) . 'full';
        #    print $sFeed . "\n" ;
        #}



Et ca devrait remarcher ;)

Code : Tout sélectionner
# php agenda.php
<?xml version="1.0" encoding="utf8" ?><conges><aujourdhui>RAS</aujourdhui><demain>RAS</demain></conges>



Nicolas.
nicoco59
 
Messages : 9
Inscription : 14 Juil 2014

Re: Google Calendar en php

Messagepar aurel » 19 Nov 2014 10:58

Hello,

bien vu nicoco59, ca fonctionne!

merci pour l'info ;)
Rendons plus simple notre quotidien avec domo-blog.fr
aurel
 
Messages : 815
Inscription : 07 Août 2012
Localisation : 77

Re: Google Calendar en php

Messagepar Manolo91 » 19 Nov 2014 20:50

Je confirme aussi : nickel !!! ;)
Manolo91
 
Messages : 25
Inscription : 13 Sep 2012

Re: Google Calendar en php

Messagepar neopate » 20 Nov 2014 18:38

+1 Je revis... Plus de prétexte, ma femme entend enfin les notifications Sonos pour sortir la bonne poubelle poubelles !!! :lol: :lol: :lol:
Merci grand oh grand Nicoco59 !!! :clap: :clap: :clap:
neopate
 
Messages : 112
Inscription : 11 Sep 2014

Re: Google Calendar en php

Messagepar jacques » 20 Nov 2014 18:56

neopate a écrit: ma femme entend ... pour sortir la bonne poubelle !!! :lol: :lol: :lol:


De la domotique à l'ancienne, mais tellement efficace :lol: :lol: :lol: :lol:
Jacques
--------------------
www.domotiks.fr
jacques
 
Messages : 526
Inscription : 03 Juil 2012
Localisation : Ile de France

Re: Google Calendar en php

Messagepar ASECADOMOTIQUE54 » 21 Nov 2014 15:01

merci Nico59 pour le partage ;)
ASECADOMOTIQUE54
 
Messages : 639
Inscription : 14 Déc 2013
Localisation : Nancy

Re: Google Calendar en php

Messagepar ninjuki » 30 Nov 2014 14:58

La version /full ne fonctionne plus depuis la nouvelle api v3 de google.

pour utiliser la version basic il faut préciser false sur le deuxième paramètre:

new GoogleAgenda("https://www.google.com/calendar/.../basic", false);

l'appel fonctionne de nouveau par contre la version basic permet uniquement de récupéré le titre de l’événement du coup on ne peux plus tester sur les dates de l'évenement.

Pour faire des tests sur l'heure , j'ai modifier l'appel pour requêter directement les event avec l'heure.
'startmin' => gmdate("Y-m-d\TH:i:s\Z", time()),
'startmax' => gmdate("Y-m-d\TH:i:s\Z", time() + (1 * 60 * 60) + 60), //Ajout de 1h + 1 minute

Après je récupère le premier résultat (température actuelle) et le dernier (pour la température de la prochaine heure)
ninjuki
 
Messages : 24
Inscription : 14 Mai 2012

Re: Google Calendar en php

Messagepar ASECADOMOTIQUE54 » 02 Déc 2014 20:00

Petite question le script de cedric c'est quelle version? Celui qui peut gérer les phases de la journée. Parce que le script me renvoi toujours la valeur par défaut avec cette version!
ASECADOMOTIQUE54
 
Messages : 639
Inscription : 14 Déc 2013
Localisation : Nancy

Re: Google Calendar en php

Messagepar aurel » 02 Déc 2014 21:35

De mémoire son script ne gère pas les phases de la journée
Rendons plus simple notre quotidien avec domo-blog.fr
aurel
 
Messages : 815
Inscription : 07 Août 2012
Localisation : 77

Re: Google Calendar en php

Messagepar ASECADOMOTIQUE54 » 03 Déc 2014 10:34

Euh oui possible, j'ai un problème avec le script qui permet de renvoyer plusieurs valeurs dans une journée. A la fin de l'URL j'ai decode=0, couché,1, levé,2....etc dsl j'ai pas le script sous le coude. Toujours est il qu'il me renvoi la valeur par défaut en permanence.
ASECADOMOTIQUE54
 
Messages : 639
Inscription : 14 Déc 2013
Localisation : Nancy

Re: Google Calendar en php

Messagepar ASECADOMOTIQUE54 » 03 Déc 2014 15:41

Voici le script en question, histoire d'etre un peu plus précis ... ;)

Code : Tout sélectionner
<?php
require_once 'GoogleAgenda.php';
require_once 'GoogleAgendaEvent.php';
require_once 'GoogleAgendaException.php';

// Recupere les variables passes en parametre de l'URL
$url_cal=$_GET['cal'];
$decode=$_GET['decode'];
$defaut=$_GET['defaut'];


// On remplit le tableau qui permet le decodage
$items = explode(",", $decode);
           
           for($n = 0, $m = count($items); $n < $m; $n=$n+2){
               $tableau_decode[$items[$n]] = $items[$n+1];
           }
           
             

// Lecture de l'agenda
try {
   $oAgendaConges = new GoogleAgenda("https://www.google.com/calendar/feeds/xxxxxxxxxxxxxxxxx%40group.calendar.google.com/private-xxxxxxxxxxxxxxxxxxx/basic", false);  // Compl?ter ici par l'url priv?e de l'agenda Google
 
   $aAujourdhui = $oAgendaConges->getEvents(array(
     'startmin' => date('Y-m-d'),
       'startmax' => date('Y-m-d',strtotime("+1 days")),
       'sortorder' => '',
       'orderby' => 'starttime',
       'maxresults' => '25',   // peut ?tre diminuer ? 10 = nombres de tache max par jour
       'startindex' => '1',
       'search' => '',
       'singleevents' => 'true',
       'futureevents' => 'false',
       'timezone' => 'Europe/Paris',
       'showdeleted' => 'false'
   ));
   
   
   
  //$aDemain = $oAgendaConges->getEvents(array(
   //  'startmin' => date('Y-m-d',strtotime("+24 hours")),
   //  'startmax' => date('Y-m-d',strtotime("+48 hours")),
   //  'sortorder' => 'ascending',
    // 'orderby' => 'starttime',
    // 'maxresults' => '1',
  //   'startindex' => '1',
   //  'search' => '',
   //  'singleevents' => 'true',
   //  'futureevents' => 'false',
   //  'timezone' => 'Europe/Paris',
   //  'showdeleted' => 'false'
  // ));
 
  echo '<?xml version="1.0" encoding="utf8" ?>';
echo '<calendrier>';
//echo 'R:' .array_values($oAujourdhui->getTitle()). 'Ok';

//   echo 'D:' .$aDemain->getTitle(). 'Ok';
// Lecture de l'agenda du jour
$i="0";
if ($aAujourdhui) {
  foreach ($aAujourdhui as $oAujourdhui) {
   //echo  '<action>'.$oAujourdhui->getTitle(). '</action> '.$oAujourdhui->getStartDate();
   //     echo  '<sdate>'.$oAujourdhui->getStartDate(). '</sdate> ';
   
   // renvoie le nombre de seconde avant ou apr?s le d?but de la planification
  $diff_date_deb= ( strtotime(date('Y-m-d H:i:s'))-strtotime($oAujourdhui->getStartDate()) );
  // renvoie le nombre de seconde qu'il reste avant le fin de la planification ( si <0 on l 'a d?pass?
  $diff_date_fin= (strtotime($oAujourdhui->getEndDate()) - strtotime(date('Y-m-d H:i:s')));
  // on regarde s'il y ? une tache qui correspond ? l'heure d'execution  -> (d?but rendez-vous)  < time now < (fin rendez-vous)
 // Si c'est le cas on la traite
  if (  ($diff_date_deb > 0 ) && ($diff_date_fin > 0 )){
       //echo 'diffo :' .($diff_date_deb ) . '_ ' ;
        // transforme l'intitule en code pour qu'il soit plus facilement utilisable sous la zibase
        //echo 'Ok':
        echo  '<action>'.$oAujourdhui->getTitle(). '</action> ';
        echo  '<sdate>'.$oAujourdhui->getStartDate(). '</sdate> ';
        $code = array_search(($oAujourdhui->getTitle()),$tableau_decode);
        if ( $code <> '' ) {
        echo '<aujourdhui>'.$code.'</aujourdhui> ';
         echo  '<edate>'.$oAujourdhui->getEndDate(). '</edate> ';
        // Flag qui indique qu'on traite la tache pour renvoyer le code trouv? ou 0 sinon
        $i="1";
        }
        }
   }
   // rien ? traiter ? l'heure actuelle
   if ( $i=="0") {
   echo '<aujourdhui>' . $defaut . '</aujourdhui>';

   }
} else {
echo '<aujourdhui>' . $defaut . '</aujourdhui>';
}


// Lecture de l'agenda de demain 
//if ($aDemain) { 
  //foreach ($aDemain as $oDemain) {
        // transforme l'intitule en code pour qu'il soit plus facilement utilisable sous la zibase
       //echo date('Y-m-d H:i:s');
      // if ( (strtotime($oDemain->getStartDate()) - strtotime(date('Y-m-d H:i:s'))) > 600 ){
       //echo 'diffd :' .(strtotime($oDemain->getStartDate()) - strtotime(date('Y-m-d H:i:s'))) . '_ ' ;
        // echo  '<date>'.$oDemain->getStartDate(). '</date>';
        //echo '<demain>'. array_search(($oDemain->getTitle()),$tableau_decode) . '</demain>';
       // }
  // }
//} else {
//    echo '<demain>' . $defaut . '</demain>';
//}   
echo '</calendrier>';
}



catch (GoogleAgendaException $e) {
   echo $e->getMessage();
}


Pour extraire la valeur en cours dans mon agenda dans mon cas le moment de la journée j'ai cette url
http://xxxxxxx/script/momentdelajournee ... e&defaut=4
xpath
//aujourdhui

le problème c'est qu'il me renvoi systématiquement 4 donc couché qui est la valeur par défaut quand l'agenda est vide ce qui n'est pas le cas pour moi!
Une idée?
ASECADOMOTIQUE54
 
Messages : 639
Inscription : 14 Déc 2013
Localisation : Nancy


Retour vers Requêtes HTTP

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 24 invité(s)