[Devel] r349 - trunk

svn at agendadulibre.org svn at agendadulibre.org
Jeu 10 Juil 08:44:14 CEST 2008


Author: thomas
Date: Thu Jul 10 08:43:26 2008
New Revision: 349

Log:
Ajout du tag <georss:point></georss:point> dans le flux RSS, qui donne
la localisation géographique de l'évènement. Pour l'instant, la
localisation géographique correspond aux coordonnées du centre de la
ville dans laquelle l'évènement a lieu. Plus tard, on pourra penser à
permettre aux soumetteurs de saisir plus précisément les coordonnées
géographiques du lieu de l'évènement.

Ce tag est un standard, appelé GeoRSS, documenté sur
http://georss.org. Voir également http://en.wikipedia.org/wiki/GeoRSS.

Théoriquement, les flux de l'Agenda du Libre sont maintenant
utilisables avec Google Maps, en utilisant une adresse comme:

 http://maps.google.com/maps?q=http://www.agendadulibre.org/rss.php?region=all

Néanmoins, je n'ai pas testé cette fonctionnalité. Je ne sais pas ce
qu'il en est d'OpenStreetMap.



Modified:
   trunk/UPGRADE
   trunk/rss.php
   trunk/schema.sql

Modified: trunk/UPGRADE
==============================================================================
--- trunk/UPGRADE	(original)
+++ trunk/UPGRADE	Thu Jul 10 08:43:26 2008
@@ -39,3 +39,31 @@
 
  alter table events add decision_time datetime not null default '0000-00-00 00:00:00';
  alter table events add submission_time datetime not null default '0000-00-00 00:00:00';
+
+Revisions lower than 349
+========================
+
+If you have an installation of the Agenda du Libre software of
+revision lower than 346 and you want to upgrade to a more recent
+version, then you must change the database schema. In order to do
+that, use the following SQL commands:
+
+CREATE TABLE `cities` (
+  `id` int(11) NOT NULL auto_increment,
+  `name` varchar(255) NOT NULL default '',
+  `majname` varchar(255) NOT NULL default '',
+  `postalcode` int(11) default NULL,
+  `inseecode` int(11) default NULL,
+  `regioncode` int(11) default NULL,
+  `latitude` float default NULL,
+  `longitude` float default NULL,
+  PRIMARY KEY  (`id`)
+);
+
+And fill the table using the extract-cities-coordinates.sh script
+available in http://www.agendadulibre.org/svn/scripts/ :
+
+ ./extract-cities-coordinates.sh
+ cat ville.sql | mysql -u user -p bdd
+
+

Modified: trunk/rss.php
==============================================================================
--- trunk/rss.php	(original)
+++ trunk/rss.php	Thu Jul 10 08:43:26 2008
@@ -62,6 +62,20 @@
   return $db->query ($sql);
 }
 
+function get_city_coordinates ($db, $city)
+{
+  $sql = "select longitude, latitude from cities where name='" . $city . "'";
+  $ret = $db->query($sql);
+
+  if (mysql_num_rows($ret) == 1)
+    {
+      $obj = mysql_fetch_object($ret);
+      return array($obj->longitude, $obj->latitude);
+    }
+
+  return false;
+}
+
 /* Fetch region name */
 $region_num = get_safe_integer('region', 'all');
 if ($region_num != "all")
@@ -80,7 +94,7 @@
 
 echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
 
-echo "<rdf:RDF  xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"  xmlns:dc=\"http://purl.org/dc/elements/1.1/\"  xmlns:sy=\"http://purl.org/rss/1.0/modules/syndication/\" xmlns:admin=\"http://webns.net/mvcb/\"  xmlns:cc=\"http://web.resource.org/cc/\"  xmlns:content=\"http://purl.org/rss/1.0/modules/content/\"  xmlns=\"http://purl.org/rss/1.0/\">\n";
+echo "<rdf:RDF  xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"  xmlns:dc=\"http://purl.org/dc/elements/1.1/\"  xmlns:sy=\"http://purl.org/rss/1.0/modules/syndication/\" xmlns:admin=\"http://webns.net/mvcb/\"  xmlns:cc=\"http://web.resource.org/cc/\"  xmlns:content=\"http://purl.org/rss/1.0/modules/content/\"  xmlns=\"http://purl.org/rss/1.0/\" xmlns:georss=\"http://www.georss.org/georss/\">\n";
 
 echo "<channel rdf:about=\"http://www.agendadulibre.org\">\n";
 echo " <title>Agenda du Libre [ " . $region . " ]</title>\n";
@@ -122,6 +136,7 @@
   $start_timestamp = date_mysql2timestamp($event->start_time);
   $start_day = onlyday_timestamp2humanreadable($start_timestamp);
   $end_day   = onlyday_timestamp2humanreadable(date_mysql2timestamp($event->end_time));
+  list($longitude, $latitude) = get_city_coordinates($db, $event->city);
 
   echo "  <item rdf:about=\"" . calendar_absolute_url("showevent.php?id=" . $event->id) . "\">\n";
 
@@ -134,11 +149,15 @@
   echo "</title>\n";
 
   echo "   <link>" . calendar_absolute_url("showevent.php?id=" . $event->id) . "</link>\n";
-  echo "   <guid>" . $event->id . "@agendadulibre.org</guid>";
+  echo "   <guid>" . $event->id . "@agendadulibre.org</guid>\n";
   $evt_timezone = ereg_replace("^\+([0-9][0-9])([0-9][0-9])$", "+\\1:\\2",
 			       date('O', $start_timestamp));
   $evt_date     = date('Y-m-d\TH:i', $start_timestamp);
   echo "   <dc:date>" . $evt_date . $evt_timezone . "</dc:date>\n";
+
+  if ($longitude && $latitude)
+    echo "   <georss:point>" . $latitude . " " . $longitude . "</georss:point>\n";
+
   echo "   <description>\n";
 
   echo xmlentities(strip_tags(format_event ($db, $event->title,

Modified: trunk/schema.sql
==============================================================================
--- trunk/schema.sql	(original)
+++ trunk/schema.sql	Thu Jul 10 08:43:26 2008
@@ -68,3 +68,15 @@
   url varchar(255) NOT NULL default '',
   PRIMARY KEY  (id)
 ) TYPE=MyISAM AUTO_INCREMENT=2 ;
+
+CREATE TABLE `cities` (
+  `id` int(11) NOT NULL auto_increment,
+  `name` varchar(255) NOT NULL default '',
+  `majname` varchar(255) NOT NULL default '',
+  `postalcode` int(11) default NULL,
+  `inseecode` int(11) default NULL,
+  `regioncode` int(11) default NULL,
+  `latitude` float default NULL,
+  `longitude` float default NULL,
+  PRIMARY KEY  (`id`)
+);


Plus d'informations sur la liste de diffusion Devel