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

Last change on this file since 48696 was 48696, checked in by brunobergot@…, 8 years ago

et hop, voilà GIS 2 (qui comme l'indique son état est encore en dev)

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