Ignore:
Timestamp:
03/23/10 18:36:16 (11 years ago)
Author:
kent1
Message:

On commence à penser à gérer plusieurs types d'objets

File:
1 edited

Legend:

Unmodified
Added
Removed
  • plugins_spip/diogene_complements/diogene_geo/diogene_geo_pipelines.php

    r3091 r3106  
    11<?php
    22
    3         function diogene_geo_diogene_avant_formulaire($flux){
    4                 if(is_array(unserialize($flux['args']['champs_ajoutes'])) && in_array('geo',unserialize($flux['args']['champs_ajoutes']))){
    5                 $flux['data'] .= recuperer_fond('prive/diogene_geo_avant_formulaire', $flux['args']);
    6                 }
    7         return $flux;
     3function diogene_geo_diogene_avant_formulaire($flux){
     4        if(is_array(unserialize($flux['args']['champs_ajoutes'])) && in_array('geo',unserialize($flux['args']['champs_ajoutes']))){
     5        $flux['data'] .= recuperer_fond('prive/diogene_geo_avant_formulaire', $flux['args']);
     6        }
     7    return $flux;
    88    }
    99
    10         function diogene_geo_diogene_texte_cfg_form($flux){
    11         $flux['data'] .= recuperer_fond('formulaires/config_diogene_texte_geo', $flux['args']);
    12         return $flux;
     10function diogene_geo_diogene_texte_cfg_form($flux){
     11    $flux['data'] .= recuperer_fond('formulaires/config_diogene_texte_geo', $flux['args']);
     12    return $flux;
    1313    }
    1414
    15         function diogene_geo_diogene_ajouter_media($flux){
    16                 $id_article = $flux['args']['contexte']['id_article'];
    17                 if(is_array(unserialize($flux['args']['champs_ajoutes'])) && in_array('geo',unserialize($flux['args']['champs_ajoutes']))){
    18                         if($id_article){
    19                                 if(intval($id_article)){
    20                                         $valeurs_gis = sql_fetsel("lat,lonx,zoom","spip_gis","id_article=$id_article");
    21                                         if(is_array($valeurs_gis)){
    22                                                 $flux['args']['contexte'] = array_merge($flux['args']['contexte'],$valeurs_gis);
    23                                         }
     15function diogene_geo_diogene_ajouter_media($flux){
     16        $id_article = $flux['args']['contexte']['id_article'];
     17        if(is_array(unserialize($flux['args']['champs_ajoutes'])) && in_array('geo',unserialize($flux['args']['champs_ajoutes']))){
     18                if($id_article){
     19                        if(intval($id_article)){
     20                                $valeurs_gis = sql_fetsel("lat,lonx,zoom","spip_gis","id_article=$id_article");
     21                                if(is_array($valeurs_gis)){
     22                                        $flux['args']['contexte'] = array_merge($flux['args']['contexte'],$valeurs_gis);
    2423                                }
    25                         $flux['data'] .= recuperer_fond('formulaires/diogene_ajouter_medias_geo',$flux['args']['contexte']);
     24                        }
     25                $flux['data'] .= recuperer_fond('formulaires/diogene_ajouter_medias_geo',$flux['args']['contexte']);
     26                }
     27        }
     28    return $flux;
     29    }
     30
     31function diogene_geo_diogene_ajout_media_post_traiter($flux){
     32        if($flux['args']['action']=='modifier'){
     33
     34                $id_objet = $flux['args']['id_objet'];
     35                $type = $flux['args']['type'];
     36                $table  = $flux['args']['table'];
     37                $id_table_objet = id_table_objet($type);
     38
     39                if(($lat = _request('lat')) && ($lng = _request('lonx'))){
     40                        // On crée l'array pour l'update et pour la création des coordonnées
     41
     42                        $zoom = _request('zoom') ? _request('zoom') : lire_config('geomap/zoom');
     43
     44                        $coords = array(
     45                                        $id_table_objet=> $id_objet,
     46                                        'lat'=> $lat,
     47                                        'lonx' => $lng,
     48                                        'zoom' => $zoom
     49                                );
     50
     51                        if(lire_config('gis/geocoding') == 'oui'){
     52                                $geocoding = array(
     53                                        "pays" => _request('pays'),
     54                                        "code_pays" => _request('code_pays'),
     55                                        "region" => _request('region'),
     56                                        "ville" => _request('ville'),
     57                                        "code_postal" => _request('code_postal')
     58                                );
     59                                $coords = array_merge($coords,$geocoding);
     60                        }
     61
     62                        $coords_existantes = sql_getfetsel("id_gis","spip_gis","$id_table_objet = $id_objet");
     63                        if($coords_existantes){
     64                                // Des coordonnées sont déjà définies pour cet article
     65                                // => on les update
     66                                sql_updateq("spip_gis",$coords,"id_gis = $coords_existantes");
     67                        }
     68                        else{
     69                                // Aucune coordonnée n'est définie pour cet article
     70                                // => on les crées
     71                                $id_gis = sql_insertq("spip_gis",$coords);
    2672                        }
    2773                }
    28         return $flux;
    29     }
     74        }
     75        return $flux;
     76}
    3077
    31         function diogene_geo_diogene_ajout_media_post_traiter($flux){
    32                 if($flux['args']['action']=='modifier'){
     78function diogene_geo_diogene_ajout_media_post_verifier($flux){
     79        spip_log("DIOGENE_GEO : Verification des champs géographiques");
    3380
    34                         $id_objet = $flux['args']['id_objet'];
    35                         $type = $flux['args']['type'];
    36                         $table  = $flux['args']['table'];
    37                         $id_table_objet = id_table_objet($type);
     81        $id_article = _request('id_article');
     82        $erreurs = &$flux['args']['erreurs'];
    3883
    39                         if(($lat = _request('lat')) && ($lng = _request('lonx'))){
    40                                 // On crée l'array pour l'update et pour la création des coordonnées
     84        if((!$erreur['lat']) && ($lat = _request('lat'))){
     85                if((!empty($lat)) && !is_numeric($lat)){
     86                        $erreurs['lat'] = _T('diogene:valeur_pas_float',array('champs'=> _T('diogene_geo:latitude')));
     87                }
     88        }
     89        if((!$erreur['lonx']) && ($lonx = _request('lonx'))){
     90                if((!empty($lonx)) && !is_numeric($lonx)){
     91                        $erreurs['lonx'] = _T('diogene:valeur_pas_float',array('champs'=> _T('diogene_geo:longitude')));
     92                }
     93        }
     94        if((!$erreur['zoom']) && ($zoom = _request('zoom'))){
     95                if((!empty($zoom)) && !is_numeric($zoom)){
     96                        $erreurs['zoom'] = _T('diogene:valeur_pas_int',array('champs'=>_T('diogene_geo:zoom')));
     97                }
     98        }
     99        return $flux;
     100}
    41101
    42                                 $zoom = _request('zoom') ? _request('zoom') : lire_config('geomap/zoom');
    43 
    44                                 $coords = array(
    45                                                 $id_table_objet=> $id_objet,
    46                                                 'lat'=> $lat,
    47                                                 'lonx' => $lng,
    48                                                 'zoom' => $zoom
    49                                         );
    50 
    51                                 if(lire_config('gis/geocoding') == 'oui'){
    52                                         $geocoding = array(
    53                                                 "pays" => _request('pays'),
    54                                                 "code_pays" => _request('code_pays'),
    55                                                 "region" => _request('region'),
    56                                                 "ville" => _request('ville'),
    57                                                 "code_postal" => _request('code_postal')
    58                                         );
    59                                         $coords = array_merge($coords,$geocoding);
    60                                 }
    61 
    62                                 $coords_existantes = sql_getfetsel("id_gis","spip_gis","$id_table_objet = $id_objet");
    63                                 if($coords_existantes){
    64                                         // Des coordonnées sont déjà définies pour cet article
    65                                         // => on les update
    66                                         sql_updateq("spip_gis",$coords,"id_gis = $coords_existantes");
    67                                 }
    68                                 else{
    69                                         // Aucune coordonnée n'est définie pour cet article
    70                                         // => on les crées
    71                                         $id_gis = sql_insertq("spip_gis",$coords);
    72                                 }
    73                         }
    74                 }
    75                 return $flux;
    76         }
    77 
    78         function diogene_geo_diogene_ajout_media_post_verifier($flux){
    79                 spip_log("DIOGENE_GEO : Verification des champs géographiques");
    80 
    81                 $id_article = _request('id_article');
    82                 $erreurs = &$flux['args']['erreurs'];
    83 
    84                 if((!$erreur['lat']) && ($lat = _request('lat'))){
    85                         if((!empty($lat)) && !is_numeric($lat)){
    86                                 $erreurs['lat'] = _T('diogene:valeur_pas_float',array('champs'=> _T('diogene_geo:latitude')));
    87                         }
    88                 }
    89                 if((!$erreur['lonx']) && ($lonx = _request('lonx'))){
    90                         if((!empty($lonx)) && !is_numeric($lonx)){
    91                                 $erreurs['lonx'] = _T('diogene:valeur_pas_float',array('champs'=> _T('diogene_geo:longitude')));
    92                         }
    93                 }
    94                 if((!$erreur['zoom']) && ($zoom = _request('zoom'))){
    95                         if((!empty($zoom)) && !is_numeric($zoom)){
    96                                 $erreurs['zoom'] = _T('diogene:valeur_pas_int',array('champs'=>_T('diogene_geo:zoom')));
    97                         }
    98                 }
    99                 return $flux;
    100         }
    101 
    102         function diogene_geo_diogene_champs_sup($flux){
    103                 $flux['geo'] = _T('diogene_geo:form_legend');
    104                 return $flux;
    105         }
     102function diogene_geo_diogene_champs_sup($flux){
     103        $flux['article']['geo'] = _T('diogene_geo:form_legend');
     104        $flux['rubrique']['geo'] = _T('diogene_geo:form_legend');
     105        return $flux;
     106}
    106107?>
Note: See TracChangeset for help on using the changeset viewer.