Commit | Line | Data |
---|---|---|
c495c100 P |
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 | ?> |