GChart Bundle – un bundle Symfony pour utiliser Google Chart

Je viens de rendre disponible sur github.com GChartBundle, un bundle Symfony (Symfony2 donc…) qui « wrappe » le Google Chart Tool et quelques charts (mais surtout le QrCode) de Google Image Chart API.

Ce que j’ai appris en faisant ce bundle:

La puissance du DIC

La puissance du Dependency Injection Container… ou comment permettre à l’utilisateur de redéfinir des paramètres du Bundle, passer des services aux services que l’on créée…

La puissance des Twig Extensions

… ou comment définir ses propres fonctions Twig, qui elles-même peuvent appeler « render » sur un template.

J’ai passé un peu de temps à trouver comment faire, mais l’idée est d’utiliser la méthode initRunTime() pour garder une référence d’un Twig_Environment:

    //in Twig/TwigExtension.php
    public function initRuntime(\Twig_Environment $environment)
    {
        $this->environment = $environment;
    }

J’aurais pu aussi de la même manière utiliser un template php (en passant 2 resources dans le DIC par exemple…), mais un manque de motivation m’a gagné (je n’utilise pas les templates php de toute façon).

Cette partie (=le « rendering » d’un template dans l’extension Twig) pourrait être plus « propre aussi… Dans une version ultérieure peut-être?

Malheureusement, je n’ai pas de démo live. Mais voici tout de même un démo statique (copier coller du code html généré localement) de ce que génère l’action Demo.

En espérant que ça aide quelqu’un…

geocoding, latitude, longitude and distance

from http://code.google.com/intl/fr-FR/apis/maps/articles/phpsqlsearch.html:

Here’s the SQL statement that will find the closest 20 locations that are within a radius of 25 miles to the 37, -122 coordinate. It calculates the distance based on the latitude/longitude of that row and the target latitude/longitude, and then asks for only rows where the distance value is less than 25, orders the whole query by distance, and limits it to 20 results. To search by kilometers instead of miles, replace 3959 with 6371.

SELECT id, ( 3959 * acos( cos( radians(37) )
* cos( radians( lat ) ) * cos( radians( lng )
  - radians(-122) ) + sin( radians(37) )
       * sin( radians( lat ) ) ) ) AS distance
FROM markers HAVING distance < 25 ORDER BY distance
LIMIT 0 , 20;

Google Analytics API – Enfin (too soon?)

Et oui, tu le voulais pour Noël, Google l’a fait: Google vient de lancer une API pour accéder en lecture seulement les données de Google Analytics: http://analytics.blogspot.com/2009/04/attention-developers-google-analytics.html

Pour l’instant, il y a une librairie Javascript, Java et « Raw » (HTTP et XML). Pour PHP, il va falloir attendre un peu, mais on peut espérer que Zend inclut sous peu à son component Zend_GData des classes spécifiques pour Google Analytics. Il est déjà possible de s’autentifier avec le framework et d’optenir le XML à peu de frais (voir ce lien par exemple tiré de analyseweb.fr, merci Julien Coquet)