source: spip-zone/_plugins_/spip_geoportail/inc/geoportail_fonctions.php @ 44063

Last change on this file since 44063 was 44063, checked in by jean-marc.viglino@…, 9 years ago

[MAJ] Réorganisation du code.

File size: 8.4 KB
Line 
1<?php
2/**
3* Plugin SPIP Geoportail
4*
5* @author:
6* Jean-Marc Viglino (ign.fr)
7*
8* Copyright (c) 2010
9* Logiciel distribue sous licence GNU/GPL.
10*
11* Ajouter un bouton dans la barre de menu
12* Vous pouvez redefinir geoportail_menu pour placer le menu ailleurs
13*
14* Definition des pipes pour l'affichage du formulaire dans les pages SPIP
15
16**/
17include_spip('inc/documents');
18include_spip('public/assembler');
19include_spip('inc/compat_192');
20include_spip('public/geoportail_profils');
21
22/** Recalcule sur chaque page (hors cache)
23 - pseudo balise _SPIP_GEOPORATAIL_HASH_ qui doit etre calcule sur chaque page
24*/
25function geoportail_affichage_final($page)
26{       // on regarde rapidement si la page inclus un geoportail
27        if (strpos($page, '<!_SPIP_GEOPORTAIL_HASH_!>')===FALSE) return $page;
28       
29        // Inclure le hash code de maniere dynamique
30        charger_fonction('securiser_action','inc');
31        $action = calculer_action_auteur('geoportail');
32        return str_replace('<!_SPIP_GEOPORTAIL_HASH_!>', $action, $page);
33} 
34
35/**
36 Fonction pour placer le menu geoportail
37*/
38function geoportail_menu_dist(&$boutons_admin, $menu, $icone, $libelle)
39{       // Surcharge de la fonction
40        if (function_exists(geoportail_menu)) geoportail_menu($boutons_admin,$menu, $icone, $libelle);
41        else
42        {       switch ($menu)
43                {       case 'geoservice_tous':
44                                if ($GLOBALS['meta']['geoportail_service'])
45                                {       if ($boutons_admin['bando_edition']) $ssmenu = 'bando_edition';
46                                        else $ssmenu = 'naviguer';
47                                        $boutons_admin[$ssmenu]->sousmenu[$menu] =  new Bouton ($icone,$libelle);
48                                }
49                        break;
50                        default:
51                                if ($boutons_admin['bando_configuration']) $ssmenu ='bando_configuration';
52                                else $ssmenu = 'configuration';
53                                $boutons_admin[$ssmenu]->sousmenu[$menu] =  new Bouton ($icone,$libelle);
54                        break;
55                }
56        }
57}
58
59// Ajout des boutons dans l'interface privee
60function geoportail_ajouterBoutons($boutons_admin) 
61{       if (autoriser('configurer','geoportail',0)) 
62                geoportail_menu_dist ($boutons_admin, 'geoportail_config', _DIR_PLUGIN_GEOPORTAIL."img/geo.png", _T('geoportail:geoportail'));
63        if ($GLOBALS['connect_statut'] == "0minirezo") 
64                geoportail_menu_dist ($boutons_admin, 'geoservice_tous', "site-24.gif", _T('geoportail:geoservices'));
65        return $boutons_admin;
66}
67
68// Affichage d'un popup de services (va chercher dans la dscription de la table SPIP)
69function geoportail_services($val, $att)
70{       $stat = spip_fetch_array(spip_query("DESCRIBE spip_geoservices $att"));
71        $reg = "^enum\('(.*)'\)$";
72        $stat = ereg_replace($reg,'\1',$stat['Type']);
73        $stat = split("[']?,[']?",$stat);
74        $rep = "";
75        foreach ($stat as $s) $rep .= "<option value='$s' ".($val==$s?"SELECTED":"").">$s</option>";
76        return $rep;
77}
78
79// Fonction de gestion des geoservices
80function geoportail_table_geoservices ($id_rubrique=0)
81{       global $connect_statut, $connect_toutes_rubriques, $couleur_foncee, $couleur_claire;
82
83        $contexte = array(
84                'id_rubrique'=>$id_rubrique,
85                'couleur_foncee'=>$couleur_foncee,
86                'couleur_claire'=>$couleur_claire
87        );
88        if (autoriser ("modifier", "geoservice", 0, NULL, array('id_rubrique'=>$id_rubrique))) $contexte['modifier'] = " ";
89
90        $fond = recuperer_fond ('fonds/geoservices_table',$contexte);
91        if ($fond)
92        echo "\n"
93//              . bandeau_titre_boite2("<b>&nbsp;"._T("geoportail:geoservices")."</b>", "site-24.gif", $couleur_claire, 'black', false)
94                . debut_cadre("trait-couleur", "site-24.gif", "", "<b>&nbsp;"._T("geoportail:geoservices")."</b>", $couleur_claire, 'black', false)
95                . $fond
96                . fin_cadre(true)
97                . "\n";
98        elseif ($id_rubrique==0) echo "<p> </p>";
99
100        if (autoriser ("creer", "geoservice", 0, NULL, array('id_rubrique'=>$id_rubrique))) 
101        {       echo icone_inline(_T('geoportail:icone_ajouter_service'), 
102                                        generer_url_ecrire('geoservice_edit',"id_rubrique=$id_rubrique"), 
103                                        "site-24.gif",
104                                        "creer.gif",
105                                        "right", 
106                                        false);
107        }
108}
109
110/**
111  Affichage du formulaire pour la saisie de coordonnees
112*/
113function geoportail_affiche_milieu($flux) 
114{       $exec =  $flux['args']['exec'];
115
116        // Le contexte
117        $contexte = array(
118                                        'class'                 => 'carto',
119                                        'deplier'               => _request('zone') ? ' ':'',
120                                        'lon'                   => _request('lon'),
121                                        'lat'                   => _request('lat'),
122                                        'zoom'                  => _request('zoom'),
123                                        'zone'                  => _request('zone')
124                                );
125        if ($exec == 'articles' && $GLOBALS['meta']['geoportail_geoarticle']) 
126        {       $contexte['id_objet'] = $flux['args']['id_article'];
127                if ($GLOBALS['meta']['geoportail_geodocument']) $contexte['id_article'] = $flux['args']['id_article'];
128                $contexte['objet'] = 'article';
129        }
130        else if ($exec == 'auteur_infos' && $GLOBALS['meta']['geoportail_geoauteur']) 
131        {       $contexte['id_objet'] = $flux['args']['id_auteur'];
132                $contexte['objet'] = 'auteur';
133        }
134        else if ($exec == 'naviguer' && $GLOBALS['meta']['geoportail_georubrique']) 
135        {       $contexte['id_objet'] = $flux['args']['id_rubrique'];
136                $contexte['objet'] = 'rubrique';
137        }
138        else if ($exec == 'mots_edit' && $GLOBALS['meta']['geoportail_geomot']) 
139        {       $contexte['id_objet'] = $flux['args']['id_mot'];
140                $contexte['objet'] = 'mot';
141        }
142        else if ($exec == 'breves_voir' && $GLOBALS['meta']['geoportail_geobreve']) 
143        {       $contexte['id_objet'] = $flux['args']['id_breve'];
144                $contexte['objet'] = 'breve';
145        }
146        else if ($exec == 'sites' && $GLOBALS['meta']['geoportail_geosyndic']) 
147        {       $contexte['id_objet'] = $flux['args']['id_syndic'];
148                $contexte['objet'] = 'syndic';
149        }
150        if ($contexte['id_objet'])
151        {       $flux['data'] .= 
152                debut_cadre_enfonce(_DIR_PLUGIN_GEOPORTAIL."img/punaise.png", true, "", 
153                        "<a id=carto href=\"javascript:geoportail_formulaire_show()\">"
154                        ."<img class=carto_show src='".find_in_path('images/deplierhaut.gif')."' title='"._T('spip:info_deplier')."' />"
155                        ."<img class=carto_show style='display:none;' src='".find_in_path('images/deplierbas.gif')."' title='"._T('spip:info_deplier')."' />"
156                        ."</a>"
157                        ._T("geoportail:geoposition")
158                        ." <img class=carto_patience style='display:none; vertical-align:top;' src='".find_in_path('images/searching.gif')."' />"
159                        )
160                        . recuperer_fond ('formulaires/geoportail_formulaire',$contexte)
161                        . fin_cadre_enfonce(true);
162        }
163        return $flux;
164}
165
166/** seulement en SPIP v.2
167        idem pour les documents : afficher le lien
168        Recherche automatique d'un georef dans le ficher (si cas geoportail_geodocument_auto)
169*/
170function geoportail_afficher_contenu_objet($flux)
171{       
172        if ($flux['args']['type']=='case_document' && $GLOBALS['meta']['geoportail_geodocument'])
173        {       // permettre la modification du document (documents_edit)
174                $id_article = _request('id_article');
175                if (!$id_article) $id_rubrique = _request('id_rubrique');
176                $id_document = $flux['args']['id'];
177                if (autoriser('modifier','document', $id_document))
178                {       // Recherche du document
179                        $document = spip_fetch_array(spip_query("SELECT * FROM spip_documents WHERE id_document = ".$id_document));
180                        $titre = $document['titre'];
181                        $fichier = $document['fichier'];
182                        $descriptif = $document['descriptif'];
183                        $extension = $document['extension'];
184                        if (!$extension)
185                        {       $result = spip_fetch_array(spip_query("SELECT * FROM spip_types_documents WHERE id_type=".$document['id_type']));
186                                $extension = $result['extensions'];
187                        }
188                        // Georeferencement de l'objet
189                        include_spip('public/geoportail_boucles');
190                        $info =_T('geoportail:georef');
191                        $result = spip_fetch_array(spip_query("SELECT * FROM spip_geopositions WHERE id_objet=$id_document AND objet='document'"));
192                        if ($result)
193                        {       $lon=$result['lon'];
194                                $lat=$result['lat'];
195                                $info = "(".geoportail_longitude($lon,true).", ".geoportail_latitude($lat,true).")";
196                        }
197                        // Rechercher le georeferencement sur le fichier
198                        else if ($GLOBALS['meta']['geoportail_geodocument_auto'])
199                        {       include_spip('inc/geoupload');
200                                if (geoportail_get_coord(_DIR_IMG.$fichier,$extension,$lon,$lat))
201                                        $info = "(".geoportail_longitude($lon,true).", ".geoportail_latitude($lat,true).")";
202                                $id_position = sql_insert("spip_geopositions",
203                                                "(id_objet, objet, lon, lat, zoom, zone)",
204                                                "($id_document, 'document', $lon, $lat, 10, 'FXX')"
205                                        );
206                        }
207
208                        $flux['data'] .= '<a style="display:block; text-align:center;" href="'
209                        .generer_url_ecrire("geodocuments_edit","id_article=$id_article&id_rubrique=$id_rubrique&id_document=$id_document",true)
210                        .'">'.$info.'</a>';
211                }
212        }
213        return $flux;
214}
215
216/** Ne pas exporter le RGC en SPIP v2 ! */
217function geoportail_lister_tables_noexport($liste)
218{
219        $liste[] = 'spip_georgc';
220        return $liste;
221}
222
223?>
Note: See TracBrowser for help on using the repository browser.