[Devel] r422 - trunk

svn at agendadulibre.org svn at agendadulibre.org
Jeu 19 Fév 21:39:05 CET 2009


Author: thomas
Date: Thu Feb 19 21:39:02 2009
New Revision: 422

Log:
Nouvelle fonctionnalité: utilisation des champs Message-Id: et
References: dans les entêtes des messages envoyés pour construire des
fils de discussion. Ainsi, aussi bien pour les modérateurs que pour le
soumetteur d'un évènement, tous les mails liés à un évènement donné se
retrouvent dans un même fil de discussion.

 * funcs.inc.php :

  - Suppression de l'argument $cc, qui n'est plus utile: l'ID du mail
    envoyé au soumetteur et à la liste de modération est différent,
    donc il faut envoyer un mail séparé.

  - Nouveaux arguments optionels $id et $ref.

    Si $id est positionné, alors "<$id at agendadulibre.org>" est utilisé
    comme valeur du champ Message-Id. Sinon, le Message-Id n'est pas
    positionné et sera généré par la fonction mail() de PHP, comme
    avant.

    Si $ref est positionné, alors "<$id at agendadulibre.org>" est
    utilisé comme valeur du champ References. Sinon, le champ
    References n'est pas créé.

  - Ajout du word-wrapping de la description d'un évènement lors du
    formatage ASCII d'un évènement. Ça évite les lignes trop longues
    dans les courriers électroniques.

 * submit.php :

  - Génération de deux IDs pour chaque évènement, un pour le mail aux
    modérateurs, un pour le mail au soumetteur. Ils sont générés de la
    même façon que la clé secrète. Ces deux nouveaux IDs sont stockés
    dans la table events de la base.

  - Dans alert_moderators() et notify_submitter(), envoi du mail avec
    l'ID passé en paramètre.

 * UPGRADE

  - Documentation des étapes de mise à jour nécessaires.

 * calendar.css

  - Élargissement de la zone pour les <pre> et ajout d'un petit
    padding pour rendre la chose plus joli.

 * rejectevent.php,
   requestinfosevent.php,
   validateevent.php

  - Envoi d'un mail séparé aux modérateurs et au soumetteur de
    l'évènement, avec la bonne référence.

 * editevent.php

  - Modification de l'appel à calendar_mail() pour utiliser une
    référence.

  - Utilisation de user->get_name() au lieu de user->get_login(),
    c'est plus sympa dans les mails.

 * cancelevent.php

  - Modification de l'appel à calendar_mail() pour utiliser une
    référence.

  - On affiche l'avertissement qu'on est en train d'annuler un
    évènement modéré seulement si l'évènement est effectivement
    modéré.

Modified:
   trunk/UPGRADE
   trunk/calendar.css
   trunk/cancelevent.php
   trunk/editevent.php
   trunk/funcs.inc.php
   trunk/rejectevent.php
   trunk/requestinfosevent.php
   trunk/submit.php
   trunk/validateevent.php

Modified: trunk/UPGRADE
==============================================================================
--- trunk/UPGRADE	Wed Feb 18 22:46:52 2009	(r421)
+++ trunk/UPGRADE	Thu Feb 19 21:39:02 2009	(r422)
@@ -108,3 +108,13 @@
   `author_id` int(11) default NULL,
   PRIMARY KEY  (`id`)
 ) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
+
+Revisions lower than 421
+========================
+
+At revision 421, two new fields were added to the events table. They
+are used to store the Message-ID values of the mails sent to the
+moderator list and the event submitter.
+
+alter table events add moderator_mail_id varchar(32);
+alter table events add submitter_mail_id varchar(32);
\ No newline at end of file

Modified: trunk/calendar.css
==============================================================================
--- trunk/calendar.css	Wed Feb 18 22:46:52 2009	(r421)
+++ trunk/calendar.css	Thu Feb 19 21:39:02 2009	(r422)
@@ -115,7 +115,14 @@
 
 .main p {	margin: 15px 0px; line-height: 1.3em;}
 
-.main pre {  text-align: left; background: #eeeeee; overflow: auto; width: 60%; margin: auto; }
+.main pre {
+            text-align: left;
+            background: #eeeeee;
+            overflow: auto;
+            width: 70%;
+            padding: 5px;
+            margin: auto;
+}
 
 .toggleeditor_link {
 	margin-top: 0;

Modified: trunk/cancelevent.php
==============================================================================
--- trunk/cancelevent.php	Wed Feb 18 22:46:52 2009	(r421)
+++ trunk/cancelevent.php	Thu Feb 19 21:39:02 2009	(r422)
@@ -52,16 +52,21 @@
   else
     $modifier = "le soumetteur de l'évènement";
 
-  calendar_mail ($moderatorlist, "",
-		 "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" .
-		 "=======================================================\n" .
-		 $oldevent_str . "\n".
-		 "=======================================================\n\n" .
-		 "Bonne journée,\n\n".
-		 "-- L'équipe de modération");
+  $title =
+    "Annulation de l'évènement '" . stripslashes($oldevent->title) . "'";
+
+  $contents =
+    "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" .
+    "=======================================================\n" .
+    $oldevent_str . "\n".
+    "=======================================================\n\n" .
+    "Bonne journée,\n\n".
+    "-- L'équipe de modération";
+
+  calendar_mail ($moderatorlist, $title, $contents, /* id */ "",
+		 $oldevent->moderator_mail_id);
 }
 
 $db = new db();
@@ -144,7 +149,8 @@
   $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>';
+if ($event->moderated)
+  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 '<input name="__event_cancelation_confirm" type="submit" value="Oui"/>&nbsp;';

Modified: trunk/editevent.php
==============================================================================
--- trunk/editevent.php	Wed Feb 18 22:46:52 2009	(r421)
+++ trunk/editevent.php	Thu Feb 19 21:39:02 2009	(r422)
@@ -69,33 +69,35 @@
   $diff = arr_diff (split ("\n", $oldevent_str), split ("\n", $newevent_str), 1);
 
   if ($user)
-    $modifier = $user->get_login();
+    $modifier = $user->get_name();
   else
     $modifier = "le soumetteur de l'évènement";
 
   if ($oldevent->moderated)
     {
-      calendar_mail ($moderatorlist, "",
+      calendar_mail ($moderatorlist,
 		     "É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" .
 		     $diff . "\n\n".
 		     "Bonne journée\n\n".
-		     "-- L'équipe de modération");
+		     "-- L'équipe de modération",
+		     /* id */ "", $oldevent->moderator_mail_id);
 
       return "showevent.php?id=" . $oldevent->id;
     }
   else
     {
-      calendar_mail ($moderatorlist, "",
+      calendar_mail ($moderatorlist,
 		     "É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" .
 		     $diff . "\n\n".
 		     "Bonne journée\n\n".
-		     "-- L'équipe de modération");
+		     "-- L'équipe de modération",
+		     /* id */ "", $oldevent->moderator_mail_id);
 
       if ($user)
 	return "moderation.php";

Modified: trunk/funcs.inc.php
==============================================================================
--- trunk/funcs.inc.php	Wed Feb 18 22:46:52 2009	(r421)
+++ trunk/funcs.inc.php	Thu Feb 19 21:39:02 2009	(r422)
@@ -219,7 +219,8 @@
   return strftime("%B", mktime(0,0,0,$month,1));
 }
 
-function calendar_mail ($to, $cc, $title, $contents)
+function calendar_mail ($to, $title, $contents,
+			$id = "", $ref = "")
 {
   global $debugaddress;
 
@@ -234,7 +235,8 @@
 	      "Reply-To: moderateurs at agendadulibre.org\n" .
 	      "Content-Type: text/plain; charset=UTF-8\n" .
 	      "Content-Transfert-Encoding: 8bit\n" .
-	      ($cc ? "CC: " . $cc . "\n" : "") .
+	      (($id != "") ? ("Message-ID: <" . $id . "@agendadulibre.org>\n") : "") .
+	      (($ref != "") ? ("References: <" . $ref . "@agendadulibre.org>\n") : "") .
 	      "X-Mailer: Agenda du Libre\n");
 }
 
@@ -730,7 +732,7 @@
     "Contact     : " . $contact . "\n" .
     "Soumetteur  : " . $submitter . "\n" .
     "Tags        : " . $tags . "\n" .
-    "Description : \n " . preg_replace ("/\n/", "\n ", $description);
+    "Description : \n " . wordwrap(preg_replace ("/\n/", "\n ", $description));
 
   return $str;
 }

Modified: trunk/rejectevent.php
==============================================================================
--- trunk/rejectevent.php	Wed Feb 18 22:46:52 2009	(r421)
+++ trunk/rejectevent.php	Thu Feb 19 21:39:02 2009	(r422)
@@ -61,7 +61,7 @@
     }
 
   /* Send email */
-  calendar_mail ($row->submitter, $moderatorlist, "Évènement '" . stripslashes($row->title) . "' refusé",
+  calendar_mail ($row->submitter, "É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 remercions de cette contribution.\n\n" .
@@ -76,7 +76,23 @@
 				     $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",
+		 /* id */ "", $row->submitter_mail_id);
+
+  calendar_mail($moderatorlist, "Évènement '" . stripslashes($row->title) . "' refusé",
+		"Bonjour,\n\n" .
+		wordwrap("L'évènement '"  . stripslashes($row->title) . "' a été rejeté par " .
+			 $user->get_name() . " pour la raison suivante :\n\n") .
+		$reason . "\n\n" .
+		"Pour rappel, l'évènement:\n" .
+		"=====================================================\n" .
+		format_ascii_event ($db, $row->title, date_mysql2timestamp($row->start_time),
+				    date_mysql2timestamp($row->end_time),
+				    $row->description, $row->city, $row->region, $row->locality,
+				    $row->url, $row->contact, $row->submitter, $row->tags) . "\n" .
+		"=====================================================\n\n" .
+		"-- \nL'équipe des modérateurs de l'Agenda du Libre",
+		/* id */ "", $row->moderator_mail_id);
 
   header("Location: moderation.php");
   exit;

Modified: trunk/requestinfosevent.php
==============================================================================
--- trunk/requestinfosevent.php	Wed Feb 18 22:46:52 2009	(r421)
+++ trunk/requestinfosevent.php	Thu Feb 19 21:39:02 2009	(r422)
@@ -64,13 +64,19 @@
   $text = wordwrap($text);
 
 
-  calendar_mail($event->submitter, $moderatorlist,
+  calendar_mail($event->submitter,
 		"Demande d'informations sur l'évènement '" .
-		stripslashes($event->title) . "'", $text);
+		stripslashes($event->title) . "'", $text,
+		/* id */ "", $event->submitter_mail_id);
+
+  calendar_mail($moderator_list,
+		"Demande d'informations sur l'évènement '" .
+		stripslashes($event->title) . "'", $text,
+		/* id */ "", $event->moderator_mail_id);
 
   $note =
     "<p>Demande d'informations complémentaires&nbsp;:</p>" .
-    "<pre>" . stripslashes($_POST["__text"]) . "</pre>";
+    "<pre>" . wordwrap(stripslashes($_POST["__text"])) . "</pre>";
 
   $sql = "insert into notes (contents, date, event_id, author_id) values (" .
     $db->quote_smart($note)                       . "," .

Modified: trunk/submit.php
==============================================================================
--- trunk/submit.php	Wed Feb 18 22:46:52 2009	(r421)
+++ trunk/submit.php	Thu Feb 19 21:39:02 2009	(r422)
@@ -26,7 +26,8 @@
 $db = new db();
 
 function alert_moderators ($db, $id, $title, $start, $end, $description, $city,
-			   $region, $locality, $url, $contact, $submitter, $tags)
+			   $region, $locality, $url, $contact, $submitter, $tags,
+			   $moderator_mail_id)
 {
   global $moderatorlist;
 
@@ -39,14 +40,14 @@
     "Merci !\n" .
     "-- Agenda du Libre";
 
-  calendar_mail ($moderatorlist, "", $mail_title, $mail_body);
+  calendar_mail ($moderatorlist, $mail_title, $mail_body, $moderator_mail_id);
 
   return 0;
 }
 
 function notify_submitter ($db, $id, $title, $start, $end, $description, $city,
 			   $region, $locality, $url, $contact, $submitter, $tags,
-			   $secret)
+			   $secret, $submitter_mail_id)
 {
   $mail_title = "Votre évènement : '" . $title . "' est en attente de modération";
 
@@ -63,7 +64,7 @@
     "Merci de votre participation !\n" .
     "-- Agenda du Libre";
 
-  calendar_mail($submitter, "", $mail_title, $mail_body);
+  calendar_mail($submitter, $mail_title, $mail_body, $submitter_mail_id);
 }
 
 function add_event ($db, $title, $start, $end, $description, $city, $region, $locality, $url, $contact, $submitter, $tags)
@@ -171,9 +172,11 @@
     $submitter = $contact;
 
   $secret = md5(uniqid(rand(), true));
+  $moderator_mail_id = md5(uniqid(rand(), true));
+  $submitter_mail_id = md5(uniqid(rand(), true));
 
   /* Checks are done, add to database */
-  $sql = "INSERT INTO events (title,description,start_time,end_time,city,region,locality,url,contact,submitter,tags,moderated,secret,submission_time) values (" .
+  $sql = "INSERT INTO events (title,description,start_time,end_time,city,region,locality,url,contact,submitter,tags,moderated,secret,submission_time,moderator_mail_id,submitter_mail_id) values (" .
     $db->quote_smart($title)                        . "," .
     $db->quote_smart($description)                  . "," .
     $db->quote_smart(date_timestamp2mysql ($start)) . "," .
@@ -187,7 +190,9 @@
     $db->quote_smart($tags)                         . "," .
     "'0'"                                           . "," .
     "'" . $secret . "'"                             . "," .
-    "NOW()"                                               .
+    "NOW()"                                         . "," .
+    "'" . $moderator_mail_id . "'"                  . "," .
+    "'" . $submitter_mail_id . "'"                  .
     ")";
 
   $ret = $db->query ($sql);
@@ -199,9 +204,11 @@
     }
 
   alert_moderators ($db, $db->insertid(), $title, $start, $end, $description, $city,
-		    $region, $locality, $url, $contact, $submitter, $tags);
+		    $region, $locality, $url, $contact, $submitter, $tags,
+		    $moderator_mail_id);
   notify_submitter ($db, $db->insertid(), $title, $start, $end, $description, $city,
-		    $region, $locality, $url, $contact, $submitter, $tags, $secret);
+		    $region, $locality, $url, $contact, $submitter, $tags, $secret,
+		    $submitter_mail_id);
 
   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>";

Modified: trunk/validateevent.php
==============================================================================
--- trunk/validateevent.php	Wed Feb 18 22:46:52 2009	(r421)
+++ trunk/validateevent.php	Thu Feb 19 21:39:02 2009	(r422)
@@ -59,7 +59,7 @@
     }
 
   /* Send email */
-  calendar_mail ($row->submitter, $moderatorlist,
+  calendar_mail ($row->submitter,
 		 "É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") .
@@ -75,7 +75,21 @@
 				     $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");
+		 "-- \nL'équipe de modération",
+		 /* id */ "", $row->submitter_mail_id);
+
+  calendar_mail ($moderatorlist,
+		 "Évènement '" . $row->title . "' modéré",
+		 "Bonjour,\n\n" .
+		 wordwrap("L'évènement a été modéré par " . $user->get_name() . ".") . "\n\n" .
+		 "=====================================================\n" .
+		 format_ascii_event ($db, $row->title, date_mysql2timestamp($row->start_time),
+				     date_mysql2timestamp($row->end_time),
+				     $row->description, $row->city, $row->region, $row->locality,
+				     $row->url, $row->contact, $row->submitter, $row->tags) . "\n" .
+		 "=====================================================\n\n" .
+		 "-- \nL'équipe de modération",
+		 /* id */ "", $row->moderator_mail_id);
 
   header("Location: moderation.php");
   exit;


Plus d'informations sur la liste de diffusion Devel