Proof of Concept: Agrégateur Twitter pour Drupal avec Drupal

Bonne année ! Ah zut on est en Février déjà...

Bon comme c'est un peu les vacances pour moi (semestre à Dublin, 10h de cours par semaine, toussa...) j'ai le temps de tester des petits trucs.

Concept

J'ai donc monté un petit agrégateur de tweets concernant Drupal, en ne récupérant que ceux qui contiennent des liens (recherche Twitter). Il enregistre donc tous ces tweets, mais comme les nœuds sont pas très manipulables pour les statistiques, j'ai décidé de faire mon propre module et de ne pas utiliser l'Aggregator du Core. Quatre tables et c'est parti, on enregistre les tweets, les liens et leurs auteurs dans un hook_cron() :

  • agreg_tweets(id, author, text, date)
  • agreg_authors(id, name)
  • agreg_links(id, link)
  • agreg_links_tweets(link, tweet)

Statistiques

Ça, c'est bien, mais il faut en faire quelque chose maintenant... Donc c'est parti pour un hook_menu pour faire quelques pages de statistiques :

  • Une pour le temps pour voir quand les drupaliens twittent le plus, et donc quand faire de la veille
  • Une pour les trendings tweets et donc voir ce qui se passe et qu'est qui est intéressant ces temps-ci

C'est là que des nœuds m'auraient bien embêté, faire des requêtes GROUP BY et ROLLUP sur des jointures à foison, non merci !
La librairie highcharts.js pour faire joli, des petits tableaux et une requête ajax pour voir quels tweets parlent d'un lien (ajouter un peu de contexte) et voilou : un bel agrégateur Twitter

Twitter bootstrap

Ce thème tout frais (donc en dev) a quelques bugs dus à l'intégration Drupal et aux problèmes de différence de licences open source mais en quelques modifications c'est résolu. On a donc accès à des classes pour faire de beaux tableaux ainsi que quelques outils JS pour faire des fenêtres modales (j'ai rajouté bootbox.js pour plus de simplicité, merci @FGRibreau). On obtient donc en résultat une interface épurée idéale pour ce genre de proof of concept ou de projet court.

Drupal, un vrai framework

La recette se prépare donc en quelques 350 lignes de codes grâce aux fonctions et aux hooks de Drupal. Parmi ceux et celles utilisés :

  • hook_menu() et hook_cron()
  • db_merge()
  • variable_get() et variable_set(), juste indispensables
  • l(), truncate_utf8(), theme_table() pour le rendu
  • curl pour les requêtes HTTP

Je vais maintenant pouvoir vous twitter des liens plus pertinents concernant Drupal, pour cela n'hésitez pas à me suivre !