From 600508a3dcee6b67fa8bf17ad21b194021bae111 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Sat, 5 Nov 2005 14:47:41 +0000 Subject: [PATCH] permettre les surcharges ... et la charge --- .gitattributes | 1 + ecrire/inc_message.php | 462 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 463 insertions(+) create mode 100644 ecrire/inc_message.php diff --git a/.gitattributes b/.gitattributes index 1d37eb0f18..2805269b5e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -273,6 +273,7 @@ ecrire/inc_forum_admin.php -text ecrire/inc_headers.php -text ecrire/inc_lang_liste.php -text ecrire/inc_magicquotes.php -text +ecrire/inc_message.php -text ecrire/inc_mini_nav.php -text ecrire/inc_minipres.php -text ecrire/inc_naviguer.php -text diff --git a/ecrire/inc_message.php b/ecrire/inc_message.php new file mode 100644 index 0000000000..13156261d5 --- /dev/null +++ b/ecrire/inc_message.php @@ -0,0 +1,462 @@ +<?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_ecrire("inc_presentation.php3"); +include_ecrire("inc_texte.php3"); +include_ecrire("inc_urls.php3"); +include_ecrire("inc_rubriques.php3"); +include_ecrire ("inc_mots.php3"); + + +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 20"; + afficher_forum(spip_query($query_forum), $forum_retour); + echo "\n</p>"; +} + + +function http_message_avec_participants($id_message, $statut, $forcer_dest, $nouv_auteur, $cherche_auteur) +{ + global $connect_id_auteur, $couleur_claire ; + 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(); + return $total_dest; +} + +function http_affiche_message($id_message, $expediteur, $statut, $type, $texte, $total_dest, $titre, $rv, $date_heure) +{ + global $connect_id_auteur,$connect_statut; + + 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') { + $total_dest = http_message_avec_participants($id_message, $statut, $forcer_dest, $nouv_auteur, $cherche_auteur); + } + + 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>"; +} + +// Convertir dates a calendrier correct (exemple: 31 fevrier devient debut mars, 24h12 devient 00h12 du lendemain) + +function change_date_message($id_message, $heures,$minutes,$mois, $jour, $annee, $heures_fin,$minutes_fin,$mois_fin, $jour_fin, $annee_fin) +{ + $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'"); +} + + + +function affiche_message_dist($id_message) +{ + global $connect_id_auteur, $echelle, $partie_cal; + 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(); + + http_affiche_message($id_message, $expediteur, $statut, $type, $texte, $total_dest, $titre, $rv, $date_heure); + + // reponses et bouton poster message + + http_afficher_forum_perso($id_message, $titre); + } + + fin_page(); +} + +?> -- GitLab