sites sous SPIP

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Attention, cette contribution est EN CHANTIER : elle n’est peut-être pas fonctionnelle.

Une carte des sites réalisés avec SPIP

Nota SPIP-Contrib : L’utilisation d’un « iframe » comme dans cette contrib pour l’insertion de cette carte fait débat. Il est aussi difficile des se faire une idée sur la fiabilité de cette représentation faute de précision sur le code utilisé. Quoiqu’il en soit à chacun d’apprécier la chose à son idée.

Principe de la carte

La carte des sites sous SPIP est une carte du monde des sites fonctionnant sous SPIP et mise à jour chaque jour automatiquement (le principe de fonctionnement est expliqué plus bas).

La carte contient déjà plusieurs centaines de sites. Les milliers d’autres seront intégrés dans les prochains mois.

On clique sur une icône SPIP pour voir apparaître le détail des informations sur un site ainsi qu’un aperçu du site.

Fonctionnement et inscription

Tous les jours le programme récupère les sites ajoutés sur spip.net > Des sites sous SPIP. Pour qu’un site (le vôtre par exempl1442 le géolocaliser en exécutant d’abord une requête whois sur différents sites [1] et s’il ne trouve pas, il tente de détecter une adresse postale sur votre site. Le programme va d’abord chercher dans tout ce qui ressemble à une page contact (rassurez vous cela vous prend 0% de bande passante). Une fois que le programme a récupéré l’adresse alors il est en mesure de géolocaliser le site. Pour le reste j’utilise les API googlemaps et voilà !

Vous pouvez toujours aider le programme en insérant votre adresse de domicile (au moins code postal et ville) dans votre propre site [2]. Sinon utilisez le forum de cet article pour demander une inclusion manuelle en précisant votre site et votre adresse. Le programme de géolocalisation est amélioré de jour en jour.

Cas des sites en sous-domaine

Si votre site est hébergé en sous-domaine, sans nom de domaine propre donc (genre sur Free par exemple), l’insertion de votre adresse dans votre propre site ou l’inscription manuelle via le forum devient indispensable. Afin de rendre le processus automatible, vous pouvez utiliser le format suivant dans votre commentaire :

site: www.monsite.fr
adresse: 45 rue de SPIP 75002 Paris FR

Le code

Intégrer la carte

Cette carte peut être intégrée dans d’autres sites en rapport avec SPIP

Insérez le code suivant dans votre squelette ou autre page html entre les balises <body> et </body> :

Se reporter à l’URL liée.

Génération de la carte

Cette carte est générée à partir de l’outil php Phoogle (voir plus bas un exemple d’utilisation). Je récupère les sites grâce à la fonction php file_get_contents et j’utilise une expression régulière (plus tard cela se fera par syndication RSS car c’est plus sûr) pour extraire les informations. Pour récupérer l’adresse, j’utilise une requête google spéciale.

Un 1er programme est lancé une fois par jour pour mettre à jour la base de donnée interne des sites spip avec les nouveaux sites. Pour les sites plus anciens présents dans la base, un autre programme lancé toutes les heures récupère les adresses postales au fur et à mesure. Je veille à ne pas surcharger les serveurs de whois pour ne pas me faire jeter. Une 20aine de sites sont traités chaque heure. Un petit calcul rapide indique que la totalité des sites seront géolocalisés dans quelques mois.

Tout les sites ne seront pas localisés. L’adresse postale de l’éditeur du site peut ne pas être présente dans le whois ou a pu être masquée ou rendu interdite d’accès. Pour les nombreux sites qui n’ont pas de nom de domaine propre, ils peuvent ne pas comporter d’adresses postale ou alors cette dernière est difficile ou impossible à trouver par Google.

Ensuite il ne reste plus qu’à utiliser Phoogle [3] avec les données de la base. Ils faut savoir que les API de Google ne sont pas 100% fiables. Tout d’abord, elles ne supportent pas des appels trop nombreux ou trop proches. C’est pourquoi que dès qu’une latitude et une longitude ont été calculés, je les stocke dans la base pour ne pas avoir à faire appel à l’API une nouvelle fois. Parfois l’API se trompe, elle retourne des coordonnées incorrectes qui positionnent le site ailleurs. Dans ce cas, seule une intervention humaine peut permettre de réinitialiser les coordonnées.

Phoogle est un framework php qui masque les appels aux nombreuses fonctions javascript de l’API Google Maps. Exemple d’utilisation de phoogle :

<?php
	$ph = new PhoogleMap();
	$ph->setAPIkey("Votre clé");
//je change les icônes par défaut; modifs apportées à Phoogle (je demanderai à l'éditeur de proposer cette modification s'il le souhaite)
	$ph->Icon = "http://balluche.free.fr/spip-small.png";
	$ph->iconShadow = "http://balluche.free.fr/spip-small-shadow.png";
	$ph->iconWidth = 20;
	$ph->iconHeight = 20;
	$ph->setHeight(400); 
	$ph->setWidth(500);
//zoom initial
	$ph->zoomLevel = 15;
//on positionne le canevas sur la France
	$ph->centerMap(47.15984, 2.988281);
//on parcoure la liste des sites
	$res = mysql_query("SELECT * FROM sites_spip") or die(mysql_error());
	while ($row = mysql_fetch_assoc($res)) {
		extract($row);
//préparation de l'affichage de la bulle
		$info = <<<EOT
<table><td>
<a href='$site' target='_ blank'><img width='120' width='90' src='http://open.thumbshots.org/image.pxf?url=$site' border='0'></a>
</td><td>
<small>
<a href='$site' target='_blank'>$site</a>
<b>Auteur</b>: $auteur
<b>Origine</b>: $info
<b>Date de publication</b>: $date
</small>
</table>
EOT;
		$coordinates = $ph->addAddress($q, $info);
	}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=iso8859-1"/>
    <title>La Carte des sites sous SPIP</title>
    <?php
           $ph->printGoogleJS();
     ?>
  </head>
  <body>
    <?php
           //on sort tout le javascript qui gère la carte
           $ph->showMap(); ?>
  </body>
</html>

Comme la carte est assez lourde, j’utilise un système de cache très performant : quickcache.

Il y a beaucoup de choses à dire si on rentre dans le détail de l’implémentation [4]

Les limites, il n’y en a pas beaucoup. J’améliore le programme de jour en jour et la carte commence à être bien remplie. La question que je me pose est si elle va supporter les 5000 [5] sites SPIP ?

Notes

[1Afnic, Gandi, ...

[2n’importe où pourvu que ce soit accessible par un moteur de recherche

[3Que j’ai modifié pour gérer les icônes.

[4Nota SPIP Contrib : pourtant cela pourrait peut-être intéresser du monde, au moins avec quelques pistes pour le code ?

[5Nota SPIP Contrib : rien que sur spip.net il y a déjà plus que 5000 sites inscrits

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom