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

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

auteurs_autorises est une fonction d'autorisation foure tout qui ne sert plus qu'ici. On l'y range en attendant le refactoring complet de cette extension

File size: 15.0 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
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 */
131function 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
139function 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> &nbsp; </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
164function 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) ?  "&nbsp;" : ("[<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
226function 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')."&nbsp;:</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
330function 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?>
Note: See TracBrowser for help on using the repository browser.