source: spip-zone/_core_/plugins/organiseur/exec/message.php @ 45092

Last change on this file since 45092 was 45092, checked in by cedric@…, 10 years ago

la fonction php icone_horizontale ne tient plus compte du parametre $aff et retourne toujours le html généré. Evacuation des arguments surnumeraires dans le code
la fonction php icone_inline est evacuee dans le grenier (car gerait l'ajax ancienne mode), au profit de icone_verticale, qui a du coup la meme signature que icone_horizontale

File size: 14.6 KB
Line 
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
13if (!defined('_ECRIRE_INC_VERSION')) return;
14
15include_spip('inc/presentation');
16include_spip('inc/ressembler'); // mots_ressemblants()
17include_spip('inc/agenda');
18
19// http://doc.spip.org/@exec_message_dist
20function 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
26function 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
55function 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 " &nbsp; <img src='$dirpuce/puce$spip_lang_rtl.gif' alt=' ' style='border: 0px;' /> &nbsp;  ".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
70function 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// http://doc.spip.org/@http_ajouter_participants
121function http_ajouter_participants($ze_auteurs, $id_message)
122{       
123        include_spip('inc/editer_auteurs');
124        $cond = auteurs_autorises($ze_auteurs, "messagerie<>'non'");
125        $all = objet_auteur_select($cond);
126        if (!$all) return '';
127
128        $res = "<span class='verdana1 spip_small'><b><label for='id_message'>" .
129          _T('bouton_ajouter_participant') ."</label> &nbsp; </b></span>\n" .
130          "<input type='hidden' name='id_message' id='id_message' value=\"$id_message\" />";
131
132        if (is_numeric($all)) {
133                $res .=  "\n<input type='text' name='cherche_auteur' id='cherche_auteur' class='fondl' value='' size='20' />";
134                $res .=  "\n<input type='submit' value='"._T('bouton_chercher')."' class='fondo' />";
135        } else {
136
137                $res .=  "<select name='nouv_auteur' id='nouv_auteur' size='1' style='width: 150px' class='fondl'>"
138                . $all
139                .  "</select>"
140                .  "<input type='submit' value='"._T('bouton_ajouter')."' class='fondo' />";
141        }
142        return redirige_action_post('editer_message', "$id_message,", 'message', "id_message=$id_message", "<div style='text-align: left'>\n$res</div>\n");
143}
144
145// http://doc.spip.org/@http_message_avec_participants
146function http_message_avec_participants($id_message, $statut, $forcer_dest, $cherche_auteur, $expediteur='')
147{
148        global $connect_id_auteur ;
149
150        if ($cherche_auteur) {
151                echo "\n<div style='text-align: left' class='cadre-info'>"
152                . http_auteurs_ressemblants($cherche_auteur , $id_message)
153                . "\n</div>";
154          }
155        $bouton = bouton_block_depliable(_T('info_nombre_partcipants'),true,"auteurs,ajouter_auteur");
156        echo debut_cadre_enfonce("auteur-24.png", true, '', $bouton, 'participants');
157
158        //
159        // Liste des participants
160        //
161
162        $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");
163
164        $total_dest = count($result);
165
166        if ($total_dest > 0) {
167                $ifond = 0;
168                $res = '';
169                $formater_auteur = charger_fonction('formater_auteur', 'inc');
170                $t = _T('lien_retrait_particpant');
171                foreach($result as $k => $row) {
172                        $id_auteur = $row["id_auteur"];
173                        list($status, $mail, $nom, $site,) = $formater_auteur($id_auteur, $row);
174                        if ($id_auteur == $expediteur) {
175
176                                $nom = "<span class='arial0' style='margin-left: 10px'>"
177                                .  _T('info_auteur_message')
178                                . "</span> $nom";
179                        }
180                        $class = alterner (++$ifond,'row_even','row_odd');
181                        $res .= "<tr class='$class'>\n<td class='nom'>$status $mail $nom $site$exp</td>"
182                          . "\n<td align='right' class='lien'>"
183                          . (($id_auteur == $connect_id_auteur) ?  "&nbsp;" : ("[<a href='" . redirige_action_auteur("editer_message","$id_message/-$id_auteur", 'message', "id_message=$id_message") . "'>$t</a>]")) .  "</td></tr>\n";
184                        $result[$k] = $id_auteur;
185               
186                }
187                echo
188                        debut_block_depliable(true,"auteurs"),
189                        "\n<table class='spip' width='100%'>",
190                        $res,
191                          "</table>\n",
192                        fin_block();
193        }
194
195        if ($statut == 'redac' OR $forcer_dest)
196                echo http_ajouter_participants($result, $id_message);
197        else {
198                echo
199                  debut_block_depliable(true,"ajouter_auteur"),
200                  "<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>",
201                  fin_block();
202        }
203        echo fin_cadre_enfonce(true);
204        return $total_dest;
205}
206
207// http://doc.spip.org/@http_affiche_message
208function http_affiche_message($id_message, $expediteur, $statut, $type, $texte, $titre, $rv, $date_heure, $date_fin, $cherche_auteur, $forcer_dest)
209{
210  global $connect_id_auteur,$connect_statut, $les_notes;
211
212        if ($type == 'normal') {
213                $le_type = _T('info_message_2').aide ("messut");
214                $la_couleur = "#02531b";
215                $fond = "#cffede";
216        }
217        else if ($type == 'pb') {
218                $le_type = _T('info_pense_bete').aide ("messpense");
219                $la_couleur = "#3874b0";
220                $fond = "#edf3fe";
221        }
222        else if ($type == 'affich') {
223                $le_type = _T('info_annonce');
224                $la_couleur = "#ccaa00";
225                $fond = "#ffffee";
226        }
227       
228        // affichage des caracteristiques du message
229
230        echo "<div style='border: 1px solid $la_couleur; background-color: $fond; padding: 5px;'>"; // debut cadre de couleur
231        //echo debut_cadre_relief("messagerie-24.png", true);
232        echo "\n<table width='100%' border='0'>";
233        echo "<tr><td>"; # uniques
234
235        echo "<span style='color: $la_couleur' class='verdana1 spip_small'><b>$le_type</b></span><br />";
236        echo "<span class='verdana1 spip_large'><b>$titre</b></span>";
237        if ($statut == 'redac') {
238                echo "<br /><span style='color: red;' class='verdana1 spip_small'><b>"._T('info_redaction_en_cours')."</b></span>";
239        }
240        else if ($rv == 'non') {
241                echo "<br /><span style='color: #666666;' class='verdana1 spip_small'><b>".nom_jour($date_heure).' '.affdate_heure($date_heure)."</b></span>";
242        }
243
244
245        //////////////////////////////////////////////////////
246        // Message avec participants
247        //
248       
249        if ($type == 'normal')
250          $total_dest = http_message_avec_participants($id_message, $statut, $forcer_dest, $cherche_auteur, $expediteur);
251
252        if ($rv != "non") http_afficher_rendez_vous($date_heure, $date_fin);
253
254
255        //////////////////////////////////////////////////////
256        // Le message lui-meme
257        //
258
259        echo "\n<br />"
260          . "<div class='serif'>$texte</div>";
261
262        if ($les_notes) {
263                echo debut_cadre_relief('', true);
264                echo "<div dir=" . lang_dir() ."' class='arial11'>";
265                echo justifier("<b>"._T('info_notes')."&nbsp;:</b> ".$les_notes);
266                echo "</div>";
267                echo fin_cadre_relief(true);
268        }
269
270        if ($expediteur == $connect_id_auteur AND $statut == 'redac') {
271          if ($type == 'normal' AND $total_dest < 2) {
272            echo "<p style='color: #666666; text-align: right;' class='verdana1 spip_small'><b>"._T('avis_destinataire_obligatoire')."</b></p>";
273          } else {
274            echo "\n<div class='centered'>";
275            echo icone_verticale(_T('icone_envoyer_message'), redirige_action_auteur('editer_message', "$id_message/publie", "message","id_message=$id_message"), "messagerie-24.png", "new");
276            echo "</div>";
277          }
278        }
279        echo "</td></tr></table>\n";
280
281        //      echo "</td></tr></table>\n"; //echo fin_cadre_relief(true);
282        echo "</div>";                  // fin du cadre de couleur
283       
284        // Les boutons
285
286        $aut = ($expediteur == $connect_id_auteur);
287        $aff = ($type == 'affich' AND $connect_statut == '0minirezo');
288
289        echo "\n<table width='100%'><tr><td>";
290
291        // bouton de suppression
292
293        if ($aut AND ($statut == 'redac' OR $type == 'pb') OR $aff) {
294          echo icone_verticale(_T('icone_supprimer_message'), redirige_action_auteur("editer_message","-$id_message", 'messagerie'), "messagerie-24.png", "del", 'left');
295        }
296
297        // bouton retrait de la discussion
298
299        if ($statut == 'publie' AND $type == 'normal') {
300          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');
301        }
302
303        // bouton modifier ce message
304
305        if ($aut OR $aff) {
306          echo icone_verticale(_T('icone_modifier_message'), (generer_url_ecrire("message_edit","id_message=$id_message")), "messagerie-24.png", "edit", 'right');
307        }
308        echo "</td></tr></table>";
309}
310
311// http://doc.spip.org/@exec_affiche_message_dist
312function exec_affiche_message_dist($id_message, $cherche_auteur, $forcer_dest)
313{
314  $row = sql_fetsel("*", "spip_messages", "id_message=$id_message");
315  if ($row) {
316        $id_message = $row['id_message'];
317        $date_heure = $row["date_heure"];
318        $date_fin = $row["date_fin"];
319        $titre = typo($row["titre"]);
320        $texte = propre($row["texte"]);
321        $type = $row["type"];
322        $statut = $row["statut"];
323        $rv = $row["rv"];
324        $expediteur = $row['id_auteur'];
325
326        $lejour=journum($row['date_heure']);
327        $lemois = mois($row['date_heure']);             
328        $lannee = annee($row['date_heure']);           
329
330        $commencer_page = charger_fonction('commencer_page', 'inc');
331        echo $commencer_page($titre, "accueil", "messagerie");
332
333        echo debut_gauche('', true);
334       
335        if ($rv != 'non')
336          echo http_calendrier_agenda ($lannee, $lemois, $lejour, $lemois, $lannee,false, generer_url_ecrire('calendrier'));
337       
338        echo "<br />";
339        echo  http_calendrier_rv(quete_calendrier_taches_annonces(),"annonces");
340        echo  http_calendrier_rv(quete_calendrier_taches_pb(),"pb");
341        echo  http_calendrier_rv(quete_calendrier_taches_rv(), "rv");
342
343        if ($rv != "non") {
344                list ($sh, $ah) = quete_calendrier_interval(quete_calendrier_jour($lannee,$lemois, $lejour));
345                foreach ($ah as $k => $v)
346                  {
347                    foreach ($v as $l => $e)
348                      {
349                        if (preg_match(",=$id_message$,", $e['URL']))
350                          {
351                            $ah[$k][$l]['CATEGORIES'] = "calendrier-nb";
352                            break;
353                          }
354                      }
355                  }
356                echo creer_colonne_droite('', true);   
357
358                echo http_calendrier_ics_titre($lannee,$lemois,$lejour,generer_url_ecrire('calendrier'));
359                echo http_calendrier_ics($lannee,$lemois, $lejour, '', '', 90, array($sh, $ah));
360        }
361
362        echo debut_droite('', true);
363
364        http_affiche_message($id_message, $expediteur, $statut, $type, $texte, $titre, $rv, $date_heure, $date_fin, $cherche_auteur, $forcer_dest);
365
366        // reponses et bouton poster message
367        // appel de la fonction discuter() de l'extension forum, si presente uniquement
368        // a revoir au profit d'un pipeline
369        // ou a evacuer completement, meme (formu sur messages = messages de reponse)
370        $discuter = charger_fonction('discuter', 'inc', true);
371        if ($discuter) echo $discuter($id_message, 'message', 'id_message', "perso");
372  }
373
374  echo fin_gauche(), fin_page();
375}
376
377?>
Note: See TracBrowser for help on using the repository browser.