[Devel] r387 - trunk

svn at agendadulibre.org svn at agendadulibre.org
Ven 26 Sep 20:17:58 CEST 2008


Author: thomas
Date: Fri Sep 26 20:17:54 2008
New Revision: 387

Log:
Passage à l'encodage UTF-8. Toutes les pages Web, le flux RSS et les
courriers électroniques sont maintenant encodés en UTF-8, ainsi que le
contenu de la base de données.



Modified:
   trunk/UPGRADE
   trunk/adl-submit-latest-version
   trunk/bd.inc.php
   trunk/cancelevent.php
   trunk/editevent.php
   trunk/funcs.inc.php
   trunk/ical.php
   trunk/moderation.php
   trunk/rejectevent.php
   trunk/requestinfosevent.php
   trunk/rss.php
   trunk/submit.php
   trunk/textlist.php
   trunk/validateevent.php
   trunk/xmllistevents.php

Modified: trunk/UPGRADE
==============================================================================
--- trunk/UPGRADE	(original)
+++ trunk/UPGRADE	Fri Sep 26 20:17:54 2008
@@ -75,3 +75,21 @@
 that, use the following SQL commands:
 
  alter table lugs add city varchar(255) not null default '';
+
+Revisions lower than 374
+========================
+
+At revision 374, Agenda du Libre switched to the UTF-8 encoding, both
+for the web pages and the database contents. The process used to
+convert the database contents is the following (the contents of the
+cities table was already in UTF-8) :
+
+for t in events lugs users regions cities ; do
+	mysqldump -u user dbname $t --default-character-set=latin1 --skip-set-charset > $t.sql
+	if [ $t != "cities" ] ; then
+		recode ISO-8859-1..UTF-8 $t.sql
+	fi
+	sed -i s/latin1/utf8/ $t.sql
+	echo "drop table $t" | mysql -u user dbname
+    	mysql -u user dbname --default-character-set=utf8 < $t.sql
+done

Modified: trunk/adl-submit-latest-version
==============================================================================
--- trunk/adl-submit-latest-version	(original)
+++ trunk/adl-submit-latest-version	Fri Sep 26 20:17:54 2008
@@ -1 +1 @@
-1.0
\ No newline at end of file
+2.0

Modified: trunk/bd.inc.php
==============================================================================
--- trunk/bd.inc.php	(original)
+++ trunk/bd.inc.php	Fri Sep 26 20:17:54 2008
@@ -1,7 +1,7 @@
 <?php
 
 /* Copyright 2005
- * - Mélanie Bats <melanie POINT bats CHEZ utbm POINT fr>
+ * - Mélanie Bats <melanie POINT bats CHEZ utbm POINT fr>
  * - Thomas Petazzoni <thomas POINT petazzoni CHEZ enix POINT org>
  *
  * This program is free software; you can redistribute it and/or
@@ -40,15 +40,17 @@
 
     if(mysql_connect($db_host,$db_user,$db_pass)==FALSE)
       {
-	echo "Probleme de connexion à la base de données sur $host.\n";
+	echo "Probleme de connexion à la base de données sur $host.\n";
 	return 0;
       }
 
     if(mysql_select_db($db_name) == FALSE)
       {
-	echo "Probleme de selection de la base de données $bdd sur $host.\n";
+	echo "Probleme de selection de la base de données $bdd sur $host.\n";
 	return 0;
       }
+
+    mysql_query("set names 'utf8'");
   }
 
   function query ($query)

Modified: trunk/cancelevent.php
==============================================================================
--- trunk/cancelevent.php	(original)
+++ trunk/cancelevent.php	Fri Sep 26 20:17:54 2008
@@ -37,7 +37,7 @@
   $ret = $db->query ($sql);
   if ($ret == FALSE)
     {
-      error ("La requête <i>" . $sql . "</i> a échoué");
+      error ("La requête <i>" . $sql . "</i> a échoué");
       return -1;
     }
 
@@ -50,18 +50,18 @@
   if ($user)
     $modifier = $user->get_login();
   else
-    $modifier = "le soumetteur de l'évènement";
+    $modifier = "le soumetteur de l'évènement";
 
   calendar_mail ($moderatorlist, "",
-		 "Annulation de l'évènement '" . stripslashes($oldevent->title) . "'",
+		 "Annulation de l'évènement '" . stripslashes($oldevent->title) . "'",
 		 "Bonjour,\n\n" .
-		 wordwrap("L'évènement '" . stripslashes($oldevent->title) . "' a été annulé par " . $modifier . ".\n") .
-		 "Détail de l'évènement annulé:\n\n" .
+		 wordwrap("L'évènement '" . stripslashes($oldevent->title) . "' a été annulé par " . $modifier . ".\n") .
+		 "Détail de l'évènement annulé:\n\n" .
 		 "=======================================================\n" .
 		 $oldevent_str . "\n".
 		 "=======================================================\n\n" .
-		 "Bonne journée,\n\n".
-		 "-- L'équipe de modération");
+		 "Bonne journée,\n\n".
+		 "-- L'équipe de modération");
 }
 
 $db = new db();
@@ -79,15 +79,15 @@
   $ret = $db->query($sql);
   if ($ret == FALSE)
     {
-      put_header("Annulation d'un évènement");
-      error ("La requête <i>" . $sql . "</i> a échoué");
+      put_header("Annulation d'un évènement");
+      error ("La requête <i>" . $sql . "</i> a échoué");
       put_footer();
       exit;
     }
 
   if (mysql_num_rows($ret) != 1)
     {
-      put_header("Annulation d'un évènement");
+      put_header("Annulation d'un évènement");
       error("Hash d'identification non reconnu");
       put_footer();
       exit;
@@ -98,29 +98,29 @@
 
 if ($_POST['__event_cancelation_confirm'])
 {
-  put_header("Annulation d'un évènement");
+  put_header("Annulation d'un évènement");
   $ret = cancel_event ($db, $user, $id);
   if ($ret == 0)
     {
-      echo "<p>L'évènement a bien été annulé. Il n'apparaît plus dans l'Agenda du Libre.</p>";
+      echo "<p>L'évènement a bien été annulé. Il n'apparaît plus dans l'Agenda du Libre.</p>";
     }
   put_footer();
   exit;
 }
 else if ($_POST['__event_cancelation_cancel'])
 {
-  put_header("Annulation d'un évènement");
-  echo "<p>Vous n'avez pas souhaité annuler cet évènement.</p>";
+  put_header("Annulation d'un évènement");
+  echo "<p>Vous n'avez pas souhaité annuler cet évènement.</p>";
   put_footer();
   exit;
 }
 
-put_header("Annulation d'un évènement");
+put_header("Annulation d'un évènement");
 
 $event = fetch_event($db, $id);
 if (! $event)
 {
-  error("Pas d'évènement avec cet ID");
+  error("Pas d'évènement avec cet ID");
   put_footer();
   exit;
 }
@@ -128,13 +128,13 @@
 if ($user)
 {
   echo '<p class="moderationheader">';
-  echo "<a href=\"moderation.php\">Modération</a>&nbsp;&gt;&gt;&gt;&nbsp;Annulation de l'évènement";
+  echo "<a href=\"moderation.php\">Modération</a>&nbsp;&gt;&gt;&gt;&nbsp;Annulation de l'évènement";
   echo "</p>";
 }
 else
 {
   echo '<p class="moderationheader">';
-  echo "&gt;&gt;&gt;&nbsp;Annulation de l'évènement";
+  echo "&gt;&gt;&gt;&nbsp;Annulation de l'évènement";
   echo "</p>";
 }
 
@@ -144,9 +144,9 @@
   $posturl = "?id=" . $id . "&secret=" . $secret;
 
 echo '<div class="moderationbox">';
-echo '<p style="font-weight: bold;">Attention, cet évènement est déjà modéré. Cette annulation le fera disparaître de l\'Agenda du Libre.</p>';
+echo '<p style="font-weight: bold;">Attention, cet évènement est déjà modéré. Cette annulation le fera disparaître de l\'Agenda du Libre.</p>';
 echo '<form action="' . $posturl . '" method="post">';
-echo '<p style="text-align: center;">Confirmez-vous l\'annulation de cet évènement&nbsp;?</p>';
+echo '<p style="text-align: center;">Confirmez-vous l\'annulation de cet évènement&nbsp;?</p>';
 echo '<input name="__event_cancelation_confirm" type="submit" value="Oui"/>&nbsp;';
 echo '<input name="__event_cancelation_cancel" type="submit" value="Non"/>';
 echo '</form>';
@@ -155,13 +155,13 @@
 if ($user)
 {
   echo '<p class="moderationheader">';
-  echo "<a href=\"moderation.php\">Modération</a>&nbsp;&gt;&gt;&gt;&nbsp;Visualisation de l'évènement";
+  echo "<a href=\"moderation.php\">Modération</a>&nbsp;&gt;&gt;&gt;&nbsp;Visualisation de l'évènement";
   echo "</p>";
 }
 else
 {
   echo '<p class="moderationheader">';
-  echo "&gt;&gt;&gt;&nbsp;Visualisation de l'évènement";
+  echo "&gt;&gt;&gt;&nbsp;Visualisation de l'évènement";
   echo "</p>";
 }
 

Modified: trunk/editevent.php
==============================================================================
--- trunk/editevent.php	(original)
+++ trunk/editevent.php	Fri Sep 26 20:17:54 2008
@@ -52,7 +52,7 @@
 
   if ($ret == FALSE)
     {
-      error ("La requête <i>" . $sql . "</i> a échoué");
+      error ("La requête <i>" . $sql . "</i> a échoué");
       return -1;
     }
 
@@ -71,31 +71,31 @@
   if ($user)
     $modifier = $user->get_login();
   else
-    $modifier = "le soumetteur de l'évènement";
+    $modifier = "le soumetteur de l'évènement";
 
   if ($oldevent->moderated)
     {
       calendar_mail ($moderatorlist, "",
-		     "Édition de l'évènement validé '" . $title . "'",
+		     "Édition de l'évènement validé '" . $title . "'",
 		     "Bonjour,\n\n" .
-		     wordwrap("L'évènement validé '" . stripslashes($title) . "' a été modifié par " . $modifier . ".\n") .
-		     "Modifications apportées:\n\n" .
+		     wordwrap("L'évènement validé '" . stripslashes($title) . "' a été modifié par " . $modifier . ".\n") .
+		     "Modifications apportées:\n\n" .
 		     $diff . "\n\n".
-		     "Bonne journée\n\n".
-		     "-- L'équipe de modération");
+		     "Bonne journée\n\n".
+		     "-- L'équipe de modération");
 
       return "showevent.php?id=" . $oldevent->id;
     }
   else
     {
       calendar_mail ($moderatorlist, "",
-		     "Édition de l'évènement '" . $title . "'",
+		     "Édition de l'évènement '" . $title . "'",
 		     "Bonjour,\n\n" .
-		     wordwrap("L'évènement '" . stripslashes($title) . "' a été modifié par " . $modifier . ".\n") .
-		     "Modifications apportées:\n\n" .
+		     wordwrap("L'évènement '" . stripslashes($title) . "' a été modifié par " . $modifier . ".\n") .
+		     "Modifications apportées:\n\n" .
 		     $diff . "\n\n".
-		     "Bonne journée\n\n".
-		     "-- L'équipe de modération");
+		     "Bonne journée\n\n".
+		     "-- L'équipe de modération");
 
       if ($user)
 	return "moderation.php";
@@ -119,15 +119,15 @@
   $ret = $db->query($sql);
   if ($ret == FALSE)
     {
-      put_header("Édition d'un évènement");
-      error ("La requête <i>" . $sql . "</i> a échoué");
+      put_header("Édition d'un évènement");
+      error ("La requête <i>" . $sql . "</i> a échoué");
       put_footer();
       exit;
     }
 
   if (mysql_num_rows($ret) != 1)
     {
-      put_header("Édition d'un évènement");
+      put_header("Édition d'un évènement");
       error("Hash d'identification non reconnu");
       put_footer();
       exit;
@@ -164,19 +164,19 @@
   if ($returnaddr != "")
     header("Location: " . $returnaddr);
 
-  put_header("Édition d'un évènement");
-  echo "<p>Les modifications sur l'évènement <i>" . $_POST['__event_title'] . "</i> ont bien été enregistrées.</p>";
+  put_header("Édition d'un évènement");
+  echo "<p>Les modifications sur l'évènement <i>" . $_POST['__event_title'] . "</i> ont bien été enregistrées.</p>";
   put_footer();
 
   exit;
 }
 
-put_header("Édition d'un évènement");
+put_header("Édition d'un évènement");
 
 $event = fetch_event($db, $id);
 if (! $event)
 {
-  echo "<p>Pas d'évènement avec cet ID</p>";
+  echo "<p>Pas d'évènement avec cet ID</p>";
   put_footer();
   exit;
 }
@@ -223,20 +223,20 @@
 if ($user)
 {
   echo '<p class="moderationheader">';
-  echo "<a href=\"moderation.php\">Modération</a>&nbsp;&gt;&gt;&gt;&nbsp;Prévisualisation de l'évènement";
+  echo "<a href=\"moderation.php\">Modération</a>&nbsp;&gt;&gt;&gt;&nbsp;Prévisualisation de l'évènement";
   echo "</p>";
 }
 else
 {
   echo '<p class="moderationheader">';
-  echo "&gt;&gt;&gt;&nbsp;Prévisualisation de l'évènement";
+  echo "&gt;&gt;&gt;&nbsp;Prévisualisation de l'évènement";
   echo "</p>";
 }
 
 if ($event->moderated)
 {
   echo '<div class="moderationbox">';
-  echo '<p style="font-weight: bold;">Attention, cet évènement est déjà modéré. Toute modification sera immédiatement visible sur le site.</p>';
+  echo '<p style="font-weight: bold;">Attention, cet évènement est déjà modéré. Toute modification sera immédiatement visible sur le site.</p>';
   echo '</div>';
 }
 
@@ -249,13 +249,13 @@
 if ($user)
 {
   echo '<p class="moderationheader">';
-  echo "<a href=\"moderation.php\">Modération</a>&nbsp;&gt;&gt;&gt;&nbsp;Édition de l'évènement";
+  echo "<a href=\"moderation.php\">Modération</a>&nbsp;&gt;&gt;&gt;&nbsp;Édition de l'évènement";
   echo "</p>";
 }
 else
 {
   echo '<p class="moderationheader">';
-  echo "&gt;&gt;&gt;&nbsp;Édition de l'évènement";
+  echo "&gt;&gt;&gt;&nbsp;Édition de l'évènement";
   echo "</p>";
 }
 

Modified: trunk/funcs.inc.php
==============================================================================
--- trunk/funcs.inc.php	(original)
+++ trunk/funcs.inc.php	Fri Sep 26 20:17:54 2008
@@ -1,7 +1,7 @@
 <?php
 
 /* Copyright 2005-2007
- * - Mélanie Bats <melanie POINT bats CHEZ utbm POINT fr>
+ * - Mélanie Bats <melanie POINT bats CHEZ utbm POINT fr>
  * - Thomas Petazzoni <thomas POINT petazzoni CHEZ enix POINT org>
  *
  * This program is free software; you can redistribute it and/or
@@ -36,7 +36,7 @@
 
 function calendar_setlocale()
 {
-  if(setlocale(LC_TIME, "fr_FR") == false)
+  if(setlocale(LC_TIME, "fr_FR.utf8") == false)
     {
       echo "Erreur locales";
     }
@@ -57,12 +57,12 @@
 
   if ($region_list == FALSE)
     {
-      error ("Erreur lors de la recherche des régions");
+      error ("Erreur lors de la recherche des régions");
       put_footer();
       exit;
     }
 
-  echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>";
+  echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
     ?>
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -70,13 +70,13 @@
 
 <head>
 	<title>L'Agenda du Libre - <?php echo $title;?></title>
-	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 	<link rel="stylesheet" type="text/css" href="calendar.css" title="Officielle" />
         <link rel="alternate stylesheet" type="text/css" href="calendar-old.css" title="Ancienne version" />
         <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
 <?php
 
-  rss_feed_header ("rss.php?region=all", "Agenda du Libre, toutes les régions");
+  rss_feed_header ("rss.php?region=all", "Agenda du Libre, toutes les régions");
 
   while ($row = mysql_fetch_object($region_list))
     {
@@ -120,7 +120,7 @@
 	if (!tinyMCE.getInstanceById('__event_description'))
 	{
 		tinyMCE.execCommand('mceAddControl', false, '__event_description');
-		document.getElementById('togglegeditor_text').innerHTML = 'Désactiver ';
+		document.getElementById('togglegeditor_text').innerHTML = 'Désactiver ';
 	}
 	else
 	{
@@ -142,14 +142,14 @@
 
 <div class="main">
 <div id="important">
- <!-- <p>Restez informé en utilisant les <a href="rsslist.php">flux RSS</a> ou les <a href="icallist.php">calendriers</a>&nbsp;!</p> -->
+ <!-- <p>Restez informé en utilisant les <a href="rsslist.php">flux RSS</a> ou les <a href="icallist.php">calendriers</a>&nbsp;!</p> -->
  <p style="text-align: left; margin-left: 0.5em;">
-  <b>Nouveautés <i>AdL</i></b><br/>
-  Une <a href="map.php">nouvelle carte</a> des évènements et des GULLs, et la possibilité d'éditer et d'annuler les évènements après modération !
+  <b>Nouveautés <i>AdL</i></b><br/>
+  Une <a href="map.php">nouvelle carte</a> des évènements et des GULLs, et la possibilité d'éditer et d'annuler les évènements après modération !
  </p>
 </div>
 <h1><a href="index.php">L'Agenda du Libre</a></h1>
-<p id="subtitle"><em>L'agenda des évènements du Logiciel Libre en France</em></p>
+<p id="subtitle"><em>L'agenda des évènements du Logiciel Libre en France</em></p>
 <?php
    } //'
 
@@ -158,7 +158,7 @@
 ?>
 </div>
 <div class="footer">
-<p><a href="submit.php">Proposer un évènement</a> - <a href="rsslist.php">Flux RSS</a> - <a href="icallist.php">Calendriers iCal</a> - <a href="map.php">Carte</a> - <a href="tags.php">Tags</a> - <a href="infos.php">Informations</a> - <a href="stats.php">Statistiques</a> - <a href="mailto:moderateurs CHEZ agendadulibre POINT org">Contact</a> - <a href="moderation.php">Modération</a></p>
+<p><a href="submit.php">Proposer un évènement</a> - <a href="rsslist.php">Flux RSS</a> - <a href="icallist.php">Calendriers iCal</a> - <a href="map.php">Carte</a> - <a href="tags.php">Tags</a> - <a href="infos.php">Informations</a> - <a href="stats.php">Statistiques</a> - <a href="mailto:moderateurs CHEZ agendadulibre POINT org">Contact</a> - <a href="moderation.php">Modération</a></p>
 </div>
 </body>
 </html>
@@ -194,7 +194,7 @@
 
 function date_timestamp2humanreadable($timestamp)
 {
-  return strftime ("%A %d %B %Y à %Hh%M", $timestamp);
+  return strftime ("%A %d %B %Y à %Hh%M", $timestamp);
 }
 
 function onlyday_timestamp2humanreadable($timestamp)
@@ -226,7 +226,7 @@
 {
   global $debugaddress;
 
-  $title = '=?iso8859-1?B?'.base64_encode("[Agenda du Libre] " . $title).'?=';
+  $title = '=?UTF-8?B?'.base64_encode("[Agenda du Libre] " . $title).'?=';
 
   if (isset($debugaddress) && $debugaddress != "")
     $to = $debugaddress;
@@ -235,7 +235,7 @@
 	      /* Message headers */
 	      "From: moderateurs at agendadulibre.org\n" .
 	      "Reply-To: moderateurs at agendadulibre.org\n" .
-	      "Content-Type: text/plain; charset=ISO-8859-1\n" .
+	      "Content-Type: text/plain; charset=UTF-8\n" .
 	      "Content-Transfert-Encoding: 8bit\n" .
 	      ($cc ? "CC: " . $cc . "\n" : "") .
 	      "X-Mailer: Agenda du Libre\n");
@@ -314,7 +314,7 @@
 	{
 	  echo "   <li><a href=\"showevent.php?id=" . $ret->id . "\">\n";
 	  echo "    <b>" . str_replace("-", " ", stripslashes($ret->city)) . "</b>: ";
-	  echo htmlentities(stripslashes($ret->title));
+	  echo stripslashes($ret->title);
 	  echo "    </a></li>\n";
 	}
 
@@ -327,14 +327,14 @@
   if ($year == 2007 && $month == 3 && $day >= 17 && $day <= 25)
     {
       echo "<a href=\"http://2007.libre-en-fete.net\">";
-      echo "<img title=\"Libre en F&ecirc;te\" src=\"lef-2007-small.png\" style=\"float: right; border: 0;\" alt=\"Libre en Fête 2007\"/>";
+      echo "<img title=\"Libre en F&ecirc;te\" src=\"lef-2007-small.png\" style=\"float: right; border: 0;\" alt=\"Libre en Fête 2007\"/>";
       echo "</a>";
     }
 
   if ($year == 2008 && $month == 3 && $day >= 16 && $day <= 31)
     {
       echo "<a href=\"http://www.libre-en-fete.net\">";
-      echo "<img title=\"Libre en F&ecirc;te\" src=\"lef-2007-small.png\" style=\"float: right; border: 0;\" alt=\"Libre en Fête 2008\"/>";
+      echo "<img title=\"Libre en F&ecirc;te\" src=\"lef-2007-small.png\" style=\"float: right; border: 0;\" alt=\"Libre en Fête 2008\"/>";
       echo "</a>";
     }
 }
@@ -479,12 +479,12 @@
   $ret = $db->query ("select * from regions");
   if ($ret == FALSE)
     {
-      error ("Erreur lors de la recherche des régions");
+      error ("Erreur lors de la recherche des régions");
       put_footer();
       exit;
     }
 
-  echo "<option value=\"all\">Toutes les régions</option>\n";
+  echo "<option value=\"all\">Toutes les régions</option>\n";
 
   while ($row = mysql_fetch_object($ret))
     {
@@ -538,12 +538,12 @@
   $ret = $db->query ("select * from regions");
   if ($ret == FALSE)
     {
-      error ("Erreur lors de la recherche des régions");
+      error ("Erreur lors de la recherche des régions");
       put_footer();
       exit;
     }
 
-  echo "<option value=\"all\">Toutes les régions</option>\n";
+  echo "<option value=\"all\">Toutes les régions</option>\n";
 
   while ($row = mysql_fetch_object($ret))
     {
@@ -592,7 +592,7 @@
 
   if (! $result)
     {
-      error ("Aucun évènement avec l'ID " . $id);
+      error ("Aucun évènement avec l'ID " . $id);
       return FALSE;
     }
 
@@ -604,7 +604,7 @@
   $ret = $db->query ("select * from regions where id=" . $db->quote_smart($id));
 
   if ($ret == FALSE)
-    return "Région inconnue";
+    return "Région inconnue";
 
   $row = mysql_fetch_object ($ret);
 
@@ -617,7 +617,7 @@
 
   if ($ret == FALSE)
     {
-      error ("Erreur durant la requête");
+      error ("Erreur durant la requête");
       return;
     }
 
@@ -666,7 +666,7 @@
   $start_day = onlyday_timestamp2humanreadable($start);
   if ($start_day == onlyday_timestamp2humanreadable($end)) {
     $date = "<p>Le " .  $start_day . ", de " 
-      . onlyhour_timestamp2humanreadable($start) . " à "
+      . onlyhour_timestamp2humanreadable($start) . " à "
       . onlyhour_timestamp2humanreadable($end) . ".</p>\n";
   } else {
     $date = "<p>Du " . date_timestamp2humanreadable($start)
@@ -677,7 +677,7 @@
   $result .= "<h3>Date et lieu</h3>\n";
   $result .= $date;
 
-  $result .= "<p>À <i><a href=\"http://fr.wikipedia.org/wiki/" . $city . "\">" . $city . "</a></i>, <a href=\"http://fr.wikipedia.org/wiki/" . $region . "\">" . $region . "</a></p>\n\n";
+  $result .= "<p>À <i><a href=\"http://fr.wikipedia.org/wiki/" . $city . "\">" . $city . "</a></i>, <a href=\"http://fr.wikipedia.org/wiki/" . $region . "\">" . $region . "</a></p>\n\n";
   $result .= "<h3>Description</h3>\n";
   $result .= $description . "\n\n";
   $result .= "<h3>Informations</h3>\n";
@@ -685,7 +685,7 @@
   $result .= "<p>Contact: <a href=\"mailto:" . $contact . "\">" . $contact . "</a></p>\n";
 
   if ($moderation)
-    $result .= "<p>Évènement à portée <b>" . ($locality == 1 ? "nationale" : "locale") . "</b></p>";
+    $result .= "<p>Évènement à portée <b>" . ($locality == 1 ? "nationale" : "locale") . "</b></p>";
 
   if ($tags != "")
     {
@@ -725,9 +725,9 @@
 
   $str =
     "Titre       : " . $title . "\n" .
-    "Début       : " . $start . "\n".
+    "Début       : " . $start . "\n".
     "Fin         : " . $end . "\n" .
-    "Région      : " . $region . "\n" .
+    "Région      : " . $region . "\n" .
     "Ville       : " . $city . "\n" .
     "URL         : " . $url . "\n".
     "Contact     : " . $contact . "\n" .
@@ -840,14 +840,14 @@
     Titre:
    </td>
    <td>
-    <b>Décrivez en moins de 5 mots votre évènement, sans y indiquer le lieu, la ville ou la date.</b><br/>
+    <b>Décrivez en moins de 5 mots votre évènement, sans y indiquer le lieu, la ville ou la date.</b><br/>
     <input type="text" size="70" name="__event_title" value="<?php echo $title;?>"/><br/><br/>
    </td>
   </tr>
 
   <tr>
    <td>
-    Début:
+    Début:
    </td>
    <td>
     <?php generate_date_forms("start", $start); ?>
@@ -868,11 +868,11 @@
     Description:
    </td>
    <td>
-    <b>Décrivez de la manière la plus complète possible votre évènement.</b><br/>
-    <i>Les balises HTML autorisées sont &lt;p&gt;, &lt;b&gt;, &lt;i&gt;, &lt;ul&gt;, &lt;ol&gt;, &lt;li&gt;, &lt;br/&gt;, &lt;a&gt;. Merci d'utiliser ces balises pour formater la description de votre évènement.</i><br/>
-    <i>Veillez à utiliser les balises <code>&lt;p&gt;</code> pour formater les paragraphes, et non la balise &lt;br/&gt;.</i><br/>
+    <b>Décrivez de la manière la plus complète possible votre évènement.</b><br/>
+    <i>Les balises HTML autorisées sont &lt;p&gt;, &lt;b&gt;, &lt;i&gt;, &lt;ul&gt;, &lt;ol&gt;, &lt;li&gt;, &lt;br/&gt;, &lt;a&gt;. Merci d'utiliser ces balises pour formater la description de votre évènement.</i><br/>
+    <i>Veillez à utiliser les balises <code>&lt;p&gt;</code> pour formater les paragraphes, et non la balise &lt;br/&gt;.</i><br/>
     <textarea rows="25" cols="90" name="__event_description" id="__event_description"><?php echo $description;?></textarea>
-    <p class="toggleeditor_link"><a href="javascript:toggleEditor()"><span id="togglegeditor_text">Désactiver</span> l'éditeur visuel</a></p>
+    <p class="toggleeditor_link"><a href="javascript:toggleEditor()"><span id="togglegeditor_text">Désactiver</span> l'éditeur visuel</a></p>
     <br/>
    </td>
   </tr>
@@ -888,7 +888,7 @@
 
   <tr>
    <td>
-    Région:
+    Région:
    </td>
    <td>
     <?php region_select_form($db, "__event_region", $region); ?><br/>
@@ -897,7 +897,7 @@
 
   <tr>
    <td>
-    Portée:
+    Portée:
    </td>
    <td>
     <select name="__event_locality">
@@ -922,7 +922,7 @@
     URL:
    </td>
    <td>
-       <i>Lien <b>direct</b> vers une page donnant plus d'informations sur l'évènement (lieu précis, horaire précis, programme précis...)</i><br/>
+       <i>Lien <b>direct</b> vers une page donnant plus d'informations sur l'évènement (lieu précis, horaire précis, programme précis...)</i><br/>
     <input type="text" size="70" name="__event_url" value="<?php echo $url;?>"/><br/>
    </td>
   </tr>
@@ -932,7 +932,7 @@
     Contact:
    </td>
    <td>
-    <i>Adresse e-mail de contact. Elle sera affichée de manière peu compréhensible par les spammeurs.</i><br/>
+    <i>Adresse e-mail de contact. Elle sera affichée de manière peu compréhensible par les spammeurs.</i><br/>
     <input type="text" size="70" name="__event_contact" value="<?php echo $contact;?>"/><br/>
    </td>
   </tr>
@@ -942,7 +942,7 @@
     Soumetteur:
    </td>
    <td>
-    <i>Adresse e-mail du soumetteur de l'évènement. Elle ne sera utilisée que par les modérateurs pour contacter la personne ayant proposé l'évènement, pour lui informer de sa validation ou de son rejet. Si cette adresse n'est pas présente, l'adresse de contact sera utilisée</i><br/>
+    <i>Adresse e-mail du soumetteur de l'évènement. Elle ne sera utilisée que par les modérateurs pour contacter la personne ayant proposé l'évènement, pour lui informer de sa validation ou de son rejet. Si cette adresse n'est pas présente, l'adresse de contact sera utilisée</i><br/>
     <input type="text" size="70" name="__event_submitter" value="<?php echo $submitter;?>"/><br/>
    </td>
   </tr>
@@ -952,13 +952,13 @@
     Tags:
    </td>
    <td>
-    <i>Tags pour l'évènement. Les tags sont séparés par des
+    <i>Tags pour l'évènement. Les tags sont séparés par des
        espaces. Un tag ne peut contenir que des lettres minuscules,
        des chiffres et des tirets.</i><br/>
 
        Dans les tags, indiquez le nom de la ou des associations
        organisatrices. N'indiquez pas le nom de la ville ou de la
-       région.<br/>
+       région.<br/>
 
     <input type="text" size="70" name="__event_tags" value="<?php echo $tags; ?>"/><br/>
    </td>

Modified: trunk/ical.php
==============================================================================
--- trunk/ical.php	(original)
+++ trunk/ical.php	Fri Sep 26 20:17:54 2008
@@ -38,15 +38,15 @@
   echo "PRODID:-//AgendaDuLibre.org\n";
   echo "X-WR-CALNAME:Agenda du Libre";
   if ($region != "all")
-    echo utf8_encode(" - région ") . $region;
+    echo " - région " . $region;
   if ($tag != '')
     echo " - tag " . $tag;
   echo "\n";
   echo "X-WR-TIMEZONE:Europe/Paris\n";
   echo "CALSCALE:GREGORIAN\n";
-  echo "X-WR-CALDESC:" . utf8_encode("L'Agenda des évènements autour du Libre");
+  echo "X-WR-CALDESC:L'Agenda des évènements autour du Libre";
   if ($region != "all")
-    echo utf8_encode(" en région ") . $region;
+    echo " en région " . $region;
   if ($tag != '')
     echo ", tag " . $tag;
   echo "\n";
@@ -98,23 +98,23 @@
 $list = get_events ($db, $region, $tag);
 if ($list == FALSE)
 {
-  echo "Erreur lors de la récupération des évènements";
+  echo "Erreur lors de la récupération des évènements";
   exit;
 }
 
 if ($region != "all")
-  ical_start_calendar(utf8_encode(region_find($db, $region)), $tag);
+  ical_start_calendar(region_find($db, $region), $tag);
 else
   ical_start_calendar($region, $tag);
 
 while ($event = mysql_fetch_object($list))
 {
-  ical_display_event ($event->id, utf8_encode(strip_tags($event->city)),
+  ical_display_event ($event->id, strip_tags($event->city),
 		      date_mysql2timestamp ($event->start_time),
 		      date_mysql2timestamp ($event->end_time),
-		      utf8_encode(strip_tags($event->title)),
+		      strip_tags($event->title),
 		      calendar_absolute_url("showevent.php?id=" . $event->id),
-		      utf8_encode("Un évènement de l'Agenda du Libre"));
+		      "Un évènement de l'Agenda du Libre");
 }
 
 ical_end_calendar();

Modified: trunk/moderation.php
==============================================================================
--- trunk/moderation.php	(original)
+++ trunk/moderation.php	Fri Sep 26 20:17:54 2008
@@ -33,17 +33,17 @@
   header("Location:" . calendar_absolute_url());
 }
 
-put_header("Modération");
+put_header("Modération");
 
-echo "<h2>Évènements à modérer</h2>\n";
+echo "<h2>Évènements à modérer</h2>\n";
 
-echo "<p style=\"font-weight: bold; text-align: center;\">Modérateurs, merci de lire et de tenir compte des <a href=\"moderation-howto.php\">recommandations de modération</a>.</p>";
+echo "<p style=\"font-weight: bold; text-align: center;\">Modérateurs, merci de lire et de tenir compte des <a href=\"moderation-howto.php\">recommandations de modération</a>.</p>";
 
 $ret = $db->query ("select id, title, start_time, end_time, city, region from events where moderated=0 order by start_time");
 
 if ($ret == FALSE)
 {
-  echo "<p class=\"error\">Requête SQL invalide</p>";
+  echo "<p class=\"error\">Requête SQL invalide</p>";
   put_footer();
   exit;
 }
@@ -54,7 +54,7 @@
 echo "<td><b>Titre</b></td>\n";
 echo "<td><b>Date</b></td>\n";
 echo "<td><b>Ville</b></td>\n";
-echo "<td><b>Région</b></td>\n";
+echo "<td><b>Région</b></td>\n";
 echo "<td><b>Actions</b></td>\n";
 echo "</tr>";
 
@@ -69,7 +69,7 @@
   $start_day = onlyday_mysql2humanreadable($row->start_time);
   if ($start_day == onlyday_mysql2humanreadable($row->end_time)) {
     $date = "Le " .  $start_day . ", de "
-      . onlyhour_mysql2humanreadable($row->start_time) . " à "
+      . onlyhour_mysql2humanreadable($row->start_time) . " à "
       . onlyhour_mysql2humanreadable($row->end_time);
   } else {
     $date = "Du " . date_mysql2humanreadable($row->start_time)
@@ -82,7 +82,7 @@
   echo "<td>" . stripslashes($row->city) . "</td>\n";
   echo "<td>" . stripslashes(region_find($db, $row->region)) . "</td>\n";
   echo "<td>";
-  echo "<a href=\"editevent.php?id=" . $row->id . "\">Éditer</a>&nbsp;-&nbsp;";
+  echo "<a href=\"editevent.php?id=" . $row->id . "\">Éditer</a>&nbsp;-&nbsp;";
   echo "<a href=\"validateevent.php?id=" . $row->id . "\">Valider</a>&nbsp;-&nbsp;";
   echo "<a href=\"rejectevent.php?id=" . $row->id . "\">Refuser</a><br/>";
   echo "<a href=\"requestinfosevent.php?id=" . $row->id . "\">Demander des infos</a>";
@@ -94,7 +94,7 @@
 
 echo "</table>\n";
 
-echo "<p style='text-align: center;'><a href='?disconnect=1'>Se déconnecter</a></p>";
+echo "<p style='text-align: center;'><a href='?disconnect=1'>Se déconnecter</a></p>";
 
 put_footer();
 

Modified: trunk/rejectevent.php
==============================================================================
--- trunk/rejectevent.php	(original)
+++ trunk/rejectevent.php	Fri Sep 26 20:17:54 2008
@@ -37,13 +37,13 @@
   $id = get_safe_integer('id', 0);
 
   if ($_POST['reason'] == "out-of-subject")
-    $reason = wordwrap("Toutefois, l'évènement proposé n'a pour l'instant pas retenu l'attention des modérateurs. En effet, l'évènement proposé ne concerne pas le Logiciel Libre, ou bien le lien avec le Logiciel Libre n'est pas évident dans la formulation actuelle, ou alors il s'agit d'un évènement ou d'une formation payante et coûteuse. Si l'évènement concerne vraiment le Logiciel Libre et qu'il ne s'agit pas d'une formation payante, n'hésitez pas à le soumettre à nouveau avec une description plus claire.");
+    $reason = wordwrap("Toutefois, l'évènement proposé n'a pour l'instant pas retenu l'attention des modérateurs. En effet, l'évènement proposé ne concerne pas le Logiciel Libre, ou bien le lien avec le Logiciel Libre n'est pas évident dans la formulation actuelle, ou alors il s'agit d'un évènement ou d'une formation payante et coûteuse. Si l'évènement concerne vraiment le Logiciel Libre et qu'il ne s'agit pas d'une formation payante, n'hésitez pas à le soumettre à nouveau avec une description plus claire.");
   else if ($_POST['reason'] == "not-enough-infos")
-    $reason = wordwrap("Votre évènement a tout à fait sa place dans l'Agenda du Libre, mais les modérateurs trouvent que la description de celui-ci n'est pas assez complète pour être validée.\n\nLa description doit être compréhensible par un nouveau venu dans le monde du Libre, et doit donc préciser le principe de la rencontre, le public visé, la rôle du ou des Logiciels Libres qui seront exposés, la date et le lieu précis de la rencontre. Même si il s'agit d'une rencontre régulière, n'hésitez pas à répéter à chaque fois ces informations, elles sont importantes.\n\nNous vous invitons donc vivement à soumettre à nouveau cet évènement avec une description plus complète.");
+    $reason = wordwrap("Votre évènement a tout à fait sa place dans l'Agenda du Libre, mais les modérateurs trouvent que la description de celui-ci n'est pas assez complète pour être validée.\n\nLa description doit être compréhensible par un nouveau venu dans le monde du Libre, et doit donc préciser le principe de la rencontre, le public visé, la rôle du ou des Logiciels Libres qui seront exposés, la date et le lieu précis de la rencontre. Même si il s'agit d'une rencontre régulière, n'hésitez pas à répéter à chaque fois ces informations, elles sont importantes.\n\nNous vous invitons donc vivement à soumettre à nouveau cet évènement avec une description plus complète.");
   else if ($_POST['reason'] == "duplicate")
-    $reason = wordwrap("Votre évènement a tout à fait sa place dans l'Agenda du Libre, mais il est déjà enregistré dans celui-ci.");
+    $reason = wordwrap("Votre évènement a tout à fait sa place dans l'Agenda du Libre, mais il est déjà enregistré dans celui-ci.");
   else if ($_POST['reason'] == "custom")
-    $reason = wordwrap("Toutefois, votre évènement n'a pour le moment pas retenu l'attention des modérateurs, pour la raison suivante: " . stripslashes($_POST['customtext']));
+    $reason = wordwrap("Toutefois, votre évènement n'a pour le moment pas retenu l'attention des modérateurs, pour la raison suivante: " . stripslashes($_POST['customtext']));
 
   $row = fetch_event($db, $id);
   if (! $row)
@@ -54,19 +54,19 @@
   $ret = $db->query ($sql);
   if ($ret == FALSE)
     {
-      error ("La requête <i>" . $sql . "</i> a échoué");
+      error ("La requête <i>" . $sql . "</i> a échoué");
       return -1;
     }
 
   /* Send email */
-  calendar_mail ($row->submitter, $moderatorlist, "Évènement '" . stripslashes($row->title) . "' refusé",
+  calendar_mail ($row->submitter, $moderatorlist, "Évènement '" . stripslashes($row->title) . "' refusé",
 		 "Bonjour,\n\n" .
-		 "Vous avez soumis l'évènement suivant dans l'Agenda du Libre, et nous\n" .
+		 "Vous avez soumis l'évènement suivant dans l'Agenda du Libre, et nous\n" .
 		 "vous remercions de cette contribution.\n\n" .
 		 $reason .
-		 "\n\nPour toute réclamation, n'hésitez pas à contacter l'équipe de modérateurs " .
-		 "à l'adresse moderateurs at agendadulibre.org." .
-		 "\n\nPour rappel, voici le contenu de votre évènement:\n" .
+		 "\n\nPour toute réclamation, n'hésitez pas à contacter l'équipe de modérateurs " .
+		 "à l'adresse moderateurs at agendadulibre.org." .
+		 "\n\nPour rappel, voici le contenu de votre évènement:\n" .
 		 "=====================================================\n" .
 		 format_ascii_event ($db, $row->title, date_mysql2timestamp($row->start_time),
 				     date_mysql2timestamp($row->end_time),
@@ -74,7 +74,7 @@
 				     $row->url, $row->contact, $row->submitter, $row->tags) . "\n" .
 		 "=====================================================\n\n" .
 		 "Avec tous nos remerciements pour votre contribution,\n\n" .
-		 "-- \nL'équipe des modérateurs de l'Agenda du Libre");
+		 "-- \nL'équipe des modérateurs de l'Agenda du Libre");
 
   header("Location: moderation.php");
   exit;
@@ -82,35 +82,35 @@
 
 $id = get_safe_integer('id', 0);
 
-put_header("Rejet d'un évènement");
+put_header("Rejet d'un évènement");
 
 $event = fetch_event($db, $id);
 if (! $event)
 {
-  echo "<p>Pas d'évènement avec cet ID</p>";
+  echo "<p>Pas d'évènement avec cet ID</p>";
   put_footer();
   exit;
 }
 
 if ($event->moderated)
 {
-  echo "<p>Évènement déjà modéré</p>";
+  echo "<p>Évènement déjà modéré</p>";
   put_footer();
   exit;
 }
 
 echo '<p class="moderationheader">';
-echo "<a href=\"moderation.php\">Modération</a>&nbsp;&gt;&gt;&gt&nbsp;Rejet de l'évènement";
+echo "<a href=\"moderation.php\">Modération</a>&nbsp;&gt;&gt;&gt&nbsp;Rejet de l'évènement";
 echo "</p>";
 
 echo '<div class="moderationbox">';
 echo '<form action="rejectevent.php?id=' . $id . '" method="post">';
-echo '<p style="text-align: center;">Quel motif souhaitez-vous associer au rejet de cet évènement&nbsp;?</p>';
+echo '<p style="text-align: center;">Quel motif souhaitez-vous associer au rejet de cet évènement&nbsp;?</p>';
 echo '<p>';
 echo '<input type="radio" name="reason" value="out-of-subject" onClick="document.getElementById(\'customtext\').style.display = \'none\';">Hors sujet</input><br/>';
 echo '<input type="radio" name="reason" value="not-enough-infos" onClick="document.getElementById(\'customtext\').style.display = \'none\';">Pas assez d\'informations</input><br/>';
-echo '<input type="radio" name="reason" value="duplicate" onClick="document.getElementById(\'customtext\').style.display = \'none\';">Évènement déjà enregistré</input><br/>';
-echo '<input type="radio" name="reason" value="custom" onClick="document.getElementById(\'customtext\').style.display = \'block\';">Raison spécifique (précisez)</input><br/>';
+echo '<input type="radio" name="reason" value="duplicate" onClick="document.getElementById(\'customtext\').style.display = \'none\';">Évènement déjà enregistré</input><br/>';
+echo '<input type="radio" name="reason" value="custom" onClick="document.getElementById(\'customtext\').style.display = \'block\';">Raison spécifique (précisez)</input><br/>';
 echo '<textarea id="customtext" style="display: none;" cols="80" rows="10" name="customtext"></textarea>';
 echo '</p>';
 echo '<input name="__event_rejection_confirm" type="submit" value="Rejeter"/>&nbsp;';

Modified: trunk/requestinfosevent.php
==============================================================================
--- trunk/requestinfosevent.php	(original)
+++ trunk/requestinfosevent.php	Fri Sep 26 20:17:54 2008
@@ -40,32 +40,32 @@
   if (! $event || $event->moderated)
     {
       put_header();
-      echo "<p>Opération interdite</p>";
+      echo "<p>Opération interdite</p>";
       put_footer();
       exit;
     }
 
   $text =
     "Bonjour,\n\n" .
-    "Nous avons bien reçu votre proposition d'évènement '" .
+    "Nous avons bien reçu votre proposition d'évènement '" .
     stripslashes($event->title) . "', et celui-ci a toute sa " .
-    "place dans l'Agenda du Libre. Néanmoins, avant d'être " .
-    " validé, nous avons besoin de quelques informations " .
-    "complémentaires sur cet évènement :\n\n" .
+    "place dans l'Agenda du Libre. Néanmoins, avant d'être " .
+    " validé, nous avons besoin de quelques informations " .
+    "complémentaires sur cet évènement :\n\n" .
     $_POST["__text"] . "\n\n" .
-    "Nous vous invitons à ajouter ces informations en éditant " .
-    "directement l'évènement à l'adresse suivante : \n\n" .
+    "Nous vous invitons à ajouter ces informations en éditant " .
+    "directement l'évènement à l'adresse suivante : \n\n" .
     calendar_absolute_url("editevent.php?id=" . $event->id
 			  . "&secret=" . $event->secret) . "\n\n" .
     "Avec tous nos remerciements pour votre contribution,\n\n" .
     "-- \n" .
-    "L'équipe des modérateurs de l'Agenda du Libre";
+    "L'équipe des modérateurs de l'Agenda du Libre";
 
   $text = wordwrap($text);
 
 
   calendar_mail($event->submitter, $moderatorlist,
-		"Demande d'informations sur l'évènement '" .
+		"Demande d'informations sur l'évènement '" .
 		stripslashes($event->title) . "'", $text);
 
   header("Location: moderation.php");
@@ -73,51 +73,51 @@
 
 $id = get_safe_integer('id', 0);
 
-put_header("Demande d'informations sur un évènement");
+put_header("Demande d'informations sur un évènement");
 
 $event = fetch_event($db, $id);
 if (! $event)
 {
-  echo "<p>Pas d'évènement avec cet ID</p>";
+  echo "<p>Pas d'évènement avec cet ID</p>";
   put_footer();
   exit;
 }
 
 if ($event->moderated)
 {
-  echo "<p>Évènement déjà modéré</p>";
+  echo "<p>Évènement déjà modéré</p>";
   put_footer();
   exit;
 }
 
 echo '<p class="moderationheader">';
-echo "<a href=\"moderation.php\">Modération</a>&nbsp;&gt;&gt;&gt&nbsp;Demande d'informations sur l'évènement";
+echo "<a href=\"moderation.php\">Modération</a>&nbsp;&gt;&gt;&gt&nbsp;Demande d'informations sur l'évènement";
 echo "</p>";
 
 ?>
 
 <div class="moderationbox">
-<h2>Rédaction du message</h2>
+<h2>Rédaction du message</h2>
 
 <form action="requestinfosevent.php?id=<?php echo $id ?>" method="post">
 <p>Bonjour,</p>
 
-<p>Nous avons bien reçu votre proposition d'évènement '<? echo
+<p>Nous avons bien reçu votre proposition d'évènement '<? echo
 $event->title; ?>', et celui-ci a toute sa place dans l'Agenda du
-Libre. Néanmoins, avant d'être validé, nous avons besoin de quelques
-informations complémentaires sur cet évènement :</p>
+Libre. Néanmoins, avant d'être validé, nous avons besoin de quelques
+informations complémentaires sur cet évènement :</p>
 
 <textarea id="__text" cols="80" rows="10" name="__text"></textarea>
 
-<p>Nous vous invitons à ajouter ces informations en éditant directement
-l'évènement à l'adresse suivante :</p>
+<p>Nous vous invitons à ajouter ces informations en éditant directement
+l'évènement à l'adresse suivante :</p>
 
 <p><?php echo calendar_absolute_url("editevent.php?id=" . $event->id
 . "&secret=" . $event->secret) ?></p>
 
 <p>Avec tous nos remerciements pour votre contribution,</p>
 
-<p>L'équipe des modérateurs de l'Agenda du Libre</p>
+<p>L'équipe des modérateurs de l'Agenda du Libre</p>
 
 <input name="__event_requestinfo_send" type="submit" value="Envoyer"/>
 <input name="__event_requestinfo_cancel" type="submit" value="Annuler"/>

Modified: trunk/rss.php
==============================================================================
--- trunk/rss.php	(original)
+++ trunk/rss.php	Fri Sep 26 20:17:54 2008
@@ -1,7 +1,7 @@
 <?php
 
 /* Copyright 2004-2007
- * - Mélanie Bats <melanie POINT bats CHEZ utbm POINT fr>
+ * - Mélanie Bats <melanie POINT bats CHEZ utbm POINT fr>
  * - Thomas Petazzoni <thomas POINT petazzoni CHEZ enix POINT org>
  *
  * This program is free software; you can redistribute it and/or
@@ -32,14 +32,9 @@
  * Function that replaces all xml-incompatible characters with they
  * XML-compatible equivalent
  */
-function xmlentities($string, $quote_style=ENT_COMPAT)
+function xmlentities($string)
 {
-   $trans = get_html_translation_table(HTML_ENTITIES, $quote_style);
-
-   foreach ($trans as $key => $value)
-       $trans[$key] = '&#'.ord($key).';';
-
-   return strtr($string, $trans);
+  return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
 }
 
 function get_events ($db, $region, $tag, $daylimit)
@@ -86,7 +81,7 @@
 if ($region_num != "all")
   $region = region_find($db, $region);
 else
-  $region = "Toutes les régions";
+  $region = "Toutes les régions";
 
 $daylimit = get_safe_integer('daylimit', 30);
 
@@ -97,9 +92,9 @@
 
 $map = get_safe_integer('map', 0);
 
-Header("Content-type: text/xml; charset=iso-8859-1");
+Header("Content-type: text/xml; charset=utf-8");
 
-echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
+echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
 
 echo "<rdf:RDF\n";
 echo "   xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n";
@@ -113,7 +108,7 @@
 
 echo "<channel rdf:about=\"http://www.agendadulibre.org\">\n";
 echo " <title>Agenda du Libre [ " . $region . " ]</title>\n";
-echo " <description>Agenda des évènements autour du Logiciel Libre</description>\n";
+echo " <description>Agenda des évènements autour du Logiciel Libre</description>\n";
 echo " <link>http://www.agendadulibre.org</link>\n";
 echo " <dc:language>fr</dc:language>\n";
 echo " <dc:creator>AgendaDuLibre.org</dc:creator>\n";
@@ -125,7 +120,7 @@
 $list = get_events ($db, $region_num, $tag, $daylimit);
 if ($list == FALSE)
 {
-  echo "Erreur lors de la récupération des évènements";
+  echo "Erreur lors de la récupération des évènements";
   exit;
 }
 
@@ -142,7 +137,7 @@
 $list = get_events ($db, $region_num, $tag, $daylimit);
 if ($list == FALSE)
 {
-  echo "Erreur lors de la récupération des évènements";
+  echo "Erreur lors de la récupération des évènements";
   exit;
 }
 

Modified: trunk/submit.php
==============================================================================
--- trunk/submit.php	(original)
+++ trunk/submit.php	Fri Sep 26 20:17:54 2008
@@ -1,8 +1,7 @@
-
 <?php
 
 /* Copyright 2004-2007
- * - Mélanie Bats <melanie POINT bats CHEZ utbm POINT fr>
+ * - Mélanie Bats <melanie POINT bats CHEZ utbm POINT fr>
  * - Thomas Petazzoni <thomas POINT petazzoni CHEZ enix POINT org>
  *
  * This program is free software; you can redistribute it and/or
@@ -31,10 +30,10 @@
 {
   global $moderatorlist;
 
-  $mail_title = "Nouvel évènement à modérer : '" . $title . "'";
+  $mail_title = "Nouvel évènement à modérer : '" . $title . "'";
 
   $mail_body = "Bonjour,\n\n" .
-    "Un nouvel évènement est à modérer sur\n" . calendar_absolute_url("moderation.php") . "\n\n".
+    "Un nouvel évènement est à modérer sur\n" . calendar_absolute_url("moderation.php") . "\n\n".
     format_ascii_event ($db, $title, $start, $end, $description, $city, $region,
 			$locality, $url, $contact, $submitter, $tags) . "\n\n" .
     "Merci !\n" .
@@ -49,15 +48,15 @@
 			   $region, $locality, $url, $contact, $submitter, $tags,
 			   $secret)
 {
-  $mail_title = "Votre évènement : '" . $title . "' est en attente de modération";
+  $mail_title = "Votre évènement : '" . $title . "' est en attente de modération";
 
   $mail_body = "Bonjour,\n\n" .
-    wordwrap("Votre évènement intitulé '" . $title .
+    wordwrap("Votre évènement intitulé '" . $title .
 	     "', qui aura lieu le '" . date_timestamp2humanreadable($start) .
-	     "' a bien été enregistré dans l'Agenda du Libre. " .
-	     "L'équipe de modération le prendra en charge très prochainement. " .
-	     "Pendant la modération et après celle-ci si votre évènement est validé, " .
-	     "vous pouvez éditer votre évènement à l'adresse:\n" .
+	     "' a bien été enregistré dans l'Agenda du Libre. " .
+	     "L'équipe de modération le prendra en charge très prochainement. " .
+	     "Pendant la modération et après celle-ci si votre évènement est validé, " .
+	     "vous pouvez éditer votre évènement à l'adresse:\n" .
 	     "  " . calendar_absolute_url("editevent.php?id=" . $id . "&secret=" . $secret) . "\n\n" .
 	     "et vous pouvez l'annuler en utilisant l'adresse:\n" .
 	     "  " . calendar_absolute_url("cancelevent.php?id=" . $id . "&secret=" . $secret) . "\n\n") .
@@ -111,25 +110,25 @@
 
   if (strncmp ($url, "http://", 7) && strncmp($url, "https://", 8))
     {
-      error ("URL ne commençant pas par http:// ou https://");
+      error ("URL ne commençant pas par http:// ou https://");
       $error_cnt++;
     }
 
   if ($start <= mktime())
     {
-      error ("Le début de la manifestation est dans le passé.");
+      error ("Le début de la manifestation est dans le passé.");
       $error_cnt++;
     }
 
   if ($end <= mktime())
     {
-      error ("La fin de la manifestation est dans le passé.");
+      error ("La fin de la manifestation est dans le passé.");
       $error_cnt++;
     }
 
   if ($end <= $start)
     {
-      error ("La fin de la manifestation est avant le début");
+      error ("La fin de la manifestation est avant le début");
       $error_cnt++;
     }
 
@@ -158,7 +157,7 @@
 	}
       if (strlen($tag) < 3)
 	{
-	  error("Tag '" . $tag . "' trop court. Les tags doivent faire au moins 3 caractères de long.");
+	  error("Tag '" . $tag . "' trop court. Les tags doivent faire au moins 3 caractères de long.");
 	  $error_cnt++;
 	}
     }
@@ -195,7 +194,7 @@
 
   if ($ret == FALSE)
     {
-      error ("La requête a échoué.");
+      error ("La requête a échoué.");
       return -1;
     }
 
@@ -204,17 +203,17 @@
   notify_submitter ($db, $db->insertid(), $title, $start, $end, $description, $city,
 		    $region, $locality, $url, $contact, $submitter, $tags, $secret);
 
-  echo "<p><b>Votre évènement a bien été ajouté à la liste des évènements en attente de modération." .
-       "Il apparaîtra en ligne dès qu'un modérateur l'aura validé.</b></p>";
+  echo "<p><b>Votre évènement a bien été ajouté à la liste des évènements en attente de modération." .
+       "Il apparaîtra en ligne dès qu'un modérateur l'aura validé.</b></p>";
 
-  echo "<p><a href=\"index.php\">Retour à l'Agenda</a></p>";
+  echo "<p><a href=\"index.php\">Retour à l'Agenda</a></p>";
 
   return 0;
 }
 
-put_header("Soumettre un évènement");
+put_header("Soumettre un évènement");
 
-echo "<h2>Soumettre un évènement</h2>";
+echo "<h2>Soumettre un évènement</h2>";
 
 $start = mktime();
 $end   = mktime() + 60;
@@ -302,79 +301,79 @@
 
 ?>
 
-<p>Cette page permet de soumettre un évènement dans l'Agenda du
-Libre. Celui-ci n'apparaîtra pas automatiquement dans l'Agenda, il
-sera tout d'abord validé par un modérateur. Un courrier
-électronique vous sera envoyé à l'adresse e-mail de contact
-donnée ci-dessous lorsque l'évènement aura été
-modéré.</p>
+<p>Cette page permet de soumettre un évènement dans l'Agenda du
+Libre. Celui-ci n'apparaîtra pas automatiquement dans l'Agenda, il
+sera tout d'abord validé par un modérateur. Un courrier
+électronique vous sera envoyé à l'adresse e-mail de contact
+donnée ci-dessous lorsque l'évènement aura été
+modéré.</p>
 
 <div id="advises">
 
 <h1>Recommandations importantes</h1>
 
 <p>Ces quelques recommandations vous permettront de proposer un
-évènement qui sera validé plus rapidement, et dont la
-lisibilité sera meilleure pour les utilisateurs de l'Agenda du
+évènement qui sera validé plus rapidement, et dont la
+lisibilité sera meilleure pour les utilisateurs de l'Agenda du
 Libre.</p>
 
-<p>Si vous soumettez souvent un évènement régulier dans
-l'Agenda du Libre, vous pouvez automatiser cette procédure à
+<p>Si vous soumettez souvent un évènement régulier dans
+l'Agenda du Libre, vous pouvez automatiser cette procédure à
 l'aide d'un <a href="submit-script-doc.php">script que nous vous
 proposons</a>.</p>
 
 <ul>
 
- <li>L'évènement doit concerner le <b>Logiciel
- Libre</b>. L'agenda n'a pas vocation à publier d'autres types
- d'évènements.</li>
+ <li>L'évènement doit concerner le <b>Logiciel
+ Libre</b>. L'agenda n'a pas vocation à publier d'autres types
+ d'évènements.</li>
 
- <li>Le texte des évènements doit être rédigé en
- français, en <b>évitant les fautes de
+ <li>Le texte des évènements doit être rédigé en
+ français, en <b>évitant les fautes de
  grammaire et d'orthographe</b>.</li>
 
- <li>Essayez de donner une description <b>rédigée</b> de
- l'évènement, avec des phrases, plutôt qu'un style
- télégraphique.</li>
-
- <li>Pensez que le lecteur peut ne pas connaître votre association,
- le logiciel dont il sera question, etc., donc donnez à chaque fois
- toutes les informations nécessaires. Rappelez <b>le principe de
- l'évènement, le public visé, le lieu exact, la date,
- l'heure</b>, même si il est régulier (repas, rencontre
- régulière, etc.) et que vous avez déjà soumis un
- évènement du même type dans l'Agenda.</li>
+ <li>Essayez de donner une description <b>rédigée</b> de
+ l'évènement, avec des phrases, plutôt qu'un style
+ télégraphique.</li>
+
+ <li>Pensez que le lecteur peut ne pas connaître votre association,
+ le logiciel dont il sera question, etc., donc donnez à chaque fois
+ toutes les informations nécessaires. Rappelez <b>le principe de
+ l'évènement, le public visé, le lieu exact, la date,
+ l'heure</b>, même si il est régulier (repas, rencontre
+ régulière, etc.) et que vous avez déjà soumis un
+ évènement du même type dans l'Agenda.</li>
 
- <li><b>Égayez au maximum la description</b> de votre évènement:
+ <li><b>Égayez au maximum la description</b> de votre évènement:
  lien vers le site de votre association, vers le logiciel ou le
  langage dont il sera question, vers les organismes partenaires,
  etc. Pour cela, utilisez les balises HTML pour mettre en gras, en
  italique, faire des paragraphes et des liens.</li>
 
- <li>Ne mettez pas l'intégralité des mots en majuscule, que ce
+ <li>Ne mettez pas l'intégralité des mots en majuscule, que ce
  soit dans le titre, le nom de la ville ou la description.</li>
 
  <li>Donnez l'<b>adresse directe</b> d'un site Web donnant plus
- d'informations sur l'évènement. Si l'adresse est la page
- d'accueil du site de votre organisation, veillez à ce que
- l'évènement soit clairement visible, et que le lecteur n'aie
- pas à chercher trop longtemps avant de trouver l'information qu'il
+ d'informations sur l'évènement. Si l'adresse est la page
+ d'accueil du site de votre organisation, veillez à ce que
+ l'évènement soit clairement visible, et que le lecteur n'aie
+ pas à chercher trop longtemps avant de trouver l'information qu'il
  cherche.</li>
 
- <li>La description de l'évènement ne doit pas ressembler à une
- publicité éhontée pour votre entreprise, projet ou logiciel. Le ton
- d'un communiqué de presse, par exemple, ne convient pas pour l'Agenda
+ <li>La description de l'évènement ne doit pas ressembler à une
+ publicité éhontée pour votre entreprise, projet ou logiciel. Le ton
+ d'un communiqué de presse, par exemple, ne convient pas pour l'Agenda
  du Libre.</li>
 
- <li>Les évènements de type professionnel sont acceptés dès lors
- qu'ils sont accessibles et ouverts à tous. Les évènements payants
- sont acceptés si le prix de l'entrée ne réserve pas l'évènement à un
+ <li>Les évènements de type professionnel sont acceptés dès lors
+ qu'ils sont accessibles et ouverts à tous. Les évènements payants
+ sont acceptés si le prix de l'entrée ne réserve pas l'évènement à un
  public uniquement professionnel.</li>
 
 </ul>
 
-<p>L'équipe de modération se réserve le droit de modifier la
-description de l'évènement pour la rendre plus complète, plus
+<p>L'équipe de modération se réserve le droit de modifier la
+description de l'évènement pour la rendre plus complète, plus
 lisible ou plus attrayante.</p>
 
 </div>

Modified: trunk/textlist.php
==============================================================================
--- trunk/textlist.php	(original)
+++ trunk/textlist.php	Fri Sep 26 20:17:54 2008
@@ -9,8 +9,7 @@
 
 if (! $_GET['tag'] || !ereg("^[a-z0-9\-]*$", $_GET['tag']))
 {
-  echo "<p><b>Aucun tag sélectionné, ou tag invalide.</b></p>";
-  put_footer();
+  echo "Aucun tag sélectionné, ou tag invalide.";
   exit;
 }
 
@@ -18,10 +17,10 @@
 $events = $db->query ("select * from events where tags like '%" . $_GET['tag'] . "%' order by start_time");
 while ($event = mysql_fetch_object($events))
 {
-  echo utf8_encode($event->city)  . "\n";
-  echo utf8_encode($event->title) . "\n";
-  echo utf8_encode(strftime ("%A %d %B %Y %Hh%M", date_mysql2timestamp($event->start_time))) . "\n";
-  echo utf8_encode($event->url) . "\n";
+  echo $event->city  . "\n";
+  echo $event->title . "\n";
+  echo strftime ("%A %d %B %Y %Hh%M", date_mysql2timestamp($event->start_time)) . "\n";
+  echo $event->url . "\n";
   echo "===============================================================\n";
 }
 ?>
\ No newline at end of file

Modified: trunk/validateevent.php
==============================================================================
--- trunk/validateevent.php	(original)
+++ trunk/validateevent.php	Fri Sep 26 20:17:54 2008
@@ -52,19 +52,19 @@
   $ret = $db->query ($sql);
   if ($ret == FALSE)
     {
-      error ("La requête <i>" . $sql . "</i> a échoué");
+      error ("La requête <i>" . $sql . "</i> a échoué");
       exit;
     }
 
   /* Send email */
   calendar_mail ($row->submitter, $moderatorlist,
-		 "Évènement '" . $row->title . "' modéré",
+		 "Évènement '" . $row->title . "' modéré",
 		 "Bonjour,\n\n" .
-		 wordwrap("L'évènement que vous avez soumis a été modéré par " . $user->get_name() . ". Il est maintenant visible dans l'Agenda à l'adresse : \n") .
+		 wordwrap("L'évènement que vous avez soumis a été modéré par " . $user->get_name() . ". Il est maintenant visible dans l'Agenda à l'adresse : \n") .
 		 "  " . $link . "\n\n" .
-		 wordwrap("Vous pouvez modifier cet évènement ultérieurement pour y ajouter des précisions en vous rendant à l'adresse :\n") .
+		 wordwrap("Vous pouvez modifier cet évènement ultérieurement pour y ajouter des précisions en vous rendant à l'adresse :\n") .
 		 "  " . calendar_absolute_url("editevent.php?id=" . $id . "&secret=" . $secret) . "\n\n" .
-		 wordwrap("Vous pouvez également l'annuler en vous rendant à l'adresse :\n") .
+		 wordwrap("Vous pouvez également l'annuler en vous rendant à l'adresse :\n") .
 		 "  " . calendar_absolute_url("cancelevent.php?id=" . $id . "&secret=" . $secret) . "\n\n" .
 		 "=====================================================\n" .
 		 format_ascii_event ($db, $row->title, date_mysql2timestamp($row->start_time),
@@ -72,8 +72,8 @@
 				     $row->description, $row->city, $row->region, $row->locality,
 				     $row->url, $row->contact, $row->submitter, $row->tags) . "\n" .
 		 "=====================================================\n\n" .
-		 "Merci de votre contribution à l'Agenda du Libre et à bientôt !\n\n".
-		 "-- \nL'équipe de modération");
+		 "Merci de votre contribution à l'Agenda du Libre et à bientôt !\n\n".
+		 "-- \nL'équipe de modération");
 
   header("Location: moderation.php");
   exit;
@@ -81,25 +81,25 @@
 
 $id = get_safe_integer('id', 0);
 
-put_header("Validation d'un évènement");
+put_header("Validation d'un évènement");
 
 $event = fetch_event($db, $id);
 if (! $event)
 {
-  echo "<p>Pas d'évènement avec cet ID</p>";
+  echo "<p>Pas d'évènement avec cet ID</p>";
   put_footer();
   exit;
 }
 
 if ($event->moderated)
 {
-  echo "<p>Évènement déjà modéré</p>";
+  echo "<p>Évènement déjà modéré</p>";
   put_footer();
   exit;
 }
 
 echo '<p class="moderationheader">';
-echo "<a href=\"moderation.php\">Modération</a>&nbsp;&gt;&gt;&gt&nbsp;Validation de l'évènement";
+echo "<a href=\"moderation.php\">Modération</a>&nbsp;&gt;&gt;&gt&nbsp;Validation de l'évènement";
 echo "</p>";
 
 echo '<div class="moderationbox">';
@@ -107,12 +107,12 @@
 if ($event->locality)
 {
   echo '<p style="color: red; font-weight: bold; text-align: center;">';
-  echo 'Attention, cet évènement est à portée nationale !';
+  echo 'Attention, cet évènement est à portée nationale !';
   echo '</p>';
 }
 
 echo '<form action="validateevent.php?id=' . $id . '" method="post">';
-echo '<p style="text-align: center;">Confirmez-vous la validation de cet évènement&nbsp;?</p>';
+echo '<p style="text-align: center;">Confirmez-vous la validation de cet évènement&nbsp;?</p>';
 echo '<input name="__event_validation_confirm" type="submit" value="Oui"/>&nbsp;';
 echo '<input name="__event_validation_cancel" type="submit" value="Non"/>';
 echo '</form>';

Modified: trunk/xmllistevents.php
==============================================================================
--- trunk/xmllistevents.php	(original)
+++ trunk/xmllistevents.php	Fri Sep 26 20:17:54 2008
@@ -24,7 +24,7 @@
 
 if (! $_GET['tag'] || !ereg("^[a-z0-9\-]*$", $_GET['tag']))
 {
-  echo "Aucun tag sélectionné, ou tag invalide.";
+  echo "Aucun tag sélectionné, ou tag invalide.";
   exit;
 }
 
@@ -35,7 +35,7 @@
 $events = $db->query($sql);
 if (! $events)
 {
-  echo "Erreur lors de la requête SQL.";
+  echo "Erreur lors de la requête SQL.";
   exit;
 }
 
@@ -48,18 +48,18 @@
 while($event = mysql_fetch_object($events))
 {
   $xml->startElement("event");
-  $xml->writeElement("title", utf8_encode($event->title));
+  $xml->writeElement("title", $event->title);
   $xml->writeElement("start-time", $event->start_time);
   $xml->writeElement("end-time", $event->end_time);
-  $xml->writeElement("city", utf8_encode($event->city));
-  $xml->writeElement("region", utf8_encode(region_find($db, $event->region)));
+  $xml->writeElement("city", $event->city);
+  $xml->writeElement("region", region_find($db, $event->region));
   $xml->writeElement("locality", $event->locality);
   $xml->writeElement("url", $event->url);
   $xml->writeElement("tags", $event->tags);
   $xml->writeElement("contact", $event->contact);
   $xml->writeElement("adlurl", "http://www.agendadulibre.org/showevent.php?id=" . $event->id);
   $xml->startElement("description");
-  $xml->writeCData(utf8_encode($event->description));
+  $xml->writeCData($event->description);
   $xml->endElement();
   $xml->endElement();
 }


Plus d'informations sur la liste de diffusion Devel