Rev 609 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2005 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
include ("inc.php3");
include_ecrire ("inc_mots.php3");
include_ecrire ("inc_calendrier.php");
function http_afficher_rendez_vous($date_heure, $date_fin)
{
global $spip_lang_rtl;
if (jour($date_heure) == jour($date_fin) AND mois($date_heure) == mois($date_fin) AND annee($date_heure) == annee($date_fin)) {
echo "<p><center class='verdana2'>"._T('titre_rendez_vous')." ".majuscules(nom_jour($date_heure))." <b>".majuscules(affdate($date_heure))."</b><br><b>".heures($date_heure)." "._T('date_mot_heures')." ".minutes($date_heure)."</b>";
echo " <img src='puce$spip_lang_rtl.gif' border='0'> ".heures($date_fin)." "._T('date_mot_heures')." ".minutes($date_fin)."</center>";
} else {
echo "<p><center class='verdana2'>"._T('titre_rendez_vous')."<br> ".majuscules(nom_jour($date_heure))." <b>".majuscules(affdate($date_heure))."</b>, <b>".heures($date_heure)." "._T('date_mot_heures')." ".minutes($date_heure)."</b>";
echo "<center class='verdana2'><img src='puce$spip_lang_rtl.gif' border='0'> ".majuscules(nom_jour($date_fin))." ".majuscules(affdate($date_fin)).", <b>".heures($date_fin)." "._T('date_mot_heures')." ".minutes($date_fin)."</b>";
//echo " <img src='puce$spip_lang_rtl.gif' border='0'> ".heures($date_fin)." "._T('date_mot_heures')." ".minutes($date_fin)."</center>";
}
}
function sql_nouveau_participant($nouv_auteur, $id_message)
{
spip_query("DELETE FROM spip_auteurs_messages WHERE id_auteur='$nouv_auteur' AND id_message='$id_message'");
spip_query("INSERT INTO spip_auteurs_messages (id_auteur,id_message,vu) VALUES ('$nouv_auteur','$id_message','non')");
}
function http_auteurs_ressemblants($cherche_auteur, $id_message)
{
global $connect_id_auteur;
$query = spip_query("
SELECT id_auteur, nom
FROM spip_auteurs
WHERE messagerie<>'non' AND id_auteur<>'$connect_id_auteur' AND pass<>'' AND login<>''");
$table_auteurs = array();
$table_ids = array();
while ($row = spip_fetch_array($query)) {
$table_auteurs[] = $row['nom'];
$table_ids[] = $row['id_auteur'];
}
$resultat = mots_ressemblants($cherche_auteur, $table_auteurs, $table_ids);
if (!$resultat) {
return '<b>' . _T('info_recherche_auteur_zero', array('cherche_auteur' => $cherche_auteur))."</b><br />";
}
else if (count($resultat) == 1) {
list(, $nouv_auteur) = each($resultat);
sql_nouveau_participant($nouv_auteur, $id_message);
$row = spip_fetch_array(spip_query("SELECT nom FROM spip_auteurs WHERE id_auteur=$nouv_auteur"));
$nom_auteur = $row['nom'];
return "<b>"._T('info_ajout_participant')."</b><br />" .
"<ul><li><font face='Verdana,Arial,Sans,sans-serif' size='2'><b><font size='3'>$nom_auteur</font></b></font>\n</ul>";
}
else if (count($resultat) < 16) {
$res = '';
$query = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur IN (" .
join(',', $resultat) .
") ORDER BY nom");
while ($row = spip_fetch_array($query)) {
$id_auteur = $row['id_auteur'];
$nom_auteur = $row['nom'];
$email_auteur = $row['email'];
$bio_auteur = $row['bio'];
$res .= "<LI><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><b><FONT SIZE=3>$nom_auteur</FONT></b>" .
($email_auteur ? " ($email_auteur)" : '') .
" | <A HREF=\"message.php3?id_message=$id_message&ajout_auteur=oui&nouv_auteur=$id_auteur\">" .
_T('lien_ajout_destinataire').
"</A>" .
(!trim($bio_auteur) ? '' :
("<br /><FONT SIZE=1>".propre(couper($bio_auteur, 100))."</FONT>\n")) .
"</FONT></LI>\n";
}
return "<b>"._T('info_recherche_auteur_ok', array('cherche_auteur' => $cherche_auteur))."</b><br /><UL>$res</UL>";
}
else {
return "<b>"._T('info_recherche_auteur_a_affiner', array('cherche_auteur' => $cherche_auteur))."</b><br />";
}
}
function http_visualiser_participants($auteurs_tmp)
{
return "\n<table border='0' cellspacing='0' cellpadding='3' width='100%' background=''><tr><td bgcolor='#EEEECC'>" .
bouton_block_invisible("auteurs,ajouter_auteur") .
"<span class='serif2'><b>" .
_T('info_nombre_partcipants') .
"</b></span>" .
((count($auteurs_tmp) == 0) ? '' :
(" <font class='arial2'>".join($auteurs_tmp,", ")."</font>")) .
"</td></tr></table>";
}
function http_ajouter_participants($ze_auteurs, $id_message)
{
$query_ajout_auteurs = "SELECT * FROM spip_auteurs WHERE ";
if ($ze_auteurs) $query_ajout_auteurs .= "id_auteur NOT IN ($ze_auteurs) AND ";
$query_ajout_auteurs .= " messagerie<>'non' AND statut IN ('0minirezo', '1comite') ORDER BY statut, nom";
$result_ajout_auteurs = spip_query($query_ajout_auteurs);
if (spip_num_rows($result_ajout_auteurs) > 0) {
echo "<FORM ACTION='message.php3' METHOD='post'>";
echo "<DIV align=left><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><b>"._T('bouton_ajouter_participant')." </b></FONT>\n";
echo "<input TYPE='Hidden' NAME='id_message' VALUE=\"$id_message\">";
if (spip_num_rows($result_ajout_auteurs) > 50) {
echo "<input TYPE='text' NAME='cherche_auteur' CLASS='fondl' VALUE='' SIZE='20'>";
echo "<input TYPE='submit' NAME='Chercher' VALUE='"._T('bouton_chercher')."' CLASS='fondo'>";
}
else {
echo "<SELECT NAME='nouv_auteur' SIZE='1' STYLE='WIDTH=150' CLASS='fondl'>";
$group = false;
$group2 = false;
while($row=spip_fetch_array($result_ajout_auteurs)) {
$id_auteur = $row['id_auteur'];
$nom = $row['nom'];
$email = $row['email'];
$statut_auteur = $row['statut'];
$statut_auteur=ereg_replace("0minirezo", _T('info_statut_administrateur'), $statut_auteur);
$statut_auteur=ereg_replace("1comite", _T('info_statut_redacteur'), $statut_auteur);
$statut_auteur=ereg_replace("2redac", _T('info_statut_redacteur'), $statut_auteur);
$statut_auteur=ereg_replace("5poubelle", _T('info_statut_efface'), $statut_auteur);
$premiere = strtoupper(substr(trim($nom), 0, 1));
if ($GLOBALS['connect_statut'] != '0minirezo') {
if ($p = strpos($email, '@')) $email = substr($email, 0, $p).'@...';
}
if ($statut_auteur != $statut_old) {
echo "\n<OPTION VALUE=\"x\">";
echo "\n<OPTION VALUE=\"x\"> $statut_auteur".'s';
}
if ($premiere != $premiere_old AND ($statut_auteur != _T('info_administrateur') OR !$premiere_old)) {
echo "\n<OPTION VALUE=\"x\">";
}
$texte_option = supprimer_tags(couper("$nom ($email) ", 40));
echo "\n<OPTION VALUE=\"$id_auteur\"> $texte_option";
$statut_old = $statut_auteur;
$premiere_old = $premiere;
}
echo "</SELECT>";
echo "<input TYPE='submit' NAME='Ajouter' VALUE='"._T('bouton_ajouter')."' CLASS='fondo'>";
}
echo "</div></FORM>";
}
}
function http_afficher_forum_perso($id_message, $titre)
{
$forum_retour = urlencode("message.php3?id_message=$id_message");
echo "<br /><br />\n<div align='center'>";
icone(_T('icone_poster_message'), "forum_envoi.php3?statut=perso&adresse_retour=".$forum_retour."&id_message=$id_message&titre_message=".urlencode($titre), "forum-interne-24.gif", "creer.gif");
echo "</div>\n<p align='left'>";
$query_forum = "SELECT * FROM spip_forum WHERE statut='perso' AND id_message='$id_message' AND id_parent=0 ORDER BY date_heure DESC LIMIT 0,20";
afficher_forum(spip_query($query_forum), $forum_retour);
echo "\n</p>";
}
if (!spip_num_rows(spip_query("
SELECT id_auteur FROM spip_auteurs_messages WHERE id_auteur=$connect_id_auteur AND id_message=$id_message"))) {
$row = spip_fetch_array(spip_query("SELECT type FROM spip_messages WHERE id_message=$id_message"));
if ($row['type'] != "affich"){
debut_page(_T('info_acces_refuse'));
debut_gauche();
debut_droite();
echo "<b>"._T('avis_non_acces_message')."</b><p>";
fin_page();
exit;
}
}
if ($ajout_forum AND strlen($texte) > 10 AND strlen($titre) > 2) {
spip_query("UPDATE spip_auteurs_messages SET vu='non' WHERE id_message='$id_message'");
}
if ($modifier_message == "oui") {
$titre = addslashes($titre);
$texte = addslashes($texte);
spip_query("UPDATE spip_messages SET titre='$titre', texte='$texte' WHERE id_message='$id_message'");
}
if ($changer_rv) {
spip_query("UPDATE spip_messages SET rv='$rv' WHERE id_message='$id_message'");
}
if ($jour) {
// Convertir dates a calendrier correct (exemple: 31 fevrier devient debut mars, 24h12 devient 00h12 du lendemain)
$date = date("Y-m-d H:i:s", mktime($heures,$minutes,0,$mois, $jour, $annee));
$jour = journum($date);
$mois = mois($date);
$annee = annee($date);
$heures = heures($date);
$minutes = minutes($date);
// Verifier que la date de fin est bien posterieure au debut
$unix_debut = date("U", mktime($heures,$minutes,0,$mois, $jour, $annee));
$unix_fin = date("U", mktime($heures_fin,$minutes_fin,0,$mois_fin, $jour_fin, $annee_fin));
if ($unix_fin <= $unix_debut) {
$jour_fin = $jour;
$mois_fin = $mois;
$annee_fin = $annee;
$heures_fin = $heures + 1;
$minutes_fin = $minutes;
}
$date_fin = date("Y-m-d H:i:s", mktime($heures_fin,$minutes_fin,0,$mois_fin, $jour_fin, $annee_fin));
$jour_fin = journum($date_fin);
$mois_fin = mois($date_fin);
$annee_fin = annee($date_fin);
$heures_fin = heures($date_fin);
$minutes_fin = minutes($date_fin);
spip_query("UPDATE spip_messages SET date_heure='$annee-$mois-$jour $heures:$minutes:00', date_fin='$annee_fin-$mois_fin-$jour_fin $heures_fin:$minutes_fin:00' WHERE id_message='$id_message'");
}
if ($change_statut) {
spip_query("UPDATE spip_messages SET statut='$change_statut' WHERE id_message='$id_message'");
spip_query("UPDATE spip_messages SET date_heure=NOW() WHERE id_message='$id_message' AND rv<>'oui'");
}
if ($supp_dest) {
spip_query("DELETE FROM spip_auteurs_messages WHERE id_message='$id_message' AND id_auteur='$supp_dest'");
}
if ($row = spip_fetch_array(spip_query("SELECT * FROM spip_messages WHERE id_message=$id_message"))) {
$id_message = $row['id_message'];
$date_heure = $row["date_heure"];
$date_fin = $row["date_fin"];
$titre = typo($row["titre"]);
$texte = propre($row["texte"]);
$type = $row["type"];
$statut = $row["statut"];
$page = $row["page"];
$rv = $row["rv"];
$expediteur = $row['id_auteur'];
$lejour=journum($row['date_heure']);
$lemois = mois($row['date_heure']);
$lannee = annee($row['date_heure']);
// Marquer le message vu pour le visiteur
if ($type != "affich")
spip_query("UPDATE spip_auteurs_messages SET vu='oui' WHERE id_message='$id_message' AND id_auteur='$connect_id_auteur'");
debut_page($titre, "redacteurs", "messagerie");
debut_gauche();
if ($rv != 'non')
echo http_calendrier_agenda ($lannee, $lemois, $lejour, $lemois, $lannee,false, 'calendrier.php3');
echo "<br />";
echo http_calendrier_rv(sql_calendrier_taches_annonces(),"annonces");
echo http_calendrier_rv(sql_calendrier_taches_pb(),"pb");
echo http_calendrier_rv(sql_calendrier_taches_rv(), "rv");
if ($rv != "non") {
list ($sh, $ah) = sql_calendrier_interval(sql_calendrier_jour($lannee,$lemois, $lejour));
foreach ($ah as $k => $v)
{
foreach ($v as $l => $e)
{
if (ereg("=$id_message$", $e['URL']))
{
$ah[$k][$l]['CATEGORIES'] = "calendrier-nb";
break;
}
}
}
creer_colonne_droite();
echo http_calendrier_ics_titre($lannee,$lemois,$lejour,'calendrier.php3');
echo http_calendrier_ics($lannee,$lemois, $lejour, $echelle, $partie_cal, 90, array($sh, $ah));
}
debut_droite();
if ($type == 'normal') {
$le_type = _T('info_message_2').aide ("messut");
$la_couleur = "#02531B";
$couleur_fond = "#CFFEDE";
}
else if ($type == 'pb') {
$le_type = _T('info_pense_bete').aide ("messpense");
$la_couleur = "#3874B0";
$couleur_fond = "#EDF3FE";
}
else if ($type == 'affich') {
$le_type = _T('info_annonce');
$la_couleur = "#ccaa00";
$couleur_fond = "#ffffee";
}
// affichage des caracteristiques du message
echo "<div style='border: 1px solid $la_couleur; background-color: $couleur_fond; padding: 5px;'>"; // debut cadre de couleur
//debut_cadre_relief("messagerie-24.gif");
echo "\n<table width='100%' cellpadding='0' cellspacing='0' border='0'>";
echo "<tr><td>"; # uniques
echo "<font face='Verdana,Arial,Sans,sans-serif' size='2' color='$la_couleur'><b>$le_type</b></font><br />";
echo "<font face='Verdana,Arial,Sans,sans-serif' size='5'><b>$titre</b></font>";
if ($statut == 'redac') {
echo "<br /><font face='Verdana,Arial,Sans,sans-serif' size='2' color='red'><b>"._T('info_redaction_en_cours')."</b></font>";
}
else if ($rv == 'non') {
echo "<br /><font face='Verdana,Arial,Sans,sans-serif' size='2' color='#666666'><b>".nom_jour($date_heure).' '.affdate_heure($date_heure)."</b></font>";
}
echo "<p>";
//////////////////////////////////////////////////////
// Message avec participants
//
if ($type == 'normal') {
echo debut_cadre_enfonce("redacteurs-24.gif", true);
if ($cherche_auteur) {
echo "\n<p align='left'><div class='cadre-info'>" .
http_auteurs_ressemblants($cherche_auteur , $id_message) .
"\n</div></p>";
}
if ($nouv_auteur > 0) sql_nouveau_participant($nouv_auteur, $id_message);
//
// Liste des participants
//
$query_auteurs = "SELECT auteurs.* FROM spip_auteurs AS auteurs, spip_auteurs_messages AS lien WHERE lien.id_message=$id_message AND lien.id_auteur=auteurs.id_auteur";
$result_auteurs = spip_query($query_auteurs);
$total_dest = spip_num_rows($result_auteurs);
if ($total_dest > 0) {
$couleurs = array("#FFFFFF",$couleur_claire);
$auteurs_tmp = array();
$ze_auteurs = array();
$ifond = 0;
$res = '';
while($row = spip_fetch_array($result_auteurs)) {
$id_auteur = $row["id_auteur"];
$nom_auteur = typo($row["nom"]);
$statut_auteur = $row["statut"];
$ze_auteurs[] = $id_auteur;
$couleur = $couleurs[$ifond];
$ifond = 1 - $ifond;
$auteurs_tmp[] = "<a href='auteurs_edit.php3?id_auteur=" . $id_auteur ."'>". $nom_auteur . "</a>";
$res .= "<tr><td background='' bgcolor='$couleur'><font face='Verdana,Arial,Sans,sans-serif' size=2> ".
bonhomme_statut($row)." " .
(($id_auteur != $expediteur) ? '' :
"<font class='arial0'>".
_T('info_auteur_message')
."</font> ") .
$nom_auteur .
"</font></td>" .
"<td background='' bgcolor='$couleur' align='right'><font face='Verdana,Arial,Sans,sans-serif' size='1'>" .
(($id_auteur == $connect_id_auteur) ?
" " :
("[<a href='message.php3?id_message=$id_message&supp_dest=$id_auteur'>"._T('lien_retrait_particpant')."</a>]")) .
"</font></td></tr>\n";
}
echo
http_visualiser_participants($auteurs_tmp),
debut_block_invisible("auteurs"),
"\n<table border=0 cellspacing=0 cellpadding=3 width=100% background=''><tr><td bgcolor='#eeeecc' colspan=2>",
$res,
"</td></tr></table>",
fin_block();
}
if ($statut == 'redac' OR $forcer_dest)
http_ajouter_participants(join(',', $ze_auteurs),
$id_message);
else {
echo
debut_block_invisible("ajouter_auteur"),
"<br /><div align='right'><font face='Verdana,Arial,Sans,sans-serif' size='2'><a href='message.php3?id_message=$id_message&forcer_dest=oui'>"._T('lien_ajouter_participant')."</a></font></div>",
fin_block();
}
fin_cadre_enfonce();
}
if ($rv != "non") http_afficher_rendez_vous($date_heure, $date_fin);
//////////////////////////////////////////////////////
// Le message lui-meme
//
echo "<div align='left'>",
"\n<table width='100%' cellpadding='0' cellspacing='0' border='0'>",
"<tr><td>",
"<div class='serif'><p>$texte</p></div>";
if ($expediteur == $connect_id_auteur AND $statut == 'redac') {
if ($type == 'normal' AND $total_dest < 2){
echo "<p align='right'><font face='Verdana,Arial,Sans,sans-serif' size='2' color='#666666'><b>"._T('avis_destinataire_obligatoire')."</b></font></p>";
} else {
echo "\n<p><center><table><tr><td>";
icone (_T('icone_envoyer_message'), ("message.php3?id_message=$id_message&change_statut=publie"), "messagerie-24.gif", "creer.gif");
echo "</td></tr></table></center></p>";
}
}
echo "</td></tr></table></div>";
echo "</td></tr></table>"; //fin_cadre_relief();
echo "</div>"; // fin du cadre de couleur
// Les boutons
echo "\n<table width='100%'><tr><td>";
// bouton de suppression
if ($expediteur == $connect_id_auteur AND ($statut == 'redac' OR $type == 'pb') OR ($type == 'affich' AND $connect_statut == '0minirezo')) {
echo "\n<table align='left'><tr><td>";
icone (_T('icone_supprimer_message'), ("messagerie.php3?detruire_message=$id_message"), "messagerie-24.gif", "supprimer.gif");
echo "</td></tr></table>";
}
// bouton retrait de la discussion
if ($statut == 'publie' AND $type == 'normal') {
echo "\n<table align='left'><tr><td>";
icone (_T('icone_arret_discussion'), "messagerie.php3?id_message=$id_message&supp_dest=$connect_id_auteur", "messagerie-24.gif", "supprimer.gif");
echo "</td></tr></table>";
}
// bouton modifier ce message
if ($expediteur == $connect_id_auteur OR ($type == 'affich' AND $connect_statut == '0minirezo')) {
echo "\n<table align='right'><tr><td>";
icone (_T('icone_modifier_message'), ("message_edit.php3?id_message=$id_message"), "messagerie-24.gif", "edit.gif");
echo "</td></tr></table>";
}
echo "</td></tr></table>";
// reponses et bouton poster message
http_afficher_forum_perso($id_message, $titre);
}
fin_page();
?>