source: spip-zone/_plugins_/rezosocios/trunk/action/editer_rezosocio.php @ 87502

Last change on this file since 87502 was 87502, checked in by kent1@…, 5 years ago

Pas de groupe (on copie trop vite le plugin mots)

File size: 6.1 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5include_spip('inc/filtres');
6
7// Editer (modification) d'un rezosocio-cle
8// http://doc.spip.org/@action_editer_rezosocio_dist
9function action_editer_rezosocio_dist($arg=null)
10{
11        if (is_null($arg)){
12                $securiser_action = charger_fonction('securiser_action', 'inc');
13                $arg = $securiser_action();
14        }
15        $id_rezosocio = intval($arg);
16
17        if (!$id_rezosocio) {
18                $id_rezosocio = rezosocio_inserer();
19        }
20
21        // Enregistre l'envoi dans la BD
22        if ($id_rezosocio > 0) $err = rezosocio_modifier($id_rezosocio);
23       
24        return array($id_rezosocio,$err);
25}
26
27/**
28 * Insertion d'un rezosocio
29 * @param int $id_groupe
30 * @return int
31 */
32function rezosocio_inserer() {
33
34        $champs = array();
35       
36        // Envoyer aux plugins
37        $champs = pipeline('pre_insertion',
38                array(
39                        'args' => array(
40                                'table' => 'spip_rezosocios',
41                        ),
42                        'data' => $champs
43                )
44        );
45
46        $champs['date'] = date('Y-m-d H:i:s');
47        $id_rezosocio = sql_insertq("spip_rezosocios", $champs);
48
49        pipeline('post_insertion',
50                array(
51                        'args' => array(
52                                'table' => 'spip_rezosocios',
53                                'id_objet' => $id_rezosocio
54                        ),
55                        'data' => $champs
56                )
57        );
58
59        return $id_rezosocio;
60}
61
62/**
63 * Modifier un rezosocio
64 * @param int $id_rezosocio
65 * @param array $set
66 * @return string
67 */
68function rezosocio_modifier($id_rezosocio, $set=null) {
69        include_spip('inc/modifier');
70        $c = collecter_requests(
71                // white list
72                array(
73                 'titre', 'type_rezo', 'url_site','nom_compte', 'changer_lang'
74                ),
75                // black list
76                array('changer_lang'),
77                // donnees eventuellement fournies
78                $set
79        );
80       
81        if(isset($c['changer_lang'])){
82                $c['lang'] = $c['changer_lang'];
83                unset($c['changer_lang']);
84        }
85        if ($err = objet_modifier_champs('rezosocio', $id_rezosocio,
86                array(
87                        'nonvide' => array('titre' => _T('info_sans_titre'))
88                ),
89                $c))
90                return $err;
91
92        $c = array();
93        $err = rezosocio_instituer($id_rezosocio, $c);
94        return $err;
95}
96
97/**
98 * Modifier le groupe parent d'un rezosocio
99 * @param  $id_rezosocio
100 * @param  $c
101 * @return void
102 */
103function rezosocio_instituer($id_rezosocio, $c){
104        $row = sql_fetsel("statut, date", "spip_rezosocios", "id_rezosocio=".intval($id_rezosocio));
105
106        $statut_ancien = $statut = $row['statut'];
107        $date_ancienne = $date = $row['date'];
108       
109        $champs = array();
110       
111        $d = isset($c['date'])?$c['date']:null;
112        $s = isset($c['statut'])?$c['statut']:$statut;
113
114        if ($s != $statut OR ($d AND $d != $date)) {
115                if (autoriser('creer', 'rezosocio'))
116                        $statut = $champs['statut'] = $s;
117                else if (autoriser('modifier', 'rezosocio', $id_rezosocio) AND $s != 'publie')
118                        $statut = $champs['statut'] = $s;
119
120                // En cas de publication, fixer la date a "maintenant"
121                // sauf si $c commande autre chose
122                // ou si l'article est deja date dans le futur
123                // En cas de proposition d'un article (mais pas depublication), idem
124                if ($champs['statut'] == 'publie'
125                 OR ($champs['statut'] == 'prop' AND ($d OR !in_array($statut_ancien, array('publie', 'prop'))))
126                ) {
127                        if ($d OR strtotime($d=$date)>time())
128                                $champs['date'] = $date = $d;
129                        else
130                                $champs['date'] = $date = date('Y-m-d H:i:s');
131                }
132        }
133
134        // Envoyer aux plugins
135        $champs = pipeline('pre_edition',
136                array(
137                        'args' => array(
138                                'table' => 'spip_rezosocios',
139                                'id_objet' => $id_rezosocio,
140                                'action'=>'instituer',
141                        ),
142                        'data' => $champs
143                )
144        );
145
146        if (!$champs) return;
147
148        sql_updateq('spip_rezosocios', $champs, "id_rezosocio=".intval($id_rezosocio));
149
150        //
151        // Post-modifications
152        //
153
154        // Invalider les caches
155        include_spip('inc/invalideur');
156        suivre_invalideur("id='rezosocio/$id_rezosocio'");
157
158        // Pipeline
159        pipeline('post_edition',
160                array(
161                        'args' => array(
162                                'table' => 'spip_rezosocios',
163                                'id_objet' => $id_rezosocio,
164                                'action'=>'instituer',
165                        ),
166                        'data' => $champs
167                )
168        );
169
170        // Notifications
171        if ($notifications = charger_fonction('notifications', 'inc')) {
172                $notifications('instituerrezosocio', $id_rezosocio,
173                        array('id_groupe' => $champs['id_groupe'])
174                );
175        }
176
177        return ''; // pas d'erreur
178}
179
180/**
181 * Supprimer un rezosocio
182 * @param int $id_rezosocio
183 * @return void
184 */
185function rezosocio_supprimer($id_rezosocio) {
186        sql_delete("spip_rezosocios", "id_rezosocio=".intval($id_rezosocio));
187        rezosocio_dissocier($id_rezosocio, '*');
188        pipeline('trig_supprimer_objets_lies',
189                array(
190                        array('type'=>'rezosocio','id'=>$id_rezosocio)
191                )
192        );
193}
194
195/**
196 * Associer un rezosocio a des objets listes sous forme
197 * array($objet=>$id_objets,...)
198 * $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type
199 *
200 * on peut passer optionnellement une qualification du (des) lien(s) qui sera
201 * alors appliquee dans la foulee.
202 * En cas de lot de liens, c'est la meme qualification qui est appliquee a tous
203 *
204 * Exemples:
205 * rezosocio_associer(3, array('auteur'=>2));
206 * rezosocio_associer(3, array('auteur'=>2), array('vu'=>'oui)); // ne fonctionnera pas ici car pas de champ 'vu' sur spip_rezosocios_liens
207 *
208 * @param int $id_rezosocio
209 * @param array $objets
210 * @param array $qualif
211 * @return string
212 */
213function rezosocio_associer($id_rezosocio,$objets, $qualif = null){
214        include_spip('action/editer_liens');
215        return objet_associer(array('rezosocio'=>$id_rezosocio), $objets, $qualif);
216}
217
218/**
219 * Dossocier un rezosocio des objets listes sous forme
220 * array($objet=>$id_objets,...)
221 * $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type
222 *
223 * un * pour $id_rezosocio,$objet,$id_objet permet de traiter par lot
224 *
225 * @param int $id_rezosocio
226 * @param array $objets
227 * @return string
228 */
229function rezosocio_dissocier($id_rezosocio,$objets){
230        include_spip('action/editer_liens');
231        return objet_dissocier(array('rezosocio'=>$id_rezosocio), $objets);
232}
233
234/**
235 * Qualifier le lien d'un rezosocio avec les objets listes
236 * array($objet=>$id_objets,...)
237 * $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type
238 * exemple :
239 * $c = array('vu'=>'oui');
240 * un * pour $id_auteur,$objet,$id_objet permet de traiter par lot
241 *
242 * @param int $id_rezosocio
243 * @param array $objets
244 * @param array $qualif
245 */
246function rezosocio_qualifier($id_rezosocio,$objets,$qualif){
247        include_spip('action/editer_liens');
248        return objet_qualifier(array('rezosocio'=>$id_rezosocio), $objets, $qualif);
249}
250
251?>
Note: See TracBrowser for help on using the repository browser.