événements culturels

visualisations et représentations

Automatisez la publication de vos événements sur projet-ode - 2nde partie

Nous avons vu dans la 1ère partie comment exporter automatiquement vos événements vers le projet-ode. Nous allons aborder aujourd’hui les détails pratiques qui permettent de gérer proprement la synchronisation entre vos événements enregistrés dans votre base de données et ceux enregistrés dans la base de données du projet-ode.

Modifier un événement

Quand on enregistre un événement dans la DB du projet-ode, l’API répond en envoyant l’identifiant de cet événement dans sa propre DB. Ça tombe bien, cela va nous permettre d’enregister de votre coté la correspondance entre un événement dans votre DB et celui enregistré dans la DB du projet-ode. Il faudra donc créer une table dans votre base de données –pour les besoins de la démonstration appelons-là : Table_projet_ode – qui comportera 3 colonnes :

  1. l’identifiant d’1 événement dans votre DB ID_Event
  2. l’identifiant de cet événement dans la DB du projet-ode ID_Ode
  3. la date de dernier enregistrement de cet événement dans votre DB LastMod

  Ce dernier champ LastMod sera très utile pour vous permettre d’identifier les événements qui ont été modifiés depuis la publication sur le projet-ode et de les mettre à jour de même. Le principe : on vérifie régulièrement que la colonne LastMod de Table_projet_ode est la même que celle de l’événement stocké dans votre DB. Si ce n’est pas le cas on appelle l’API du projet-ode pour mettre à jour.

Comment ? 
C’est très simple : au lieu d’utiliser la commande post que nous avons vue ici, on utilise la commande put —qui veut dire, vous l’avez compris, qu’on va modifier un événement, il faut donc dire lequel. Vous avez 5 secondes pour répondre … oui, c’est ça, on va donner l’identifiant ID_Ode. Plus exactement, on ajoutera l'identifiant à l'url appelé. Le code sera donc : [1]. Vous noterez qu’il faut absolument renvoyer tous les champs précédemment enregistrés sinon ils seront perdus. Pas d’inquiétude, le code fait ça très bien ! Edit du 12/5 : Si l'envoi s'est bien passé l'API renverra le statut updated et nous mettrons à jour la colonne LastMod correspondant dans la table Table_projet_ode.

Catégoriser

Une des spécifications du projet-ode est de pouvoir associer des catégories et des tags à un événement. J’ai bien évidemment testé pour vous et malheureusement, envoyer ces champs à l’API provoque une erreur :(
J’ai prévenu le développeur qui m’a confirmé que c’était un bug connu qu’il corrigera (je cite) “dès qu’il le pourra”. Je suggère une récrimination collective pour booster sa motivation :D

Pour récapituler

Nous avons vu comment on pouvait enregistrer un événement dans le projet-ode puis le modifier si nécessaire.
Enfin une solution pour remédier aux dates qui changent. Et un argument de plus pour convaincre vos partenaires d'utiliser le projet ode.

Dans la dernière partie nous aborderons les principaux points à prendre en compte pour implémenter cette solution sur vos sites web.

Code pour modifier un événement ↑

use Buzz\Client\Curl;
$api_url = 'https://projet-ode.org/api/v1/events';
$api_key = 'Token ma_cle_api';

$client = new Curl();
$client->setVerifyPeer(false);
$browser = new Buzz\Browser($client);

$response = $browser->put(
    $api_url . '/identifiant_event_ode',
    array(
        'Authorization' => $api_key,
        'Content-Type' => 'application/vnd.collection+json'
    ),'
    {"template": 
        { "data": 
            [
                {"name": "title", "value": "un titre"}, 
                {"name": "organiser", "value": "lereacteur.info"}, 
                {"name": "start_time", "value": "2014-04-25T00:00:00+01:00"}, 
                {"name": "end_time", "value": "2014-04-26T00:00:00+01:00"}
            ]
        }
    }
    ');

echo $response->getContent();
echo $response->getStatusCode();