source: spip-zone/_plugins_/gis/trunk/action/editer_gis.php @ 53652

Last change on this file since 53652 was 53652, checked in by rastapopoulos@…, 9 years ago

1) Bug de GIS : on pouvait pas appeler l'action d'édition directement, car pas de paramètre.

2) Pour afficher vraiment le bloc au milieu, on copie sur les Mots.

File size: 2.8 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5function action_editer_gis_dist($arg=null) {
6        if (is_null($arg)){
7                $securiser_action = charger_fonction('securiser_action', 'inc');
8                $arg = $securiser_action();
9        }
10       
11        // si id_gis n'est pas un nombre, c'est une creation
12        if (!$id_gis = intval($arg)) {
13                if (!$id_gis = insert_gis())
14                        return array(false,_L('echec'));
15        }
16        $err = revisions_gis($id_gis);
17        return array($id_gis,$err);
18}
19
20function insert_gis() {
21        $champs = array();
22       
23        // Envoyer aux plugins
24        $champs = pipeline('pre_insertion', array(
25                'args' => array(
26                        'table' => 'spip_gis',
27                ),
28                'data' => $champs
29        ));
30       
31        $id_gis = sql_insertq("spip_gis", $champs);
32        return $id_gis;
33}
34
35// Enregistrer certaines modifications d'un gis
36function revisions_gis($id_gis, $c=false) {
37        // recuperer les champs dans POST s'ils ne sont pas transmis
38        if ($c === false) {
39                $c = array();
40                foreach (array(
41                        'lat', 'lon', 'zoom', 'titre', 'descriptif', 'adresse', 'code_postal', 'ville', 'region', 'pays'
42                ) as $champ) {
43                        if (($a = _request($champ)) !== null) {
44                                $c[$champ] = $a;
45                        }
46                }
47        }
48       
49        include_spip('inc/modifier');
50        modifier_contenu('gis', $id_gis, array(
51                        //'nonvide' => array('nom' => _T('info_sans_titre')),
52                        'invalideur' => "id='id_gis/$id_gis'"
53                ),
54                $c);
55       
56        if(intval(_request('id_objet')) && _request('objet'))
57                lier_gis($id_gis, _request('objet'), _request('id_objet'));
58}
59
60/**
61 * Lier un point géolocalisé à un objet SPIP
62 *
63 * @param int $id_gis identifiant numérique du point
64 * @param string $objet Le type de l'objet à lier
65 * @param int $id_objet L'identifiant numérique de l'objet lié
66 */
67function lier_gis($id_gis, $objet, $id_objet){
68        //$objet = objet_type($objet);
69        if ($id_objet AND $id_gis
70        AND preg_match('/^[a-z0-9_]+$/i', $objet) # securite
71        AND !sql_getfetsel("id_gis", "spip_gis_liens", "id_gis=$id_gis AND id_objet=$id_objet AND objet=".sql_quote($objet))
72        ) {
73                sql_insertq('spip_gis_liens',
74                        array('id_gis' => $id_gis,
75                                'id_objet' => $id_objet,
76                                'objet' => $objet));
77        }
78}
79
80/**
81 * Délier un point géolocalisé d'un objet SPIP
82 *
83 * @param int $id_gis identifiant numérique du point
84 * @param string $objet Le type de l'objet à lier
85 * @param int $id_objet L'identifiant numérique de l'objet lié
86 */
87function delier_gis($id_gis, $objet, $id_objet){
88        //$objet = objet_type($objet);
89        if ($id_objet AND $id_gis
90        AND preg_match('/^[a-z0-9_]+$/i', $objet) # securite
91        ) {
92                sql_delete('spip_gis_liens', "id_gis=$id_gis AND id_objet=$id_objet AND objet=". sql_quote($objet));
93        }
94        include_spip('inc/invalideur');
95        suivre_invalideur("id='id_gis/$id_gis'");
96}
97
98function supprimer_gis($id_gis){
99        if (intval($id_gis)){
100                sql_delete("spip_gis_liens", "id_gis=".intval($id_gis));
101                sql_delete("spip_gis", "id_gis=".intval($id_gis));
102        }
103        $id_gis = 0;
104        include_spip('inc/invalideur');
105        suivre_invalideur("id='id_gis/$id_gis'");
106        return $id_gis;
107}
108
109?>
Note: See TracBrowser for help on using the repository browser.