Accéder au contenu.
Menu Sympa

devel - [Devel] r80 - trunk

Objet : devel-adl

Archives de la liste

[Devel] r80 - trunk


Chronologique Discussions 
  • From: thomas AT lolut.utbm.info
  • To: devel AT agendadulibre.org
  • Subject: [Devel] r80 - trunk
  • Date: Sat, 30 Jul 2005 13:20:57 +0200 (CEST)
  • List-archive: <http://lolut.utbm.info/pipermail/devel>
  • List-id: Developpement de l'Agenda du Libre <devel.agendadulibre.org>

Author: thomas
Date: 2005-07-30 13:20:55 +0200 (Sat, 30 Jul 2005)
New Revision: 80

Added:
trunk/diff.inc.php
Modified:
trunk/bd-private.inc.php.template
trunk/bd.inc.php
trunk/funcs.inc.php
trunk/infos.php
trunk/moderate.php
trunk/submit.php
Log:
Principalement des modifications qui n'impactent pas l'utilisation de
l'Agenda par les visiteurs, ce sont surtout des modifications pour les
mod?\195?\169rateurs, en particulier l'envoi de mails aux diff?\195?\169rentes
?\195?\169tapes de la validation d'un ?\195?\169v?\195?\168nement.

* bd.inc.php:

- Nouvelle fonction insertid() pour r?\195?\169cup?\195?\169rer l'ID du
dernier enregistrement ajout?\195?\169 ?\195?\160 la base.

* moderate.php:

- Nouvelle fonction user_find_login() qui permet de
r?\195?\169cup?\195?\169rer le login d'un utilisateur ?\195?\160 partir
de son ID
dans la base.

- Am?\195?\169lioration de la fonction save_event(), appel?\195?\169e
lorsqu'un ?\195?\169v?\195?\168nement est ?\195?\169dit?\195?\169 par
un mod?\195?\169rateur,
de mani?\195?\168re ?\195?\160 ce qu'elle envoie un mail aux
mod?\195?\169rateurs
contenant un diff des modifications effectu?\195?\169es. Le mail
indique la personne qui a r?\195?\169alis?\195?\169 l'?\195?\169dition.

- Am?\195?\169lioration de la fonction accept_event() au niveau du
format du mail envoy?\195?\169. Le mail de validation est maintenant
en Cc: sur la liste des mod?\195?\169rateurs, en plus d'?\195?\170tre
envoy?\195?\169 au contact ayant soumis l'?\195?\169v?\195?\168nement.
Le mail
signale la personne qui a r?\195?\169alis?\195?\169 la validation.

- Am?\195?\169lioration de la fonction delete_event(). Elle envoie un
mail aux mod?\195?\169rateurs lorsqu'un ?\195?\169v?\195?\168nement est
supprim?\195?\169. Ce mail indique la personne ayant supprim?\195?\169
l'?\195?\169v?\195?\168nement.

- Cr?\195?\169ation de liens internes ?\195?\160 la page de
mod?\195?\169ration, un
pour chaque ?\195?\169v?\195?\168nement (moderate.php#65 par exemple).

* submit.php:

- Am?\195?\169lioration du format du mail envoy?\195?\169 aux
mod?\195?\169rateurs
lors de la soumission d'un ?\195?\169v?\195?\168nement par un visiteur.

* infos.php:

- Mise ?\195?\160 jour.

* bd-private.inc.php.template:

- Ajout d'un param?\195?\168tre global du site: l'adresse de la liste de
diffusion des mod?\195?\169rateurs.

* diff.inc.php:

- Ajout d'une petite biblioth?\195?\168que r?\195?\169alisant des diffs.
Elle
est en GPL. Elle est assez courte et a l'air de fonctionner. Je
n'ai pas fait de tests intensifs ni lu le code en d?\195?\169tail.

* funcs.inc.php:

- La fonction calendar_mail() prend maintenant un param?\195?\168tre
"$cc" pour envoyer un mail en Cc:.

- Nouvelle fonction format_ascii_event() pour formater une
description d'un ?\195?\169v?\195?\168nement d'une mani?\195?\168re
utilisable
pour l'envoi par mail.



Modified: trunk/bd-private.inc.php.template
===================================================================
--- trunk/bd-private.inc.php.template 2005-07-30 11:06:59 UTC (rev 79)
+++ trunk/bd-private.inc.php.template 2005-07-30 11:20:55 UTC (rev 80)
@@ -21,4 +21,7 @@
/** Root URL of the libre agenda, without leading slash */
$root = "http://dummy.url.org";;

+/** Mailing-list of moderators */
+$moderatorlist = "moderators AT your.domain.org";
+
?>

Modified: trunk/bd.inc.php
===================================================================
--- trunk/bd.inc.php 2005-07-30 11:06:59 UTC (rev 79)
+++ trunk/bd.inc.php 2005-07-30 11:20:55 UTC (rev 80)
@@ -62,6 +62,11 @@
return $result;
}

+ function insertid ()
+ {
+ return mysql_insert_id ();
+ }
+
/**
* Converts the argument of an SQL request in a format accepted by MySQL.
*

Added: trunk/diff.inc.php
===================================================================
--- trunk/diff.inc.php 2005-07-30 11:06:59 UTC (rev 79)
+++ trunk/diff.inc.php 2005-07-30 11:20:55 UTC (rev 80)
@@ -0,0 +1,255 @@
+<?php
+
+ /**
+ Diff implemented in pure php, written from scratch.
+ Copyright (C) 2003 Daniel Unterberger <diff.phpnet AT holomind.de>
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 2
+ of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
+
+ http://www.gnu.org/licenses/gpl.html
+
+ About:
+ I searched a function to compare arrays and the array_diff()
+ was not specific enough. It ignores the order of the array-values.
+ So I reimplemented the diff-function which is found on unix-systems
+ but this you can use directly in your code and adopt for your needs.
+ Simply adopt the formatline-function. with the third-parameter of
arr_diff()
+ you can hide matching lines. Hope someone has use for this.
+
+ Contact: d.u.diff AT holomind.de <daniel unterberger>
+ **/
+
+ function arr_diff( $f1 , $f2 , $show_equal = 0 )
+ {
+
+ $c1 = 0 ; # current line of left
+ $c2 = 0 ; # current line of right
+ $max1 = count( $f1 ) ; # maximal lines of left
+ $max2 = count( $f2 ) ; # maximal lines of right
+ $outcount = 0; # output counter
+ $hit1 = "" ; # hit in left
+ $hit2 = "" ; # hit in right
+
+ while (
+ $c1 < $max1 # have next line in left
+ and
+ $c2 < $max2 # have next line in right
+ and
+ ($stop++) < 1000 # don-t have more then 1000 (
loop-stopper )
+ and
+ $outcount < 20 # output count is less then 20
+ )
+ {
+ /**
+ * is the trimmed line of the current left and current right
line
+ * the same ? then this is a hit (no difference)
+ */
+ if ( trim( $f1[$c1] ) == trim ( $f2[$c2]) )
+ {
+ /**
+ * add to output-string, if "show_equal" is enabled
+ */
+ $out .= ($show_equal==1)
+ ? formatline ( ($c1) , ($c2), "=", $f1[ $c1 ] )
+ : "" ;
+ /**
+ * increase the out-putcounter, if "show_equal" is enabled
+ * this ist more for demonstration purpose
+ */
+ if ( $show_equal == 1 )
+ {
+ $outcount++ ;
+ }
+
+ /**
+ * move the current-pointer in the left and right side
+ */
+ $c1 ++;
+ $c2 ++;
+ }
+
+ /**
+ * the current lines are different so we search in parallel
+ * on each side for the next matching pair, we walk on both
+ * sided at the same time comparing with the current-lines
+ * this should be most probable to find the next matching pair
+ * we only search in a distance of 10 lines, because then it
+ * is not the same function most of the time. other algos
+ * would be very complicated, to detect 'real' block movements.
+ */
+ else
+ {
+
+ $b = "" ;
+ $s1 = 0 ; # search on left
+ $s2 = 0 ; # search on right
+ $found = 0 ; # flag, found a matching pair
+ $b1 = "" ;
+ $b2 = "" ;
+ $fstop = 0 ; # distance of maximum search
+
+ #fast search in on both sides for next match.
+ while (
+ $found == 0 # search until we find a pair
+ and
+ ( $c1 + $s1 <= $max1 ) # and we are inside of the
left lines
+ and
+ ( $c2 + $s2 <= $max2 ) # and we are inside of the
right lines
+ and
+ $fstop++ < 10 # and the distance is lower
than 10 lines
+ )
+ {
+
+ /**
+ * test the left side for a hit
+ *
+ * comparing current line with the searching line on
the left
+ * b1 is a buffer, which collects the line which not
match, to
+ * show the differences later, if one line hits, this
buffer will
+ * be used, else it will be discarded later
+ */
+ #hit
+ if ( trim( $f1[$c1+$s1] ) == trim( $f2[$c2] ) )
+ {
+ $found = 1 ; # set flag to stop further search
+ $s2 = 0 ; # reset right side search-pointer
+ $c2-- ; # move back the current right,
so next loop hits
+ $b = $b1 ; # set b=output (b)uffer
+ }
+ #no hit: move on
+ else
+ {
+ /**
+ * prevent finding a line again, which would show
wrong results
+ *
+ * add the current line to leftbuffer, if this will
be the hit
+ */
+ if ( $hit1[ ($c1 + $s1) . "_" . ($c2) ] != 1 )
+ {
+ /**
+ * add current search-line to diffence-buffer
+ */
+ $b1 .= formatline( ($c1 + $s1) , ($c2), "-",
$f1[ $c1+$s1 ] );
+
+ /**
+ * mark this line as 'searched' to prevent
doubles.
+ */
+ $hit1[ ($c1 + $s1) . "_" . $c2 ] = 1 ;
+ }
+ }
+
+
+
+ /**
+ * test the right side for a hit
+ *
+ * comparing current line with the searching line on
the right
+ */
+ if ( trim ( $f1[$c1] ) == trim ( $f2[$c2+$s2]) )
+ {
+ $found = 1 ; # flag to stop search
+ $s1 = 0 ; # reset pointer for search
+ $c1-- ; # move current line back, so we
hit next loop
+ $b = $b2 ; # get the buffered difference
+ }
+ else
+ {
+ /**
+ * prevent to find line again
+ */
+ if ( $hit2[ ($c1) . "_" . ( $c2 + $s2) ] != 1 )
+ {
+ /**
+ * add current searchline to buffer
+ */
+ $b2 .= formatline ( ($c1) , ($c2 + $s2), "+",
$f2[ $c2+$s2 ] );
+
+ /**
+ * mark current line to prevent double-hits
+ */
+ $hit2[ ($c1) . "_" . ($c2 + $s2) ] = 1;
+ }
+
+ }
+
+ /**
+ * search in bigger distance
+ *
+ * increase the search-pointers (satelites) and try
again
+ */
+ $s1++ ; # increase left search-pointer
+ $s2++ ; # increase right search-pointer
+ }
+
+ /**
+ * add line as different on both arrays (no match found)
+ */
+ if ( $found == 0 )
+ {
+ $b .= formatline ( ($c1) , ($c2), "-", $f1[ $c1 ] );
+ $b .= formatline ( ($c1) , ($c2), "+", $f2[ $c2 ] );
+ }
+
+ /**
+ * add current buffer to outputstring
+ */
+ $out .= $b;
+ $outcount++ ; #increase outcounter
+
+ $c1++ ; #move currentline forward
+ $c2++ ; #move currentline forward
+
+ /**
+ * comment the lines are tested quite fast, because
+ * the current line always moves forward
+ */
+
+ } /*endif*/
+
+ }/*endwhile*/
+
+ return $out;
+
+ }/*end func*/
+
+ /**
+ * callback function to format the diffence-lines with your 'style'
+ */
+ function formatline( $nr1, $nr2, $stat, &$value ) #change to $value if
problems
+ {
+ if ( trim( $value ) == "" )
+ {
+ return "";
+ }
+
+ switch ( $stat )
+ {
+ case "=":
+ return " = ". $value ."\n";
+ break;
+
+ case "+":
+ return " + ". $value ."\n";
+ break;
+
+ case "-":
+ return " - ". $value ."\n";
+ break;
+ }
+
+ }
+
+
+?>
\ No newline at end of file

Modified: trunk/funcs.inc.php
===================================================================
--- trunk/funcs.inc.php 2005-07-30 11:06:59 UTC (rev 79)
+++ trunk/funcs.inc.php 2005-07-30 11:20:55 UTC (rev 80)
@@ -28,6 +28,7 @@
function calendar_absolute_url($url)
{
global $root;
+ $root = rtrim ($root, "/");
return $root . "/" . $url;
}

@@ -110,7 +111,7 @@
return strftime("%B", mktime(0,0,0,$month));
}

-function calendar_mail ($recv, $title, $contents)
+function calendar_mail ($recv, $cc, $title, $contents)
{
$title = '=?iso8859-1?B?'.base64_encode("[agendadulibre.org] " .
$title).'?=';

@@ -120,7 +121,8 @@
"Reply-To: webmaster AT agendadulibre.org\n" .
"Content-Type: text/plain; charset=ISO-8859-1\n" .
"Content-Transfert-Encoding: 8bit\n" .
- "X-Mailer: PHP/" . phpversion());
+ ($cc ? "CC: " . $cc . "\n" : "") .
+ "X-Mailer: Agenda du Libre\n");
}

function get_prev_month($month, $year)
@@ -362,6 +364,37 @@
return $result;
}

+/**
+ * Format an event in an ASCII format, suitable for e-mails
+ *
+ * @return An ASCII description of the event
+ */
+function format_ascii_event ($db, $title, $start, $end, $description,
+ $city, $region, $locality, $url, $contact)
+{
+ $title = stripslashes($title);
+ $start = date_timestamp2humanreadable($start);
+ $end = date_timestamp2humanreadable($end);
+ $region = stripslashes(region_find($db, $region));
+ $city = stripslashes($city);
+ $description = stripslashes($description);
+ $url = stripslashes($url);
+ $contact = scramble_email(stripslashes($contact));
+
+ $str =
+ "Titre : " . $title . "\n" .
+ "D�but : " . $start . "\n".
+ "Fin : " . $end . "\n" .
+ "R�gion : " . $region . "\n" .
+ "Ville : " . $city . "\n" .
+ "URL : " . $url . "\n".
+ "Contact : " . $contact . "\n" .
+ "Description : \n " . preg_replace ("/\n/", "\n ", $description);
+
+ return $str;
+}
+
+
function generate_date_forms ($ident, $current_time)
{
echo "<select name=\"__event_" . $ident . "_day\">\n";

Modified: trunk/infos.php
===================================================================
--- trunk/infos.php 2005-07-30 11:06:59 UTC (rev 79)
+++ trunk/infos.php 2005-07-30 11:20:55 UTC (rev 80)
@@ -165,6 +165,26 @@
</ul>
</li>

+ <li>07/07/2005
+ <ul>
+ <li>Pr�sentation de l'Agenda du Libre aux <a
+ href="http://www.rencontresmondiales.org";>Rencontres Mondiales du
+ Logiciel Libre</a> � Dijon, dans le cadre du th�me <a
+ href="http://www.interlug-fr.org";>InterLUG</a>. Les <a
+ href="http://www.agendadulibre.org/svn/presentation";>slides</a> de
+ la pr�sentation sont disponibles.</li>
+ </ul>
+ </li>
+
+ <li>30/07/2005
+ <ul>
+ <li>Am�lioration des fonctionnalit�s d'envoi de mail: les
+ mod�rateurs re�oivent un mail � chaque soumission
+ d'�v�nement, � chaque �dition, validation et
+ suppression d'�v�nement.</li>
+ </ul>
+ </li>
+
</ul>



Modified: trunk/moderate.php
===================================================================
--- trunk/moderate.php 2005-07-30 11:06:59 UTC (rev 79)
+++ trunk/moderate.php 2005-07-30 11:20:55 UTC (rev 80)
@@ -23,11 +23,40 @@
include("bd.inc.php");
include("funcs.inc.php");
include("session.inc.php");
+include("diff.inc.php");

$db = new db();

-function save_event ($db, $id, $title, $start, $end, $description, $city,
$region, $locality, $url, $contact)
+function user_find_login ($db, $userid)
{
+ $sql = "SELECT login FROM users WHERE id=" . $db->quote_smart($userid);
+ $ret = $db->query ($sql);
+ if ($ret == FALSE)
+ {
+ error ("La requ�te <i>" . $sql . "</i> a �chou�");
+ return -1;
+ }
+
+ $row = mysql_fetch_object ($ret);
+
+ return $row->login;
+}
+
+function save_event ($db, $id, $title, $start, $end, $description, $city,
+ $region, $locality, $url, $contact, $userid)
+{
+ global $moderatorlist;
+
+ $sql = "SELECT * FROM events WHERE id=" . $db->quote_smart($id);
+ $ret = $db->query($sql);
+ if ($ret == FALSE)
+ {
+ error ("La requ�te <i>" . $sql . "</i> a �chou�");
+ return -1;
+ }
+
+ $oldevent = mysql_fetch_object ($ret);
+
$sql = "UPDATE events SET " .
"title=" . $db->quote_smart ($title) . ", "
.
"start_time=" . $db->quote_smart (date_timestamp2mysql ($start)) . ", ".
@@ -48,14 +77,39 @@
return -1;
}

+ $oldevent_str =
+ format_ascii_event ($db, $oldevent->title,
date_mysql2timestamp($oldevent->start_time),
+ date_mysql2timestamp($oldevent->end_time),
+ $oldevent->description, $oldevent->city,
$oldevent->region, $oldevent->locality,
+ $oldevent->url, $oldevent->contact);
+ $newevent_str =
+ format_ascii_event ($db, $title, $start, $end,
+ $description, $city, $region, $locality,
+ $url, $contact);
+
+ $diff = arr_diff (split ("\n", $oldevent_str), split ("\n",
$newevent_str), 1);
+
+ calendar_mail ($moderatorlist, "",
+ "�dition de l'�v�nement '" . $title . "'",
+ "Bonjour,\n\n" .
+ "L'�v�nement '" . $title . "' a �t� modifi� par " .
user_find_login($db, $userid) . ".\n".
+ "Cet �v�nement est en attente de mod�ration � l'adresse\n" .
+ calendar_absolute_url("moderate.php#" . $id) . "\n\n".
+ "Modifications apport�es:\n\n" .
+ $diff . "\n\n".
+ "Bonne journ�e\n\n".
+ "-- L'�quipe de mod�ration");
+
return 0;
}

-function accept_event ($db, $id)
+function accept_event ($db, $id, $userid)
{
+ global $moderatorlist;
+
/* Fetch contact email, in order to be able to send a confirmation
mail */
- $sql = "SELECT contact, title FROM events where id=" .
$db->quote_smart($id);
+ $sql = "SELECT * FROM events where id=" . $db->quote_smart($id);
$ret = $db->query ($sql);
if ($ret == FALSE)
{
@@ -78,19 +132,35 @@
}

/* Send email */
- calendar_mail ($email,
- "Votre �v�nement a �t� mod�r�",
+ calendar_mail ($row->contact, $moderatorlist,
+ "�v�nement '" . $row->title . "' mod�r�",
"Bonjour,\n\n" .
- "Votre �v�nement \"" . $title . "\" a �t� mod�r�.\n\n".
- "Lien : ".$link."\n\n".
+ "L'�v�nement que vous avez soumis a �t� mod�r� par " .
user_find_login($db, $userid) .
+ ".\nIl est maintenant visible dans l'Agenda � l'adresse\n" .
$link . "\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) . "\n\n" .
"Merci de votre contribution � l'Agenda du Libre et �
bient�t !\n\n".
- "L'�quipe de mod�ration");
+ "-- L'�quipe de mod�ration");

return 0;
}

-function delete_event ($db, $id)
+function delete_event ($db, $id, $userid)
{
+ global $moderatorlist;
+
+ $sql = "SELECT * FROM events where id=" . $db->quote_smart($id);
+ $ret = $db->query ($sql);
+ if ($ret == FALSE)
+ {
+ error ("La requ�te <i>" . $sql . "</i> a �chou�");
+ return -1;
+ }
+
+ $row = mysql_fetch_object($ret);
+
$sql = "DELETE FROM events WHERE id=" . $db->quote_smart($id);

$ret = $db->query ($sql);
@@ -101,6 +171,17 @@
return -1;
}

+ /* Send email */
+ calendar_mail ($moderatorlist, "", "Suppression d'un �v�nement",
+ "Bonjour,\n\n" .
+ "L'�v�nement suivant a �t� supprim� par " .
user_find_login($db, $userid) . ".\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) . "\n\n" .
+ "Merci !\n" .
+ "-- L'�quipe de mod�ration");
+
return 0;
}

@@ -223,7 +304,8 @@
$_POST['__event_region'],
$_POST['__event_locality'],
$_POST['__event_url'],
- $_POST['__event_contact']);
+ $_POST['__event_contact'],
+ $session->value ("agenda_libre_id"));

if ($ret == 0)
{
@@ -240,7 +322,7 @@
*/
else if ($_POST['__event_accept'])
{
- accept_event ($db, $_GET['id']);
+ accept_event ($db, $_GET['id'], $session->value("agenda_libre_id"));
}

/*
@@ -248,7 +330,7 @@
*/
else if ($_POST['__event_delete'])
{
- delete_event ($db, $_GET['id']);
+ delete_event ($db, $_GET['id'], $session->value("agenda_libre_id"));
}

/*
@@ -269,6 +351,7 @@

while ($row = mysql_fetch_object($ret))
{
+ echo "<a name=\"" . $row->id . "\">\n";
echo "<form action=\"?id=" . $row->id . "\" method=\"post\">\n";
echo format_event ($db,
$row->title,

Modified: trunk/submit.php
===================================================================
--- trunk/submit.php 2005-07-30 11:06:59 UTC (rev 79)
+++ trunk/submit.php 2005-07-30 11:20:55 UTC (rev 80)
@@ -25,35 +25,22 @@

$db = new db();

-function alert_moderators ($db, $title, $start, $end, $description, $city,
$region, $url, $contact)
+function alert_moderators ($db, $id, $title, $start, $end, $description,
$city,
+ $region, $locality, $url, $contact)
{
- $mail_title = "Nouvel �v�nement � mod�rer : " . $title;
+ global $moderatorlist;

+ $mail_title = "Nouvel �v�nement � mod�rer : '" . $title . "'";
+
$mail_body = "Bonjour,\n\n" .
- "Un nouvel �v�nement est � mod�rer sur " .
calendar_absolute_url("moderate.php") . "\n\n".
- "Titre: " . $title . "\n" .
- "D�but: " . date_timestamp2humanreadable($start) . "\n".
- "Fin: " . date_timestamp2humanreadable($end) . "\n" .
- "Description: " . $description . "\n".
- "Ville: " . $city . "\n" .
- "URL: " . $url . "\n".
- "Contact: " . $contact . "\n";
+ "Un nouvel �v�nement est � mod�rer sur\n" .
calendar_absolute_url("moderate.php#" . $id) . "\n\n".
+ format_ascii_event ($db, $title, $start, $end, $description, $city,
$region,
+ $locality, $url, $contact) . "\n\n" .
+ "Merci !\n" .
+ "-- Agenda du Libre";

- $sql = "select * from users";
+ calendar_mail ($moderatorlist, "", $mail_title, $mail_body);

- $ret = $db->query($sql);
-
- if ($ret == FALSE)
- {
- error ("Erreur lors de la requ�te <i>" . $sql . "</i>");
- return -1;
- }
-
- while ($row = mysql_fetch_object ($ret))
- {
- calendar_mail ($row->email, $mail_title, $mail_body);
- }
-
return 0;
}

@@ -141,7 +128,8 @@
return -1;
}

- alert_moderators ($db, $title, $start, $end, $description, $city, $region,
$url, $contact);
+ alert_moderators ($db, $db->insertid(), $title, $start, $end,
$description, $city,
+ $region, $locality, $url, $contact);

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>";







Archives gérées par MHonArc 2.6.16.

Haut de le page