1 | <?php |
---|
2 | |
---|
3 | /***************************************************************************\ |
---|
4 | * SPIP, Systeme de publication pour l'internet * |
---|
5 | * * |
---|
6 | * Copyright (c) 2001-2011 * |
---|
7 | * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * |
---|
8 | * * |
---|
9 | * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * |
---|
10 | * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * |
---|
11 | \***************************************************************************/ |
---|
12 | |
---|
13 | if (!defined('_ECRIRE_INC_VERSION')) return; |
---|
14 | |
---|
15 | include_spip('inc/presentation'); |
---|
16 | include_spip('inc/ressembler'); // mots_ressemblants() |
---|
17 | include_spip('inc/agenda'); |
---|
18 | |
---|
19 | // http://doc.spip.org/@exec_message_dist |
---|
20 | function exec_message_dist() |
---|
21 | { |
---|
22 | exec_message_args(intval(_request('id_message')),_request('forcer_dest'), _request('cherche_auteur')); |
---|
23 | } |
---|
24 | |
---|
25 | // http://doc.spip.org/@exec_message_args |
---|
26 | function exec_message_args($id_message, $forcer_dest, $cherche_auteur) |
---|
27 | { |
---|
28 | global $connect_id_auteur; |
---|
29 | |
---|
30 | $res = sql_fetsel("type,id_auteur", "spip_messages", "id_message=$id_message"); |
---|
31 | if ($res AND $res['type'] != "affich"){ |
---|
32 | $r2 = sql_fetsel("vu", "spip_auteurs_liens", "id_auteur=$connect_id_auteur AND objet='message' AND id_objet=$id_message"); |
---|
33 | if (!$r2 AND $res['id_auteur']==$connect_id_auteur){ |
---|
34 | include_spip('action/editer_auteur'); |
---|
35 | auteur_associer($connect_id_auteur, array('message'=>$id_message),array('vu'=>'non')); |
---|
36 | $r2 = sql_fetsel("*", "spip_auteurs_liens", "id_auteur=$connect_id_auteur AND objet='message' AND id_objet=$id_message"); |
---|
37 | $res = $r2; |
---|
38 | } |
---|
39 | } |
---|
40 | |
---|
41 | if (!$res) { |
---|
42 | include_spip('inc/minipres'); |
---|
43 | echo minipres(); |
---|
44 | } else { |
---|
45 | // Marquer le message vu pour le visiteur |
---|
46 | if (isset($res['vu']) AND $res['vu'] != 'oui') { |
---|
47 | include_spip('inc/headers'); |
---|
48 | redirige_par_entete(redirige_action_auteur("editer_message","$id_message/:$connect_id_auteur", 'message', "id_message=$id_message", true)); |
---|
49 | } |
---|
50 | exec_affiche_message_dist($id_message, $cherche_auteur, $forcer_dest); |
---|
51 | } |
---|
52 | } |
---|
53 | |
---|
54 | // http://doc.spip.org/@http_afficher_rendez_vous |
---|
55 | function http_afficher_rendez_vous($date_heure, $date_fin) |
---|
56 | { |
---|
57 | global $spip_lang_rtl; |
---|
58 | |
---|
59 | $dirpuce = _DIR_RACINE . 'dist'; |
---|
60 | if (jour($date_heure) == jour($date_fin) AND mois($date_heure) == mois($date_fin) AND annee($date_heure) == annee($date_fin)) { |
---|
61 | echo "<p class='verdana2' style='text-align: center'>"._T('titre_rendez_vous')." ".majuscules(nom_jour($date_heure))." <b>".majuscules(affdate($date_heure))."</b><br />\n<b>".heures($date_heure)." "._T('date_mot_heures')." ".minutes($date_heure)."</b>"; |
---|
62 | echo " <img src='$dirpuce/puce$spip_lang_rtl.gif' alt=' ' style='border: 0px;' /> ".heures($date_fin)." "._T('date_mot_heures')." ".minutes($date_fin)."</p>"; |
---|
63 | } else { |
---|
64 | echo "<p class='verdana2' style='text-align: center'>"._T('titre_rendez_vous')."<br />\n".majuscules(nom_jour($date_heure))." <b>".majuscules(affdate($date_heure))."</b>, <b>".heures($date_heure)." "._T('date_mot_heures')." ".minutes($date_heure)."</b>"; |
---|
65 | echo "<br />\n<img src='$dirpuce/puce$spip_lang_rtl.gif' alt=' ' style='border: 0px;' /> ".majuscules(nom_jour($date_fin))." ".majuscules(affdate($date_fin)).", <b>".heures($date_fin)." "._T('date_mot_heures')." ".minutes($date_fin)."</b></p>"; |
---|
66 | } |
---|
67 | } |
---|
68 | |
---|
69 | // http://doc.spip.org/@http_auteurs_ressemblants |
---|
70 | function http_auteurs_ressemblants($cherche_auteur, $id_message) |
---|
71 | { |
---|
72 | |
---|
73 | $cherche_auteur = htmlspecialchars($cherche_auteur); |
---|
74 | |
---|
75 | global $connect_id_auteur; |
---|
76 | $query = sql_select("id_auteur, nom", "spip_auteurs", "messagerie<>'non' AND id_auteur<>'$connect_id_auteur' AND pass<>'' AND login<>''"); |
---|
77 | $table_auteurs = array(); |
---|
78 | $table_ids = array(); |
---|
79 | while ($row = sql_fetch($query)) { |
---|
80 | $table_auteurs[] = $row['nom']; |
---|
81 | $table_ids[] = $row['id_auteur']; |
---|
82 | } |
---|
83 | $resultat = mots_ressemblants($cherche_auteur, $table_auteurs, $table_ids); |
---|
84 | if (!$resultat) { |
---|
85 | return '<b>' . _T('info_recherche_auteur_zero', array('cherche_auteur' => $cherche_auteur))."</b><br />"; |
---|
86 | } |
---|
87 | else if (count($resultat) == 1) { |
---|
88 | // action/editer_message a du prendre en compte ce cas |
---|
89 | list(, $nouv_auteur) = each($resultat); |
---|
90 | $nom_auteur = sql_getfetsel("nom", "spip_auteurs", "id_auteur=$nouv_auteur"); |
---|
91 | return "<b>"._T('info_ajout_participant')."</b><br />" . |
---|
92 | "<ul><li><span class='verdana1 spip_small'><b><span class='spip_medium'>$nom_auteur</span></b></span></li>\n</ul>"; |
---|
93 | } |
---|
94 | else if (count($resultat) < 16) { |
---|
95 | $res = ''; |
---|
96 | $query = sql_select("*", "spip_auteurs", "id_auteur IN (" . join(',', $resultat) . ")", "", "nom"); |
---|
97 | |
---|
98 | while ($row = sql_fetch($query)) { |
---|
99 | $id_auteur = $row['id_auteur']; |
---|
100 | $nom_auteur = $row['nom']; |
---|
101 | $email_auteur = $row['email']; |
---|
102 | $bio_auteur = $row['bio']; |
---|
103 | $res .= "\n<li><span class='spip_medium verdana1'><b>$nom_auteur</b></span>" . |
---|
104 | ($email_auteur ? " ($email_auteur)" : '') . |
---|
105 | "\n <a href='" . redirige_action_auteur("editer_message","$id_message/@$id_auteur", 'message', "id_message=$id_message") |
---|
106 | . "'>" |
---|
107 | . _T('lien_ajout_destinataire'). |
---|
108 | "</a>" . |
---|
109 | (!trim($bio_auteur) ? '' : |
---|
110 | ("<br />\n<span class='spip_x-small'>".propre(couper($bio_auteur, 100))."</span>\n")) . |
---|
111 | "</li>\n"; |
---|
112 | } |
---|
113 | return "<b>"._T('info_recherche_auteur_ok', array('cherche_auteur' => $cherche_auteur))."</b><br />" .($res ? "<ul>$res</ul>" : ''); |
---|
114 | } |
---|
115 | else { |
---|
116 | return "<b>"._T('info_recherche_auteur_a_affiner', array('cherche_auteur' => $cherche_auteur))."</b><br />"; |
---|
117 | } |
---|
118 | } |
---|
119 | |
---|
120 | |
---|
121 | /** |
---|
122 | * Lister les auteurs autorises a on ne sait quoi ... |
---|
123 | * Plus rien a faire ici |
---|
124 | * |
---|
125 | * // http://doc.spip.org/@auteurs_autorises |
---|
126 | * |
---|
127 | * @param string $in |
---|
128 | * @param string $cond |
---|
129 | * @return string |
---|
130 | */ |
---|
131 | function auteurs_autorises($in, $cond='') |
---|
132 | { |
---|
133 | return sql_in("statut", array('0minirezo','1comite')) |
---|
134 | . (!$cond ? '' : " AND $cond") |
---|
135 | . (!$in ? '' : (" AND ". sql_in("id_auteur", $in, 'NOT'))); |
---|
136 | } |
---|
137 | |
---|
138 | // http://doc.spip.org/@http_ajouter_participants |
---|
139 | function http_ajouter_participants($ze_auteurs, $id_message) |
---|
140 | { |
---|
141 | include_spip('inc/editer_auteurs'); |
---|
142 | $cond = auteurs_autorises($ze_auteurs, "messagerie<>'non'"); |
---|
143 | $all = objet_auteur_select($cond); |
---|
144 | if (!$all) return ''; |
---|
145 | |
---|
146 | $res = "<span class='verdana1 spip_small'><b><label for='id_message'>" . |
---|
147 | _T('bouton_ajouter_participant') ."</label> </b></span>\n" . |
---|
148 | "<input type='hidden' name='id_message' id='id_message' value=\"$id_message\" />"; |
---|
149 | |
---|
150 | if (is_numeric($all)) { |
---|
151 | $res .= "\n<input type='text' name='cherche_auteur' id='cherche_auteur' class='fondl' value='' size='20' />"; |
---|
152 | $res .= "\n<input type='submit' value='"._T('bouton_chercher')."' class='fondo' />"; |
---|
153 | } else { |
---|
154 | |
---|
155 | $res .= "<select name='nouv_auteur' id='nouv_auteur' size='1' style='width: 150px' class='fondl'>" |
---|
156 | . $all |
---|
157 | . "</select>" |
---|
158 | . "<input type='submit' value='"._T('bouton_ajouter')."' class='fondo' />"; |
---|
159 | } |
---|
160 | return redirige_action_post('editer_message', "$id_message,", 'message', "id_message=$id_message", "<div style='text-align: left'>\n$res</div>\n"); |
---|
161 | } |
---|
162 | |
---|
163 | // http://doc.spip.org/@http_message_avec_participants |
---|
164 | function http_message_avec_participants($id_message, $statut, $forcer_dest, $cherche_auteur, $expediteur='') |
---|
165 | { |
---|
166 | global $connect_id_auteur ; |
---|
167 | |
---|
168 | if ($cherche_auteur) { |
---|
169 | echo "\n<div style='text-align: left' class='cadre-info'>" |
---|
170 | . http_auteurs_ressemblants($cherche_auteur , $id_message) |
---|
171 | . "\n</div>"; |
---|
172 | } |
---|
173 | $bouton = bouton_block_depliable(_T('info_nombre_partcipants'),true,"auteurs,ajouter_auteur"); |
---|
174 | echo debut_cadre_enfonce("auteur-24.png", true, '', $bouton, 'participants'); |
---|
175 | |
---|
176 | // |
---|
177 | // Liste des participants |
---|
178 | // |
---|
179 | |
---|
180 | $result = sql_allfetsel("A.*", "spip_auteurs AS A, spip_auteurs_liens AS L", "L.objet='message' AND L.id_objet=$id_message AND L.id_auteur=A.id_auteur"); |
---|
181 | |
---|
182 | $total_dest = count($result); |
---|
183 | |
---|
184 | if ($total_dest > 0) { |
---|
185 | $ifond = 0; |
---|
186 | $res = ''; |
---|
187 | $formater_auteur = charger_fonction('formater_auteur', 'inc'); |
---|
188 | $t = _T('lien_retrait_particpant'); |
---|
189 | foreach($result as $k => $row) { |
---|
190 | $id_auteur = $row["id_auteur"]; |
---|
191 | list($status, $mail, $nom, $site,) = $formater_auteur($id_auteur, $row); |
---|
192 | if ($id_auteur == $expediteur) { |
---|
193 | |
---|
194 | $nom = "<span class='arial0' style='margin-left: 10px'>" |
---|
195 | . _T('info_auteur_message') |
---|
196 | . "</span> $nom"; |
---|
197 | } |
---|
198 | $class = alterner (++$ifond,'row_even','row_odd'); |
---|
199 | $res .= "<tr class='$class'>\n<td class='nom'>$status $mail $nom $site$exp</td>" |
---|
200 | . "\n<td align='right' class='lien'>" |
---|
201 | . (($id_auteur == $connect_id_auteur) ? " " : ("[<a href='" . redirige_action_auteur("editer_message","$id_message/-$id_auteur", 'message', "id_message=$id_message") . "'>$t</a>]")) . "</td></tr>\n"; |
---|
202 | $result[$k] = $id_auteur; |
---|
203 | |
---|
204 | } |
---|
205 | echo |
---|
206 | debut_block_depliable(true,"auteurs"), |
---|
207 | "\n<table class='spip' width='100%'>", |
---|
208 | $res, |
---|
209 | "</table>\n", |
---|
210 | fin_block(); |
---|
211 | } |
---|
212 | |
---|
213 | if ($statut == 'redac' OR $forcer_dest) |
---|
214 | echo http_ajouter_participants($result, $id_message); |
---|
215 | else { |
---|
216 | echo |
---|
217 | debut_block_depliable(true,"ajouter_auteur"), |
---|
218 | "<br />\n<div style='text-align: right' class='verdana1 spip_small'><a href='" . generer_url_ecrire("message","id_message=$id_message&forcer_dest=oui") . "'>"._T('lien_ajouter_participant')."</a></div>", |
---|
219 | fin_block(); |
---|
220 | } |
---|
221 | echo fin_cadre_enfonce(true); |
---|
222 | return $total_dest; |
---|
223 | } |
---|
224 | |
---|
225 | // http://doc.spip.org/@http_affiche_message |
---|
226 | function http_affiche_message($id_message, $expediteur, $statut, $type, $texte, $titre, $rv, $date_heure, $date_fin, $cherche_auteur, $forcer_dest) |
---|
227 | { |
---|
228 | global $connect_id_auteur,$connect_statut, $les_notes; |
---|
229 | |
---|
230 | if ($type == 'normal') { |
---|
231 | $le_type = _T('info_message_2').aide ("messut"); |
---|
232 | $la_couleur = "#02531b"; |
---|
233 | $fond = "#cffede"; |
---|
234 | } |
---|
235 | else if ($type == 'pb') { |
---|
236 | $le_type = _T('info_pense_bete').aide ("messpense"); |
---|
237 | $la_couleur = "#3874b0"; |
---|
238 | $fond = "#edf3fe"; |
---|
239 | } |
---|
240 | else if ($type == 'affich') { |
---|
241 | $le_type = _T('info_annonce'); |
---|
242 | $la_couleur = "#ccaa00"; |
---|
243 | $fond = "#ffffee"; |
---|
244 | } |
---|
245 | |
---|
246 | // affichage des caracteristiques du message |
---|
247 | |
---|
248 | echo "<div style='border: 1px solid $la_couleur; background-color: $fond; padding: 5px;'>"; // debut cadre de couleur |
---|
249 | //echo debut_cadre_relief("messagerie-24.png", true); |
---|
250 | echo "\n<table width='100%' border='0'>"; |
---|
251 | echo "<tr><td>"; # uniques |
---|
252 | |
---|
253 | echo "<span style='color: $la_couleur' class='verdana1 spip_small'><b>$le_type</b></span><br />"; |
---|
254 | echo "<span class='verdana1 spip_large'><b>$titre</b></span>"; |
---|
255 | if ($statut == 'redac') { |
---|
256 | echo "<br /><span style='color: red;' class='verdana1 spip_small'><b>"._T('info_redaction_en_cours')."</b></span>"; |
---|
257 | } |
---|
258 | else if ($rv == 'non') { |
---|
259 | echo "<br /><span style='color: #666666;' class='verdana1 spip_small'><b>".nom_jour($date_heure).' '.affdate_heure($date_heure)."</b></span>"; |
---|
260 | } |
---|
261 | |
---|
262 | |
---|
263 | ////////////////////////////////////////////////////// |
---|
264 | // Message avec participants |
---|
265 | // |
---|
266 | |
---|
267 | if ($type == 'normal') |
---|
268 | $total_dest = http_message_avec_participants($id_message, $statut, $forcer_dest, $cherche_auteur, $expediteur); |
---|
269 | |
---|
270 | if ($rv != "non") http_afficher_rendez_vous($date_heure, $date_fin); |
---|
271 | |
---|
272 | |
---|
273 | ////////////////////////////////////////////////////// |
---|
274 | // Le message lui-meme |
---|
275 | // |
---|
276 | |
---|
277 | echo "\n<br />" |
---|
278 | . "<div class='serif'>$texte</div>"; |
---|
279 | |
---|
280 | if ($les_notes) { |
---|
281 | echo debut_cadre_relief('', true); |
---|
282 | echo "<div dir=" . lang_dir() ."' class='arial11'>"; |
---|
283 | echo justifier("<b>"._T('info_notes')." :</b> ".$les_notes); |
---|
284 | echo "</div>"; |
---|
285 | echo fin_cadre_relief(true); |
---|
286 | } |
---|
287 | |
---|
288 | if ($expediteur == $connect_id_auteur AND $statut == 'redac') { |
---|
289 | if ($type == 'normal' AND $total_dest < 2) { |
---|
290 | echo "<p style='color: #666666; text-align: right;' class='verdana1 spip_small'><b>"._T('avis_destinataire_obligatoire')."</b></p>"; |
---|
291 | } else { |
---|
292 | echo "\n<div class='centered'>"; |
---|
293 | echo icone_verticale(_T('icone_envoyer_message'), redirige_action_auteur('editer_message', "$id_message/publie", "message","id_message=$id_message"), "messagerie-24.png", "new"); |
---|
294 | echo "</div>"; |
---|
295 | } |
---|
296 | } |
---|
297 | echo "</td></tr></table>\n"; |
---|
298 | |
---|
299 | // echo "</td></tr></table>\n"; //echo fin_cadre_relief(true); |
---|
300 | echo "</div>"; // fin du cadre de couleur |
---|
301 | |
---|
302 | // Les boutons |
---|
303 | |
---|
304 | $aut = ($expediteur == $connect_id_auteur); |
---|
305 | $aff = ($type == 'affich' AND $connect_statut == '0minirezo'); |
---|
306 | |
---|
307 | echo "\n<table width='100%'><tr><td>"; |
---|
308 | |
---|
309 | // bouton de suppression |
---|
310 | |
---|
311 | if ($aut AND ($statut == 'redac' OR $type == 'pb') OR $aff) { |
---|
312 | echo icone_verticale(_T('icone_supprimer_message'), redirige_action_auteur("editer_message","-$id_message", 'messagerie'), "messagerie-24.png", "del", 'left'); |
---|
313 | } |
---|
314 | |
---|
315 | // bouton retrait de la discussion |
---|
316 | |
---|
317 | if ($statut == 'publie' AND $type == 'normal') { |
---|
318 | echo icone_verticale(_T('icone_arret_discussion'), redirige_action_auteur("editer_message","$id_message/-$connect_id_auteur", 'messagerie', "id_message=$id_message"), "messagerie-24.png", "del", 'left'); |
---|
319 | } |
---|
320 | |
---|
321 | // bouton modifier ce message |
---|
322 | |
---|
323 | if ($aut OR $aff) { |
---|
324 | echo icone_verticale(_T('icone_modifier_message'), (generer_url_ecrire("message_edit","id_message=$id_message")), "messagerie-24.png", "edit", 'right'); |
---|
325 | } |
---|
326 | echo "</td></tr></table>"; |
---|
327 | } |
---|
328 | |
---|
329 | // http://doc.spip.org/@exec_affiche_message_dist |
---|
330 | function exec_affiche_message_dist($id_message, $cherche_auteur, $forcer_dest) |
---|
331 | { |
---|
332 | $row = sql_fetsel("*", "spip_messages", "id_message=$id_message"); |
---|
333 | if ($row) { |
---|
334 | $id_message = $row['id_message']; |
---|
335 | $date_heure = $row["date_heure"]; |
---|
336 | $date_fin = $row["date_fin"]; |
---|
337 | $titre = typo($row["titre"]); |
---|
338 | $texte = propre($row["texte"]); |
---|
339 | $type = $row["type"]; |
---|
340 | $statut = $row["statut"]; |
---|
341 | $rv = $row["rv"]; |
---|
342 | $expediteur = $row['id_auteur']; |
---|
343 | |
---|
344 | $lejour=journum($row['date_heure']); |
---|
345 | $lemois = mois($row['date_heure']); |
---|
346 | $lannee = annee($row['date_heure']); |
---|
347 | |
---|
348 | $commencer_page = charger_fonction('commencer_page', 'inc'); |
---|
349 | echo $commencer_page($titre, "accueil", "messagerie"); |
---|
350 | |
---|
351 | echo debut_gauche('', true); |
---|
352 | |
---|
353 | if ($rv != 'non') |
---|
354 | echo http_calendrier_agenda ($lannee, $lemois, $lejour, $lemois, $lannee,false, generer_url_ecrire('calendrier')); |
---|
355 | |
---|
356 | echo "<br />"; |
---|
357 | echo http_calendrier_rv(quete_calendrier_taches_annonces(),"annonces"); |
---|
358 | echo http_calendrier_rv(quete_calendrier_taches_pb(),"pb"); |
---|
359 | echo http_calendrier_rv(quete_calendrier_taches_rv(), "rv"); |
---|
360 | |
---|
361 | if ($rv != "non") { |
---|
362 | list ($sh, $ah) = quete_calendrier_interval(quete_calendrier_jour($lannee,$lemois, $lejour)); |
---|
363 | foreach ($ah as $k => $v) |
---|
364 | { |
---|
365 | foreach ($v as $l => $e) |
---|
366 | { |
---|
367 | if (preg_match(",=$id_message$,", $e['URL'])) |
---|
368 | { |
---|
369 | $ah[$k][$l]['CATEGORIES'] = "calendrier-nb"; |
---|
370 | break; |
---|
371 | } |
---|
372 | } |
---|
373 | } |
---|
374 | echo creer_colonne_droite('', true); |
---|
375 | |
---|
376 | echo http_calendrier_ics_titre($lannee,$lemois,$lejour,generer_url_ecrire('calendrier')); |
---|
377 | echo http_calendrier_ics($lannee,$lemois, $lejour, '', '', 90, array($sh, $ah)); |
---|
378 | } |
---|
379 | |
---|
380 | echo debut_droite('', true); |
---|
381 | |
---|
382 | http_affiche_message($id_message, $expediteur, $statut, $type, $texte, $titre, $rv, $date_heure, $date_fin, $cherche_auteur, $forcer_dest); |
---|
383 | |
---|
384 | // reponses et bouton poster message |
---|
385 | // appel de la fonction discuter() de l'extension forum, si presente uniquement |
---|
386 | // a revoir au profit d'un pipeline |
---|
387 | // ou a evacuer completement, meme (formu sur messages = messages de reponse) |
---|
388 | $discuter = charger_fonction('discuter', 'inc', true); |
---|
389 | if ($discuter) echo $discuter($id_message, 'message', 'id_message', "perso"); |
---|
390 | } |
---|
391 | |
---|
392 | echo fin_gauche(), fin_page(); |
---|
393 | } |
---|
394 | |
---|
395 | ?> |
---|