source: spip-zone/_core_/plugins/organiseur/formulaires/editer_message.php

Last change on this file was 113294, checked in by spip.franck@…, 2 months ago

Il parait que le futur c'est maintenant :-D

File size: 6.3 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2019                                                *
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')) {
14        return;
15}
16
17include_spip('inc/editer');
18
19
20function 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
83function 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
140function 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}
Note: See TracBrowser for help on using the repository browser.