source: plugins_spip/diogene_complements/diogene_geo/diogene_geo_pipelines.php @ 4915

Last change on this file since 4915 was 4915, checked in by kent1, 9 years ago

Et on enregistre le bouzin

File size: 5.0 KB
Line 
1<?php
2
3function diogene_geo_diogene_ajouter_saisies($flux){
4        $id_article = $flux['args']['contexte']['id_article'];
5        $id_rubrique = $flux['args']['contexte']['id_rubrique'];
6        spip_log(unserialize($flux['args']['champs_ajoutes']),'diogene');
7        if(is_array(unserialize($flux['args']['champs_ajoutes'])) && in_array('geo',unserialize($flux['args']['champs_ajoutes']))){
8                if($id_article OR $id_rubrique){
9                        if(intval($id_article)){
10                                $flux['args']['contexte']['objet'] = 'article';
11                                $flux['args']['contexte']['id_objet'] = $id_article;
12                                $objet = sql_quote('article');
13                                $valeurs_gis = sql_fetsel("id_gis,lat,lon,zoom,titre,descriptif","spip_gis AS gis LEFT JOIN spip_gis_liens AS lien USING(id_gis)","lien.id_objet=$id_article AND lien.objet=".$objet);
14                        }else if(intval($id_rubrique)){
15                                $flux['args']['contexte']['objet'] = 'rubrique';
16                                $objet = sql_quote('rubrique');
17                                $valeurs_gis = sql_fetsel("id_gis,lat,lon,zoom,titre,descriptif","spip_gis AS gis LEFT JOIN spip_gis_liens AS lien USING(id_gis)","lien.id_objet=$id_rubrique AND lien.objet=".$objet);
18                        }
19                        if(is_array($valeurs_gis)){
20                                $valeurs_gis['gis_titre'] = $valeurs_gis['titre'];
21                                $flux['args']['contexte']['id_objet'] = $id_rubrique;
22                                $valeurs_gis['gis_descriptif'] = $valeurs_gis['descriptif'];
23                                unset($valeurs_gis['titre']);
24                                unset($valeurs_gis['gis_descriptif']);
25                                $flux['args']['contexte'] = array_merge($flux['args']['contexte'],$valeurs_gis);
26                        }
27                $flux['data'] .= recuperer_fond('formulaires/diogene_ajouter_medias_geo',$flux['args']['contexte']);
28                }
29        }
30    return $flux;
31}
32
33/**
34 * Insertion dans le pipeline diogene_traiter
35 *
36 * On crée un point ou le met à jour si on a les infos de géoloc
37 *
38 * @param array $flux le contexte du pipeline
39 */
40function diogene_geo_diogene_traiter($flux){
41        if($flux['args']['action']=='modifier'){
42                if(($lat = _request('lat')) && ($lon = _request('lon'))){
43                        include_spip('action/editer_gis');
44                        // On crée l'array pour l'update et pour la création des coordonnées
45                        $zoom = _request('zoom');
46                        $titre = _request('gis_titre');
47                        $descriptif = _request('gis_descriptif');
48                        $id_gis = _request('id_gis');
49                        $datas = array(
50                                'titre' => $titre,
51                                'descriptif' => $descriptif,
52                                'lat' => $lat,
53                                'lon' => $lon,
54                                'zoom' => $zoom,
55                                'titre' => $titre
56                        );
57                        if(!intval($id_gis)){
58                                $id_gis = insert_gis();
59                        }
60                        revisions_gis($id_gis,$datas);
61                }
62        }
63        return $flux;
64}
65
66/**
67 * Insertion dans le pipeline diogene_verifier (Plugin Diogene)
68 * Vérifie la validité des champs lat, lon, zoom, gis_titre, gis_descriptif
69 * - Si au moins une de ces valeurs est présente (sauf le descriptif), lat, lon, zoom, et titre
70 * deviennent obligatoires
71 * - Si lat et lon sont présents mais ne sont pas de type float => erreur
72 * - Si zoom est présent et n'est pas un int => erreur
73 *
74 * @param array $flux Le contexte du pipeline
75 */
76function diogene_geo_diogene_verifier($flux){
77        spip_log("DIOGENE_GEO : Verification des champs géographiques","diogene");
78
79        $erreurs = &$flux['args']['erreurs'];
80       
81        $lat = _request('lat');
82        $lon = _request('lon');
83        $zoom = _request('zoom');
84        $titre = _request('gis_titre');
85       
86        if($lat OR $lon OR $zoom OR $titre){
87                if(!$lat){
88                        $flux['lat'] = _T('info_obligatoire');
89                }
90                if(!$lon){
91                        $flux['lon'] = _T('info_obligatoire');
92                }
93                if(!$zoom){
94                        $flux['zoom'] = _T('info_obligatoire');
95                }
96                if(!$titre){
97                        $flux['gis_titre'] = _T('info_obligatoire');
98                }
99        }
100
101        if((!$erreur['lat']) && $lat){
102                if((!empty($lat)) && !is_numeric($lat)){
103                        $flux['lat'] = _T('diogene:erreur_valeur_float',array('champ'=> _T('diogene_geo:latitude')));
104                }
105        }
106        if((!$erreur['lon']) && $lon){
107                if((!empty($lon)) && !is_numeric($lon)){
108                        $flux['lonx'] = _T('diogene:erreur_valeur_float',array('champ'=> _T('diogene_geo:longitude')));
109                }
110        }
111        if((!$erreur['zoom']) && $zoom){
112                if((!empty($zoom)) && !ctype_digit($zoom)){
113                        $flux['zoom'] = _T('diogene:erreur_valeur_int',array('champ'=>_T('diogene_geo:zoom')));
114                }
115        }
116        return $flux;
117}
118
119
120/**
121 * Insertion dans le pipeline diogene_charger (plugin DiogÚne)
122 * On récupÚre les valeurs de lat, lon, zoom, gis_titre et gis_descriptif dans ce qui a été auparavant posté
123 * (On évite le $_GET de l'url) pour le réinsérer en cas d'erreur dans le formulaire
124 *
125 * @param array $flux Le contexte du pipeline
126 */
127function diogene_geo_diogene_charger($flux){
128        $flux['data']['lat'] = $_POST['lat'];
129        $flux['data']['lon'] = $_POST['lon'];
130        $flux['data']['zoom'] = $_POST['zoom'];
131        $flux['data']['gis_titre'] = $_POST['gis_titre'];
132        $flux['data']['gis_descriptif'] = $_POST['gis_descriptif'];
133        return $flux;
134}
135
136/**
137 * Insertion dans le pipeline diogene_champs_sup (plugin Diogene)
138 * On ajoute la possibilité d'avoir une partie de formulaire pour gis pour les articles, les rubriques,
139 * les pages spécifiques et emballe_medias
140 *
141 * @param array $flux Le contexte du flux
142 */
143function diogene_geo_diogene_champs_sup($flux){
144        $flux['article']['geo'] = $flux['page']['geo'] = $flux['emballe_media']['geo'] = _T('diogene_geo:form_legend');
145        $flux['rubrique']['geo'] = _T('diogene_geo:form_legend');
146        return $flux;
147}
148?>
Note: See TracBrowser for help on using the repository browser.