Changeset 81245 in spip-zone


Ignore:
Timestamp:
Mar 6, 2014, 5:57:57 PM (5 years ago)
Author:
kent1@…
Message:

Diogene Geo en version 1.3.0

Permettre de limiter la sélection de points géolocalisés qu'aux points présents dans la base de donnée

Location:
_plugins_/diogene/diogene_complements/diogene_geo/trunk
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/diogene/diogene_complements/diogene_geo/trunk/diogene_geo_pipelines.php

    r73982 r81245  
    77 * kent1 (http://www.kent1.info - kent1@arscenic.info)
    88 *
    9  * © 2010-2013 - Distribue sous licence GNU/GPL
     9 * © 2010-2014 - Distribue sous licence GNU/GPL
    1010 *
    1111 * Utilisation des pipelines par Diogene Géo
     
    1919 * Insertion dans le pipeline diogene_ajouter_saisies (plugin Diogene)
    2020 *
    21  * On ajoute la carte et les saisies supplémentaires liées à diogene_geo
     21 * On ajoute la carte et les saisies supplémentaires liées à diogene_geo ou un sélecteur de point existant
    2222 *
    2323 * @param array $flux
     
    3030        $id_objet = $flux['args']['contexte']['id_'.$objet];
    3131        if(defined('_DIR_PLUGIN_GIS') && in_array($objet,array('article','rubrique')) && is_array(unserialize($flux['args']['champs_ajoutes'])) && in_array('geo',unserialize($flux['args']['champs_ajoutes']))){
     32                /**
     33                 * Récupérer le point gis lié à l'objet
     34                 */
    3235                if(intval($id_objet)){
    3336                        $valeurs_gis = sql_fetsel("*","spip_gis AS gis LEFT JOIN spip_gis_liens AS lien USING(id_gis)","lien.id_objet=$id_objet AND lien.objet=".sql_quote($objet));
     
    4043                        }
    4144                }
    42                 $flux['data'] .= recuperer_fond('formulaires/diogene_ajouter_medias_geo',$flux['args']['contexte']);
    43                
    44         }
    45     return $flux;
     45                /**
     46                 * Afficher le select si on veut forcer le point existant
     47                 */
     48                if(isset($flux['args']['options_complements']['geo_forcer_existant']) && $flux['args']['options_complements']['geo_forcer_existant'] == 'on'){
     49                        $flux['data'] .= recuperer_fond('formulaires/diogene_ajouter_medias_geo_forcer',$flux['args']['contexte']);
     50                }
     51                /**
     52                 * Afficher une carte dans les autres cas
     53                 */
     54                else{
     55                        $flux['data'] .= recuperer_fond('formulaires/diogene_ajouter_medias_geo',$flux['args']['contexte']);
     56                }
     57        }
     58        return $flux;
    4659}
    4760
     
    6982                $flux['data']['region'] = $_POST['region'];
    7083                $flux['data']['pays'] = $_POST['pays'];
     84                $flux['data']['id_gis'] = $_POST['id_gis'];
    7185                $flux['data']['position_auto'] = _request('position_auto');
    7286        }
     
    91105        if(defined('_DIR_PLUGIN_GIS') && !_request('gis_supprimer') && _request('gis_afficher')){
    92106                $erreurs = &$flux['args']['erreurs'];
    93                
    94                 $lat = _request('lat');
    95                 $lon = _request('lon');
    96                 $zoom = _request('zoom');
    97                 $titre = _request('gis_titre');
    98                
    99                 if($lat OR $lon OR $zoom OR $titre){
    100                         if(!$lat)
    101                                 $flux['data']['lat'] = _T('info_obligatoire');
    102                         if(!$lon)
    103                                 $flux['data']['lon'] = _T('info_obligatoire');
    104                         if(!$zoom)
    105                                 $flux['data']['zoom'] = _T('info_obligatoire');
    106                         if(!$titre)
    107                                 $flux['data']['gis_titre'] = _T('info_obligatoire');
    108                 }
    109        
    110                 if((!$erreur['lat']) && $lat){
    111                         if((!empty($lat)) && !is_numeric($lat))
    112                                 $flux['data']['lat'] = _T('diogene:erreur_valeur_float',array('champ'=> _T('diogene_geo:latitude')));
    113                 }
    114                 if((!$erreur['lon']) && $lon){
    115                         if((!empty($lon)) && !is_numeric($lon))
    116                                 $flux['data']['lonx'] = _T('diogene:erreur_valeur_float',array('champ'=> _T('diogene_geo:longitude')));
    117                 }
    118                 if((!$erreur['zoom']) && $zoom){
    119                         if((!empty($zoom)) && !ctype_digit($zoom))
    120                                 $flux['data']['zoom'] = _T('diogene:erreur_valeur_int',array('champ'=>_T('diogene_geo:zoom')));
     107                if(!isset($flux['args']['options_complements']['geo_forcer_existant']) || $flux['args']['options_complements']['geo_forcer_existant'] != 'on'){
     108                        $lat = _request('lat');
     109                        $lon = _request('lon');
     110                        $zoom = _request('zoom');
     111                        $titre = _request('gis_titre');
     112
     113                        if(_request('statut') != 'poubelle' && ($lat OR $lon OR $zoom)){
     114                                if(!$lat)
     115                                        $flux['data']['lat'] = _T('info_obligatoire');
     116                                if(!$lon)
     117                                        $flux['data']['lon'] = _T('info_obligatoire');
     118                                if(!$zoom)
     119                                        $flux['data']['zoom'] = _T('info_obligatoire');
     120                                if(!$titre)
     121                                        $flux['data']['gis_titre'] = _T('info_obligatoire');
     122                        }
     123
     124                        if((!$erreur['lat']) && $lat){
     125                                if((!empty($lat)) && !is_numeric($lat))
     126                                        $flux['data']['lat'] = _T('diogene:erreur_valeur_float',array('champ'=> _T('diogene_geo:latitude')));
     127                        }
     128                        if((!$erreur['lon']) && $lon){
     129                                if((!empty($lon)) && !is_numeric($lon))
     130                                        $flux['data']['lonx'] = _T('diogene:erreur_valeur_float',array('champ'=> _T('diogene_geo:longitude')));
     131                        }
     132                        if((!$erreur['zoom']) && $zoom){
     133                                if((!empty($zoom)) && !ctype_digit($zoom))
     134                                        $flux['data']['zoom'] = _T('diogene:erreur_valeur_int',array('champ'=>_T('diogene_geo:zoom')));
     135                        }
    121136                }
    122137        }
     
    138153                $objet = $flux['args']['type'];
    139154                $id_objet = $flux['args']['id_objet'];
    140                 if(_request('gis_supprimer')){
     155                if(intval(_request('id_diogene')) > 0)
     156                        $options_complements = unserialize(sql_getfetsel("options_complements","spip_diogenes","id_diogene=".intval(_request('id_diogene'))));
     157                if(isset($options_complements['geo_forcer_existant']) && $options_complements['geo_forcer_existant'] == 'on'){
    141158                        include_spip('action/editer_gis');
    142                         $id_gis = _request('id_gis');
    143                         delier_gis($id_gis, $objet, $id_objet);
    144                         $nb_gis = sql_countsel('spip_gis_liens','id_gis='.intval($id_gis));
    145                         if($nb_gis == 0)
    146                                 supprimer_gis($id_gis);
    147 
    148                         /**
    149                          * On vide ensuite les request sur les données géo
    150                          */
    151                         set_request('lat','');
    152                         set_request('lon','');
    153                         set_request('zoom','');
    154                         set_request('gis_titre','');
    155                         set_request('gis_descriptif','');
    156                         set_request('adresse','');
    157                         set_request('code_postal','');
    158                         set_request('ville','');
    159                         set_request('region','');
    160                         set_request('pays','');
    161                 }
    162                 else if(($lat = _request('lat')) && ($lon = _request('lon')) && ($gis_afficher = _request('gis_afficher'))){
    163                         include_spip('action/editer_gis');
    164                         // On crée l'array pour l'update et pour la création des coordonnées
    165                         $zoom = _request('zoom');
    166                         $titre = _request('gis_titre');
    167                         $descriptif = _request('gis_descriptif');
    168                         $id_gis = _request('id_gis');
    169                         $datas = array(
    170                                 'titre' => $titre,
    171                                 'descriptif' => $descriptif,
    172                                 'lat' => $lat,
    173                                 'lon' => $lon,
    174                                 'zoom' => $zoom,
    175                                 'titre' => $titre,
    176                                 'adresse' => _request('adresse'),
    177                                 'code_postal' => _request('code_postal'),
    178                                 'ville' => _request('ville'),
    179                                 'region' => _request('region'),
    180                                 'pays' => _request('pays')
    181                         );
    182                         if(!intval($id_gis))
    183                                 $id_gis = insert_gis();
    184 
    185                         if(isset($datas['lon'])){
    186                                 if($datas['lon'] > 180){
    187                                         while($datas['lon'] > 180){
    188                                                 $datas['lon'] = $datas['lon'] - 360;
    189                                         }
    190                                 }else if($datas['lon'] <= -180){
    191                                         while($datas['lon'] <= -180){
    192                                                 $datas['lon'] = $datas['lon'] + 360;
     159                        $id_gis = false;
     160                        if(intval($id_objet))
     161                                $id_gis = sql_getfetsel("gis.id_gis","spip_gis AS gis LEFT JOIN spip_gis_liens AS lien USING(id_gis)","lien.id_objet=$id_objet AND lien.objet=".sql_quote($objet));
     162                        if(intval($id_gis) > 0 &&  $id_gis != _request('id_gis'))
     163                                gis_dissocier($id_gis,array($objet => $id_objet));
     164                        if(intval(_request('id_gis')) > 0 && $id_gis != _request('id_gis'))
     165                                gis_associer(_request('id_gis'), array($objet => $id_objet));
     166                }
     167                else{
     168                        if(_request('gis_supprimer')){
     169                                include_spip('action/editer_gis');
     170                                $id_gis = _request('id_gis');
     171                                delier_gis($id_gis, $objet, $id_objet);
     172                                $nb_gis = sql_countsel('spip_gis_liens','id_gis='.intval($id_gis));
     173                                if($nb_gis == 0)
     174                                        supprimer_gis($id_gis);
     175       
     176                                /**
     177                                 * On vide ensuite les request sur les données géo
     178                                 */
     179                                set_request('lat','');
     180                                set_request('lon','');
     181                                set_request('zoom','');
     182                                set_request('gis_titre','');
     183                                set_request('gis_descriptif','');
     184                                set_request('adresse','');
     185                                set_request('code_postal','');
     186                                set_request('ville','');
     187                                set_request('region','');
     188                                set_request('pays','');
     189                        }
     190                        else if(($lat = _request('lat')) && ($lon = _request('lon')) && ($gis_afficher = _request('gis_afficher'))){
     191                                include_spip('action/editer_gis');
     192                                // On crée l'array pour l'update et pour la création des coordonnées
     193                                $zoom = _request('zoom');
     194                                $titre = _request('gis_titre');
     195                                $descriptif = _request('gis_descriptif');
     196                                $id_gis = _request('id_gis');
     197                                $datas = array(
     198                                        'titre' => $titre,
     199                                        'descriptif' => $descriptif,
     200                                        'lat' => $lat,
     201                                        'lon' => $lon,
     202                                        'zoom' => $zoom,
     203                                        'titre' => $titre,
     204                                        'adresse' => _request('adresse'),
     205                                        'code_postal' => _request('code_postal'),
     206                                        'ville' => _request('ville'),
     207                                        'region' => _request('region'),
     208                                        'pays' => _request('pays')
     209                                );
     210                                if(!intval($id_gis))
     211                                        $id_gis = insert_gis();
     212       
     213                                if(isset($datas['lon'])){
     214                                        if($datas['lon'] > 180){
     215                                                while($datas['lon'] > 180){
     216                                                        $datas['lon'] = $datas['lon'] - 360;
     217                                                }
     218                                        }else if($datas['lon'] <= -180){
     219                                                while($datas['lon'] <= -180){
     220                                                        $datas['lon'] = $datas['lon'] + 360;
     221                                                }
    193222                                        }
    194223                                }
    195                         }
    196                         if(isset($datas['lat'])){
    197                                 if($datas['lat'] > 90){
    198                                         while($datas['lat'] > 90){
    199                                                 $datas['lat'] = $datas['lat'] - 180;
    200                                         }
    201                                 }else if($datas['lat'] <= -90){
    202                                         while($datas['lat'] <= -90){
    203                                                 $datas['lat'] = $datas['lon'] + 180;
     224                                if(isset($datas['lat'])){
     225                                        if($datas['lat'] > 90){
     226                                                while($datas['lat'] > 90){
     227                                                        $datas['lat'] = $datas['lat'] - 180;
     228                                                }
     229                                        }else if($datas['lat'] <= -90){
     230                                                while($datas['lat'] <= -90){
     231                                                        $datas['lat'] = $datas['lon'] + 180;
     232                                                }
    204233                                        }
    205234                                }
    206                         }
    207                         sql_updateq('spip_gis',$datas,'id_gis='.intval($id_gis));
    208                         if($objet && $id_objet)
    209                                 lier_gis($id_gis, $objet, $id_objet);
    210                 }
    211                 set_request('gis_afficher',$gis_afficher);
     235                                sql_updateq('spip_gis',$datas,'id_gis='.intval($id_gis));
     236                                if($objet && $id_objet)
     237                                        lier_gis($id_gis, $objet, $id_objet);
     238                        }
     239                        set_request('gis_afficher',$gis_afficher);
     240                }
    212241        }
    213242        return $flux;
     
    253282
    254283function diogene_geo_diogene_champs_pre_edition($array){
    255         if(defined('_DIR_PLUGIN_GIS'))
     284        if(defined('_DIR_PLUGIN_GIS')){
    256285                $array[] = 'geo_cacher';
     286                $array[] = 'geo_forcer_existant';
     287        }
    257288        return $array;
    258289}
  • _plugins_/diogene/diogene_complements/diogene_geo/trunk/formulaires/diogene_geo_cacher.html

    r69573 r81245  
     1[(#SAISIE{case, geo_forcer_existant,
     2        label=<:diogene_geo:label_geo_forcer_existant:>,
     3        valeur=[(#ENV**{options_complements}|unserialize|table_valeur{geo_forcer_existant})],
     4        label_case=<:diogene_geo:label_geo_forcer_existant_defaut:>})]
     5
    16[(#SAISIE{case, geo_cacher,
    27        label=<:diogene_geo:label_geo_cacher:>,
  • _plugins_/diogene/diogene_complements/diogene_geo/trunk/lang/diogene_geo_fr.php

    r76144 r81245  
    2020        'label_geo_cacher' => 'Cacher la carte par défaut',
    2121        'label_geo_cacher_defaut' => 'Cache la carte et les champs de géolocalisation par défaut',
     22        'label_geo_forcer_existant' => 'Forcer la sélection d\'un point',
     23        'label_geo_forcer_existant_defaut' => 'Imposer le choix d\'un point géolocalisé préexistant sur le site (n\'affichera pas de carte)',
    2224        'label_recherche' => 'Afficher un champ de recherche sous la carte.',
    2325        'label_supprimer_gis' => 'Supprimer les informations géographiques liées',
  • _plugins_/diogene/diogene_complements/diogene_geo/trunk/paquet.xml

    r78188 r81245  
    22        prefix="diogene_geo"
    33        categorie="edition"
    4         version="1.2.0"
     4        version="1.3.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.0.*]"
     
    1414        <auteur lien="http://www.kent1.info" mail="kent1@arscenic.info">kent1</auteur>
    1515
    16         <copyright>2010-2013</copyright>
     16        <copyright>2010-2014</copyright>
    1717
    1818        <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
Note: See TracChangeset for help on using the changeset viewer.