source: plugins_spip/gestion_mutu/action/editer_mutu.php @ 3012

Last change on this file since 3012 was 3012, checked in by kent1, 11 years ago

On ajoute le champs url dans la base .... et on améliore la gestion des domaines

File size: 4.9 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5/**
6 * Action de création / Modification d'une mutu
7 * @param unknown_type $arg
8 * @return unknown_type
9 */
10function action_editer_mutu_dist($arg=null) {
11
12        if (is_null($arg)){
13                $securiser_action = charger_fonction('securiser_action', 'inc');
14                $arg = $securiser_action();
15        }
16
17        // si id_mutu n'est pas un nombre, c'est une creation
18        if (!$id_mutu = intval($arg)) {
19                $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
20                if (!$id_auteur) {
21                        include_spip('inc/headers');
22                        redirige_url_ecrire();
23                }
24                $id_mutu = insert_mutu();
25        }
26
27        // Enregistre l'envoi dans la BD
28        if ($id_mutu > 0) $err = mutu_set($id_mutu);
29
30        if (_request('redirect')) {
31                $redirect = parametre_url(urldecode(_request('redirect')),
32                        'id_mutu', $id_mutu, '&') . $err;
33
34                include_spip('inc/headers');
35                redirige_par_entete($redirect);
36        }
37        else
38                return array($id_mutu,$err);
39}
40
41/**
42 * Appelle la fonction de modification d'une instance de mutu
43 *
44 * @param int $id_mutu
45 * @param unknown_type $set
46 * @return $err
47 */
48function mutu_set($id_mutu, $set=null) {
49        $err = '';
50
51        $c = array();
52        foreach (array(
53                'titre',
54                'domaine',
55                'ssdomaine',
56                'descriptif'
57        ) as $champ)
58                $c[$champ] = _request($champ,$set);
59
60        $c['url'] = $c['ssdomaine'].'.'.$c['domaine'];
61
62        include_spip('inc/modifier');
63        revision_mutu($id_mutu, $c);
64
65        // Modification de statut, changement de rubrique ?
66        $c = array();
67        foreach (array(
68                'date_validation', 'statut'
69        ) as $champ)
70                $c[$champ] = _request($champ,$set);
71        $err .= instituer_mutu($id_mutu, $c);
72
73        return $err;
74}
75
76/**
77 * Crée une nouvelle instance de mutu et retourne son ID
78 *
79 * @return int id_mutu
80 */
81function insert_mutu() {
82        $champs = array(
83                'id_admin'=>$GLOBALS['visiteur_session']['id_auteur'],
84                'statut' =>  'prepa',
85                'date' => date('Y-m-d H:i:s'));
86
87        // Envoyer aux plugins
88        $champs = pipeline('pre_insertion',
89                array(
90                        'args' => array(
91                                'table' => 'spip_mutus',
92                        ),
93                        'data' => $champs
94                )
95        );
96
97        $id_mutu = sql_insertq("spip_mutus",$champs);
98
99        if ($id_mutu > 0)
100                sql_insertq('spip_auteurs_mutus', array('id_auteur' => $GLOBALS['visiteur_session']['id_auteur'], 'id_mutu' => $id_mutu));
101
102        return $id_mutu;
103}
104
105/**
106 * Institue une instance de mutualisation
107 *
108 * @param $id_mutu int
109 * @param $c Array
110 * @return unknown_type
111 */
112function instituer_mutu($id_mutu, $c) {
113
114        include_spip('inc/autoriser');
115        include_spip('inc/modifier');
116
117        $row = sql_fetsel("statut, date", "spip_mutus", "id_mutu=$id_mutu");
118        $statut_ancien = $statut = $row['statut'];
119        $date_ancienne = $date = $row['date_validation'];
120        $champs = array();
121
122        $d = isset($c['date_validation'])?$c['date_validation']:null;
123        $s = isset($c['statut'])?$c['statut']:$statut;
124
125        if ($s != $statut) {
126                if (autoriser('publier','mutu',$id_mutu))
127                        $statut = $champs['statut'] = $s;
128                else if (autoriser('modifier', 'mutu', $id_mutu) AND $s != 'publie')
129                        $statut = $champs['statut'] = $s;
130                else
131                        spip_log("editer_mutu $id_mutu refus " . join(' ', $c));
132
133                // En cas de publication, fixer la date de validation à "maintenant"
134                // sauf si $c commande autre chose
135                if ($champs['statut'] == 'publie'
136                 OR ($champs['statut'] == 'prop' AND ($d OR !in_array($statut_ancien, array('publie', 'prop'))))
137                ) {
138                        if ($d OR strtotime($d=$date)>time())
139                                $champs['date_validation'] = $date = $d;
140                        else
141                                $champs['date_validation'] = $date = date('Y-m-d H:i:s');
142                }
143                /**
144                 * On crée le passe s'il n'existe pas à la publication
145                 */
146                if($champs['statut'] == 'publie'){
147                        if(!sql_getfetsel('pass','spip_mutus','id_mutu='.intval($id_mutu))){
148                                $champs['pass'] = md5($champs['statut'].$GLOBALS['visiteur_session']['id_auteur'].date('U'));
149                        }
150                }
151        }
152
153        // Envoyer aux plugins
154        $champs = pipeline('pre_edition',
155                array(
156                        'args' => array(
157                                'table' => 'spip_mutus',
158                                'id_objet' => $id_mutu,
159                                'action'=>'instituer'
160                        ),
161                        'data' => $champs
162                )
163        );
164
165        if (!count($champs)) return;
166
167        // Envoyer les modifs.
168        sql_updateq('spip_mutus', $champs, "id_mutu=$id_mutu");
169
170        // Invalider les caches
171        include_spip('inc/invalideur');
172        suivre_invalideur("id='id_mutu/$id_mutu'");
173
174        // Pipeline
175        pipeline('post_edition',
176                array(
177                        'args' => array(
178                                'table' => 'spip_mutus',
179                                'id_objet' => $id_mutu,
180                                'action'=>'instituer'
181                        ),
182                        'data' => $champs
183                )
184        );
185
186        // Notifications
187        if ($notifications = charger_fonction('notifications', 'inc')) {
188                $notifications('instituermutu', $id_mutu,
189                        array('statut' => $statut, 'statut_ancien' => $statut_ancien, 'date'=>$date)
190                );
191        }
192
193        return ''; // pas d'erreur
194}
195
196/**
197 * Enregistre une révision de mutu
198 *
199 * @param int $id_mutu
200 * @param array $c
201 * @return
202 */
203function revision_mutu ($id_mutu, $c=false) {
204        $invalideur = "id='id_mutu/$id_mutu'";
205
206        modifier_contenu('mutu', $id_mutu,
207                array(
208                        'nonvide' => array('titre' => _T('info_sans_titre'),'domaine'=>_T('info_domaine'),'ssdomaine'=>_T('info_ssdomaine')),
209                        'invalideur' => $invalideur
210                ),
211                $c);
212
213        return ''; // pas d'erreur
214}
215?>
Note: See TracBrowser for help on using the repository browser.