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

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

Documentation du code

Petites améliorations de ci de là

Version 1.7.0

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