[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins-dist / organiseur / formulaires / editer_message.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2016 *
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')) {
14 return;
15 }
16
17 include_spip('inc/editer');
18
19
20 function formulaires_editer_message_charger_dist(
21 $id_message = 'new',
22 $type = 'message',
23 $retour = '',
24 $accepter_email = 'oui',
25 $destinataires = '',
26 $titre = '',
27 $texte = ''
28 ) {
29 include_spip('inc/autoriser');
30 if (
31 (!intval($id_message) and !autoriser('envoyermessage', $type))
32 or
33 (intval($id_message) and !autoriser('modifier', 'message', $id_message))
34 ) {
35 return false;
36 }
37
38 $valeurs = formulaires_editer_objet_charger('message', $id_message, 0, 0, $retour, '');
39
40 // les destinataires sont stockes en chaine separe par une virgule dans la base
41 if (strlen($valeurs['destinataires'])) {
42 $valeurs['destinataires'] = explode(',', $valeurs['destinataires']);
43 }
44
45 if (!intval($id_message)) {
46 $valeurs['type'] = $type;
47 $valeurs['destinataires'] = ($destinataires ? explode(',', $destinataires) : array());
48 $valeurs['titre'] = $titre;
49 $valeurs['texte'] = $texte;
50 $t = time();
51 $valeurs['date_heure'] = date('Y-m-d H:i:00', $t);
52 $valeurs['date_fin'] = date('Y-m-d H:i:00', $t + 3600);
53 $valeurs['rv'] = '';
54 }
55
56 $id_message_origine = intval(_request('id_message_origine'));
57 if (autoriser('voir', 'message', $id_message_origine)) {
58 $v = formulaires_editer_objet_charger('message', $id_message_origine, 0, 0, $retour, '');
59 $valeurs['titre'] = _T('organiseur:re') . ' : ' . $v['titre'];
60 $valeurs['texte'] = '<quote>' . $v['texte'] . '</quote>';
61 }
62
63 // dispatcher date et heure
64 list($valeurs['date_debut'], $valeurs['heure_debut']) = explode(
65 ' ',
66 date('d/m/Y H:i', strtotime($valeurs['date_heure']))
67 );
68 list($valeurs['date_fin'], $valeurs['heure_fin']) = explode(
69 ' ',
70 date('d/m/Y H:i', strtotime($valeurs['date_fin']))
71 );
72
73 if (in_array($valeurs['type'], array('pb', 'affich'))) {
74 $valeurs['_destiner'] = '';
75 } else {
76 $valeurs['_destiner'] = ' ';
77 }
78
79 return $valeurs;
80 }
81
82
83 function formulaires_editer_message_verifier_dist(
84 $id_message = 'new',
85 $type = 'message',
86 $retour = '',
87 $accepter_email = 'oui',
88 $destinataires = '',
89 $titre = '',
90 $texte = ''
91 ) {
92
93 $oblis = array('titre');
94 if (!_request('draft')) {
95 $oblis[] = 'texte';
96 }
97 if (intval($id_message) and $t = sql_getfetsel('type', 'spip_messages', 'id_message=' . intval($id_message))) {
98 $type = $t;
99 }
100 if (!in_array($type, array('pb', 'affich'))
101 // pas de destinataire obligatoire pour un brouillon
102 and !_request('draft')
103 ) {
104 $oblis['destinataires'] = 'destinataires';
105 }
106
107 if ($d = _request('destinataires')) {
108 set_request('destinataires', implode(',', $d));
109 }
110 $erreurs = formulaires_editer_objet_verifier('message', $id_message, $oblis);
111 if ($d) {
112 set_request('destinataires', $d);
113 }
114 include_spip('inc/messages');
115 if (
116 (!isset($erreurs['destinataires']) or !$erreurs['destinataires'])
117 and isset($oblis['destinataires'])
118 and $e = messagerie_verifier_destinataires(
119 _request('destinataires'),
120 array('accepter_email' => ($accepter_email == 'oui'))
121 )) {
122 $erreurs['destinataires'] = implode(', ', $e);
123 }
124
125 if (_request('rv') == 'oui') {
126 include_spip('inc/date_gestion');
127 $date_debut = verifier_corriger_date_saisie('debut', true, $erreurs);
128 $date_fin = verifier_corriger_date_saisie('fin', true, $erreurs);
129
130 if ($date_debut and $date_fin and $date_fin < $date_debut) {
131 $erreurs['date_fin'] = _T('organiseur:erreur_date_avant_apres');
132 }
133 } else {
134 set_request('rv', '');
135 }
136
137 return $erreurs;
138 }
139
140 function formulaires_editer_message_traiter_dist(
141 $id_message = 'new',
142 $type = 'message',
143 $retour = '',
144 $accepter_email = 'oui',
145 $destinataires = '',
146 $titre = '',
147 $texte = ''
148 ) {
149 // preformater le post
150 // fixer le type de message
151 // sans modifier le type d'un message existant
152 if (intval($id_message) and $t = sql_getfetsel('type', 'spip_messages', 'id_message=' . intval($id_message))) {
153 $type = $t;
154 }
155 set_request('type', $type);
156
157 // formater les destinataires
158 $d = _request('destinataires');
159 if (!$d) {
160 $d = array();
161 }
162 include_spip('inc/messages');
163 $d = messagerie_nettoyer_destinataires($d);
164 // si email non acceptes, extraire les seuls id_auteur de la liste proposee
165 if ($accepter_email !== 'oui') {
166 // separer id_auteur et email
167 $d = messagerie_destiner($d);
168 // ne conserver que les id_auteur
169 $d = reset($d);
170 }
171 // reinjecter sous forme de chaine
172 set_request('destinataires', implode(',', $d));
173
174 // fixer l'auteur !
175 set_request('id_auteur', $GLOBALS['visiteur_session']['id_auteur']);
176
177 if (_request('rv') == 'oui') {
178 include_spip('inc/date_gestion');
179 $erreurs = array();
180 $date_debut = verifier_corriger_date_saisie('debut', true, $erreurs);
181 $date_fin = verifier_corriger_date_saisie('fin', true, $erreurs);
182 set_request('date_heure', date('Y-m-d H:i:s', $date_debut));
183 set_request('date_fin', date('Y-m-d H:i:s', $date_fin));
184 } else {
185 set_request('date_heure');
186 set_request('date_fin');
187 }
188
189 // on gere par les traitements standard
190 // la diffusion du message se fait par pipeline post_edition sur instituer
191 // et notification
192 $res = formulaires_editer_objet_traiter('message', $id_message, 0, 0, $retour, '');
193
194 if ($id_message = $res['id_message']
195 and !_request('draft')
196 ) {
197 include_spip('action/editer_objet');
198 objet_modifier('message', $id_message, array('statut' => 'publie', 'date_heure' => _request('date_heure')));
199 // apres en message envoyes, retourner sur la boite d'envoi plutot que sur le message
200 if (isset($res['redirect'])
201 and ($res['redirect'] == generer_url_ecrire('message', 'id_message=' . $id_message))) {
202 $res['redirect'] = generer_url_ecrire('messages', 'quoi=envoi');
203 }
204 }
205
206 set_request('destinataires', explode(',', _request('destinataires')));
207
208 return $res;
209 }