source: spip-zone/_plugins_/diogene/diogene/trunk/action/editer_diogene.php @ 97999

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

Nettoyage

File size: 5.1 KB
Line 
1<?php
2/**
3 * Plugin Diogene
4 *
5 * Auteurs :
6 * b_b
7 * kent1 (http://www.kent1.info - kent1@arscenic.info)
8 *
9 * Distribue sous licence GNU/GPL
10 *
11 * Action d'édition d'un diogene
12 *
13 **/
14if (!defined('_ECRIRE_INC_VERSION')) {
15        return;
16}
17
18function action_editer_diogene_dist($arg = null) {
19        if (is_null($arg)) {
20                $securiser_action = charger_fonction('securiser_action', 'inc');
21                $arg = $securiser_action();
22        }
23
24        // si id_diogene n'est pas un nombre, c'est une creation
25        // mais on verifie qu'on a toutes les donnees qu'il faut.
26        if (!$id_diogene = intval($arg)) {
27                if (!$GLOBALS['visiteur_session']['id_auteur']) {
28                        include_spip('inc/headers');
29                        redirige_url_ecrire();
30                }
31                $id_diogene = diogene_inserer();
32        }
33
34        // Enregistre l'envoi dans la BD
35        if ($id_diogene > 0) {
36                $err = diogene_modifier($id_diogene);
37        }
38
39        if ($err) {
40                spip_log("echec editeur diogene: $err", 'diogene.'._LOG_ERREUR);
41        }
42
43        return array($id_diogene,$err);
44}
45
46/**
47 * Fonction de changement de statut d'un template
48 *
49 * @param int $id_diogene
50 * @param array $c
51 */
52function diogene_instituer($id_diogene, $c) {
53
54        // Envoyer aux plugins
55        $c = pipeline(
56                'pre_edition',
57                array(
58                        'args' => array(
59                                'table' => 'spip_diogenes',
60                                'id_objet' => $id_diogene,
61                                'action'=>'instituer'
62                        ),
63                        'data' => $c
64                )
65        );
66
67        if (!count($c)) {
68                return;
69        }
70
71        // Envoyer les modifs.
72
73        sql_updateq('spip_diogenes', $c, "id_diogene=$id_diogene");
74
75        // Pipeline
76        pipeline(
77                'post_edition',
78                array(
79                        'args' => array(
80                                'table' => 'spip_diogenes',
81                                'id_objet' => $id_diogene,
82                                'action'=>'instituer'
83                        ),
84                        'data' => $c
85                )
86        );
87
88        return ''; // pas d'erreur
89}
90
91/**
92 * Fonction d'insertion d'un template
93 *
94 * @return int $id_diogene
95 *      L'identifiant numérique du template créé
96 */
97function diogene_inserer() {
98
99        $champs = array('id_auteur' => $GLOBALS['visiteur_session']['id_auteur']);
100        // Envoyer aux plugins
101        $champs = pipeline(
102                'pre_insertion',
103                array(
104                        'args' => array(
105                                'table' => 'spip_diogenes',
106                        ),
107                        'data' => $champs
108                )
109        );
110        $id_diogene = sql_insertq('spip_diogenes', $champs);
111
112        return $id_diogene;
113}
114
115/**
116 * Fonction de suppression d'un diogene
117 *
118 * @param int $id_diogene
119 *              L'identifiant numérique du diogène à supprimer
120 * @return bool true/false
121 */
122function diogene_supprimer($id_diogene) {
123        $diogene = sql_getfetsel('id_diogene', 'spip_diogenes', 'id_diogene='.intval($id_diogene));
124        if (is_numeric($diogene)
125                and (intval($diogene) > 0)
126                and include_spip('inc/autoriser')
127                and autoriser('modifier', 'diogene', $id_diogene)) {
128                if (sql_delete('spip_diogenes', 'id_diogene = '.intval($id_diogene))) {
129                        /**
130                         * Invalider le cache
131                         */
132                        include_spip('inc/invalideur');
133                        suivre_invalideur("id='diogene/$id_diogene'");
134                        return true;
135                } else {
136                        return false;
137                }
138        } else {
139                return false;
140        }
141}
142
143/**
144 * Fonction de révision d'un diogène
145 *
146 * @param int $id_diogene Identifiant numérique du diogene
147 * @param array $champs un tableau des champs à modifier en base
148 */
149function diogene_modifier($id_diogene, $set = null) {
150
151        include_spip('inc/modifier');
152        include_spip('inc/filtres');
153        $c = collecter_requests(
154                // white list
155                objet_info('diogene', 'champs_editables'),
156                // black list
157                array('id_secteur','objet','type'),
158                // donnees eventuellement fournies
159                $set
160        );
161
162        if (!_request('menu')) {
163                $c['menu'] = '';
164        }
165
166        /**
167         * Les champs champs_caches, champs_ajoutes, options_complements
168         * doivent être des tableau serialisés
169         */
170        foreach (array(
171                'champs_caches','champs_ajoutes','options_complements'
172        ) as $champ) {
173                if (isset($c[$champ]) and is_array($c[$champ])) {
174                        $c[$champ] = serialize($c[$champ]);
175                } elseif (isset($c[$champ]) and is_array(@unserialize($c[$champ]))) {
176                        $c[$champ] = $c[$champ];
177                } else {
178                        $c[$champ] = '';
179                }
180        }
181
182        foreach (array(
183                'titre','description'
184        ) as $texte) {
185                if (isset($c[$champ])) {
186                        $c[$texte] = filtrer_entites($c[$texte]);
187                } else {
188                        $c[$texte] = '';
189                }
190        }
191
192        $invalideur = "id='diogene/$id_diogene'";
193        $indexation = true;
194
195        if ($err = objet_modifier_champs(
196                'diogene',
197                $id_diogene,
198                array(
199                        'data' => $set,
200                        'nonvide' => array('titre' => _T('info_sans_titre')),
201                        'invalideur' => $invalideur,
202                        'indexation' => $indexation
203                ),
204                $c
205        )) {
206                return $err;
207        }
208
209        $rubriques = _request('id_rubrique', $set);
210        sql_delete('spip_diogenes_liens', 'id_diogene='.intval($id_diogene).' AND objet="rubrique"');
211        if (is_array($rubriques)) {
212                foreach ($rubriques as $id_rubrique) {
213                        sql_insertq('spip_diogenes_liens', array('id_diogene' => $id_diogene, 'objet'=> $id_rubrique, 'objet'=> 'rubrique'));
214                }
215        }
216
217        $c = collecter_requests(array('id_secteur','objet','identifiant','type'), array(), $set);
218
219        if (isset($c['identifiant'])) {
220                $c['type'] = $c['identifiant'];
221                unset($c['identifiant']);
222        }
223        $err = diogene_instituer($id_diogene, $c);
224        return $err;
225}
226
227function revision_diogene($id_diogene, $c = false) {
228        return diogene_modifier($id_diogene, $c);
229}
230function diogene_set($id_diogene, $set = null) {
231        return diogene_modifier($id_diogene, $set);
232}
233function insert_diogene($id_diogene, $c) {
234        return diogene_inserer();
235}
236function instituer_diogene($id_diogene, $c) {
237        return diogene_instituer($id_diogene, $c);
238}
Note: See TracBrowser for help on using the repository browser.