squellete2
[aidenligne_francais_universite.git] / ecrire / action / editer_message.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2007 *
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/filtres');
16 include_spip('base/abstract_sql');
17
18 // http://doc.spip.org/@action_editer_message_dist
19 function action_editer_message_dist() {
20
21 $securiser_action = charger_fonction('securiser_action', 'inc');
22 $arg = $securiser_action();
23
24 if (preg_match(',^(\d+)$,', $arg, $r))
25 action_editer_message_post_vieux($arg);
26 elseif (preg_match(',^-(\d+)$,', $arg, $r))
27 action_editer_message_post_supprimer($r[1]);
28 elseif (preg_match(',^(\d+)\W$,', $arg, $r))
29 action_editer_message_post_choisir($r[1]);
30 elseif (preg_match(',^(\d+)\W@(\d+)$,', $arg, $r))
31 action_editer_message_post_ajouter($r[1], $r[2]);
32 elseif (preg_match(',^(\d+)\W:(\d+)$,', $arg, $r))
33 action_editer_message_post_vu($r[1], $r[2]);
34 elseif (preg_match(',^(\d+)\W-(\d+)$,', $arg, $r))
35 action_editer_message_post_retirer($r[1], $r[2]);
36 elseif (preg_match(',^(\d+)\W(\w+)$,', $arg, $r))
37 action_editer_message_post_envoyer($r[1], $r[2]);
38 elseif (preg_match(',^(\w+)$,', $arg, $r))
39 action_editer_message_post_nouveau($arg);
40 elseif (preg_match(',^(\w+)\W(\d+)$,', $arg, $r))
41 action_editer_message_post_nouveau($r[1], $r[2]);
42 elseif (preg_match(',^(\w+)\W(\d+-\d+-\d+)$,', $arg, $r))
43 action_editer_message_post_nouveau($r[1], '', $r[2]);
44 else spip_log("action_editer_message_dist $arg pas compris");
45 }
46
47 // http://doc.spip.org/@action_editer_message_post_supprimer
48 function action_editer_message_post_supprimer($id_message) {
49 spip_query("DELETE FROM spip_messages WHERE id_message="._q($id_message));
50 spip_query("DELETE FROM spip_auteurs_messages WHERE id_message="._q($id_message));
51 spip_query("DELETE FROM spip_forum WHERE id_message="._q($id_message));
52 }
53
54 // http://doc.spip.org/@action_editer_message_post_vu
55 function action_editer_message_post_vu($id_message, $id_auteur) {
56 spip_log("efface $id_message $id_auteur");
57 spip_query("UPDATE spip_auteurs_messages SET vu='oui' WHERE id_message='$id_message' AND id_auteur='$id_auteur'");
58
59 }
60
61 // http://doc.spip.org/@action_editer_message_post_retirer
62 function action_editer_message_post_retirer($id_message, $id_auteur) {
63 spip_query("DELETE FROM spip_auteurs_messages WHERE id_message='$id_message' AND id_auteur='$id_auteur'");
64 }
65
66 // http://doc.spip.org/@action_editer_message_post_ajouter
67 function action_editer_message_post_ajouter($id_message, $id_auteur) {
68 spip_query("DELETE FROM spip_auteurs_messages WHERE id_auteur='$id_auteur' AND id_message='$id_message'");
69 spip_abstract_insert('spip_auteurs_messages',
70 "(id_auteur,id_message,vu)",
71 "('$id_auteur','$id_message','non')");
72 }
73
74 // http://doc.spip.org/@action_editer_message_post_choisir
75 function action_editer_message_post_choisir($id_message) {
76
77 if ($id_auteur = _request('nouv_auteur'))
78 action_editer_message_post_ajouter($id_message, $id_auteur);
79 else {
80 include_spip('inc/mots');
81 include_spip('inc/charsets'); // pour tranlitteration
82 $id_auteur = $GLOBALS['auteur_session']['id_auteur'];
83 $cherche_auteur= _request('cherche_auteur');
84 $query = spip_query("SELECT id_auteur, nom FROM spip_auteurs WHERE messagerie<>'non' AND id_auteur<>'$connect_id_auteur' AND pass<>'' AND login<>''");
85 $table_auteurs = array();
86 $table_ids = array();
87 while ($row = spip_fetch_array($query)) {
88 $table_auteurs[] = $row['nom'];
89 $table_ids[] = $row['id_auteur'];
90 }
91 $res = mots_ressemblants($cherche_auteur, $table_auteurs, $table_ids);
92 $n = count($res);
93
94 if ($n == 1)
95 # Bingo
96 action_editer_message_post_ajouter($id_message, $res[0]);
97 # renvoyer la valeur ==> formulaire de choix si n !=1
98 # notification que $res[0] a ete rajoute sinon
99 redirige_par_entete(parametre_url(urldecode(_request('redirect')),
100 'cherche_auteur', _request('chercher_auteur'), '&'));
101 }
102 }
103
104
105 // http://doc.spip.org/@action_editer_message_post_envoyer
106 function action_editer_message_post_envoyer($id_message, $statut) {
107
108 spip_query("UPDATE spip_messages SET statut=" . _q($statut) . " WHERE id_message='$id_message'");
109 spip_query("UPDATE spip_messages SET date_heure=NOW() WHERE id_message='$id_message' AND rv<>'oui'");
110 }
111
112 // http://doc.spip.org/@action_editer_message_post_nouveau
113 function action_editer_message_post_nouveau($type, $dest='', $rv='')
114 {
115
116 $id_auteur = $GLOBALS['auteur_session']['id_auteur'];
117
118 $mydate = date("YmdHis", time() - 2 * 24 * 3600);
119 spip_query("DELETE FROM spip_messages WHERE (statut = 'redac') AND (date_heure < $mydate)");
120
121 if ($type == 'pb') $statut = 'publie';
122 else $statut = 'redac';
123
124 $titre = filtrer_entites(_T('texte_nouveau_message'));
125
126 $id_message = spip_abstract_insert("spip_messages", "(titre, date_heure, statut, type, id_auteur)", "(" . _q($titre) . ", NOW(), '$statut', '$type', $id_auteur)");
127
128 if ($rv) {
129 spip_query("UPDATE spip_messages SET rv='oui', date_heure=" . _q($rv . ' 12:00:00') . ", date_fin= " . _q($rv . ' 13:00:00') . " WHERE id_message = $id_message");
130 }
131
132 if ($type != "affich"){
133 spip_abstract_insert('spip_auteurs_messages',
134 "(id_auteur,id_message,vu)",
135 "('$id_auteur','$id_message','oui')");
136 if ($dest) {
137 spip_abstract_insert('spip_auteurs_messages',
138 "(id_auteur,id_message,vu)",
139 "('$dest','$id_message','non')");
140 }
141 }
142 redirige_par_entete(generer_url_ecrire('message_edit', "id_message=$id_message&new=oui&dest=$dest",true));
143 }
144
145 // http://doc.spip.org/@action_editer_message_post_vieux
146 function action_editer_message_post_vieux($id_message)
147 {
148 spip_query("UPDATE spip_messages SET titre=" . _q(_request('titre')) . ", texte=" . _q(_request('texte')) . " WHERE id_message='$id_message'");
149
150 spip_query("UPDATE spip_messages SET rv=" . _q(_request('rv')) . " WHERE id_message='$id_message'");
151
152 if (_request('jour'))
153 change_date_message($id_message, _request('heures'),_request('minutes'),_request('mois'), _request('jour'), _request('annee'), _request('heures_fin'),_request('minutes_fin'),_request('mois_fin'), _request('jour_fin'), _request('annee_fin'));
154 }
155
156
157 // Convertir dates a calendrier correct
158 // (exemple: 31 fevrier devient debut mars, 24h12 devient 00h12 du lendemain)
159
160 // http://doc.spip.org/@change_date_message
161 function change_date_message($id_message, $heures,$minutes,$mois, $jour, $annee, $heures_fin,$minutes_fin,$mois_fin, $jour_fin, $annee_fin)
162 {
163 $date = date("Y-m-d H:i:s", mktime($heures,$minutes,0,$mois, $jour, $annee));
164
165 $jour = journum($date);
166 $mois = mois($date);
167 $annee = annee($date);
168 $heures = heures($date);
169 $minutes = minutes($date);
170
171 // Verifier que la date de fin est bien posterieure au debut
172 $unix_debut = date("U", mktime($heures,$minutes,0,$mois, $jour, $annee));
173 $unix_fin = date("U", mktime($heures_fin,$minutes_fin,0,$mois_fin, $jour_fin, $annee_fin));
174 if ($unix_fin <= $unix_debut) {
175 $jour_fin = $jour;
176 $mois_fin = $mois;
177 $annee_fin = $annee;
178 $heures_fin = $heures + 1;
179 $minutes_fin = $minutes;
180 }
181
182 $date_fin = date("Y-m-d H:i:s", mktime($heures_fin,$minutes_fin,0,$mois_fin, $jour_fin, $annee_fin));
183
184 $jour_fin = journum($date_fin);
185 $mois_fin = mois($date_fin);
186 $annee_fin = annee($date_fin);
187 $heures_fin = heures($date_fin);
188 $minutes_fin = minutes($date_fin);
189
190 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'");
191 }
192
193 ?>