Changeset 95693 in spip-zone


Ignore:
Timestamp:
Mar 2, 2016, 12:07:48 PM (3 years ago)
Author:
guillaume.wauquier@…
Message:

Correction de bug dans le chargement des fichiers et ajout d'une action pour lister les villes et leur coordonnées en ajax

Location:
_plugins_/COG_gps/trunk
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/COG_gps/trunk/coggps_config.php

    r68105 r95693  
    99function coggps_config_tab_fichier()
    1010{
    11 return array('FR'=>array('nom'=>'Geonames : Informations géographiques FRANCE','url_fichier'=>'http://download.geonames.org/export/dump/FR.zip','nom_fichier'=>'geonames_FR.txt'));
     11    return array(
     12        'FR' => array(
     13            'nom' => 'Geonames : Informations géographiques FRANCE',
     14            'fichier' => 'http://download.geonames.org/export/dump/FR.zip',
     15            'nom_fichier' => 'FR.txt'
     16        )
     17    );
    1218}
    1319
    1420function coggps_config_correspondance_colonne()
    1521{
    16 return array('FR'=>array(
    17                                         'colonnes'=>array(
    18                                                 "lon"           =>      5,
    19                                                 "lat"           =>      4,
    20                                                 "elevation"             =>      15,
    21                                                 "elevation_moyenne"     =>      16,
    22                                                 "population"    =>      14,
    23                                                 "autre_nom"             =>      3),
    24                                         'liaison'=>13,
    25                                         'filtre'=>array('cle'=>7,'valeur'=>'ADM4')
    26                                         )
     22    return array(
     23        'FR' => array(
     24            'colonnes' => array(
     25                "lon" => 5,
     26                "lat" => 4,
     27                "elevation" => 15,
     28                "elevation_moyenne" => 16,
     29                "population" => 14,
     30                "autre_nom" => 3
     31            ),
     32            'liaison' => 13,
     33            'filtre' => array('cle' => 7, 'valeur' => 'ADM4')
     34        )
    2735
    28 );
     36    );
    2937}
    3038
    3139
    32 
    33 
    3440?>
  • _plugins_/COG_gps/trunk/formulaires/completer_commune_gps.php

    r68108 r95693  
    22
    33// http://doc.spip.org/@inc_editer_mot_dist
    4 function formulaires_completer_commune_gps_charger(){
    5 include_spip('coggps_config');
    6 include_spip('inc/config');
    7 $fichier=false;
    8 $tab_objet=coggps_config_tab_fichier();
    9 $nom_fichier=$tab_objet['FR']['nom_fichier'];
    10 $dir=_DIR_TMP.lire_config('cog/chemin_donnee');
    11 $fichier=file_exists($dir.$nom_fichier);
    12         return array('fichier'=>$fichier,'repertoire'=>$dir);
     4function formulaires_completer_commune_gps_charger()
     5{
     6    include_spip('coggps_config');
     7    include_spip('inc/config');
     8    $tab_objet = coggps_config_tab_fichier();
     9    $nom_fichier = $tab_objet['FR']['nom_fichier'];
     10    $emplacement = _DIR_TMP . lire_config('cog/chemin_donnee');
     11    $emplacement .= (substr($emplacement, -1) == "/") ? '' : "/";
     12    $fichier = file_exists($emplacement. $nom_fichier);
     13    return array('fichier' => $fichier, 'repertoire' => $emplacement);
    1314}
    1415
    1516
    16 function formulaires_completer_commune_gps_verifier_dist(){
    17 include_spip('coggps_config');
    18         $erreurs=array();
     17function formulaires_completer_commune_gps_verifier_dist()
     18{
     19    include_spip('coggps_config');
     20    $erreurs = array();
    1921
    20         return $erreurs;
     22    return $erreurs;
    2123}
    2224
    2325// http://doc.spip.org/@inc_editer_mot_dist
    24 function formulaires_completer_commune_gps_traiter_dist(){
    25 include_spip('coggps_config');
     26function formulaires_completer_commune_gps_traiter_dist()
     27{
     28    include_spip('coggps_config');
     29    $erreurs = array();
     30
     31    $message = coggps_complete_commune_gps();
    2632
    2733
    28         $message=coggps_complete_commune_gps($fichier);
    29 
    30 
    31 $retour['editable']=true;
    32 if(count($erreurs)==0){
    33         $retour['message_ok'] = $message;
    34 } else {
    35         $retour['message_erreur'] = 'Problème dans l\'importation du fichier';
    36 }
    37 return $retour;
     34    $retour['editable'] = true;
     35    if (count($erreurs) == 0) {
     36        $retour['message_ok'] = $message;
     37    } else {
     38        $retour['message_erreur'] = 'Problème dans l\'importation du fichier';
     39    }
     40    return $retour;
    3841}
    3942
    4043
     44function coggps_complete_commune_gps()
     45{
     46    include_spip('coggps_config');
     47    include_spip('inc/config');
     48    $tab_colonne = coggps_config_correspondance_colonne();
     49    $tab_colonne = $tab_colonne['FR'];
     50    $colonnes = $tab_colonne['colonnes'];
     51    if (isset($tab_colonne['filtre'])) {
     52        $filtre = $tab_colonne['filtre'];
     53    }
     54    if (isset($tab_colonne['liaison'])) {
     55        $liaison = $tab_colonne['liaison'];
     56    }
     57
     58    $tab_departement = sql_allfetsel('distinct departement', 'spip_cog_communes');
     59    foreach ($tab_departement as &$departement) {
     60        $departement = $departement['departement'];
     61    }
    4162
    4263
    43 function coggps_complete_commune_gps($fichier)
    44 {
    45 include_spip('coggps_config');
    46 include_spip('inc/config');
    47 $tab_colonne =coggps_config_correspondance_colonne();
    48 $tab_colonne=$tab_colonne['FR'];
    49 $colonnes=$tab_colonne['colonnes'];
    50 if(isset($tab_colonne['filtre'])){
    51         $filtre=$tab_colonne['filtre'];
    52         }
    53 if(isset($tab_colonne['liaison'])){
    54         $liaison=$tab_colonne['liaison'];
    55         }
     64    $tab_fichier = array();
     65    $nb = 0;
     66    $tab_objet = coggps_config_tab_fichier();
     67    $nom_fichier = $tab_objet['FR']['nom_fichier'];
     68    $emplacement = _DIR_TMP . lire_config('cog/chemin_donnee');
     69    $emplacement .= (substr($emplacement, -1) == "/") ? '' : "/";
     70    $fichier = $emplacement . $nom_fichier;
     71    $pointeur_fichier = @fopen($fichier, "r");
     72    if ($pointeur_fichier <> 0) {
    5673
    57 $tab_departement=sql_allfetsel('distinct departement','spip_cog_communes');
    58 foreach($tab_departement as &$departement)
    59         {$departement=$departement['departement'];}
     74        while (!feof($pointeur_fichier)) {
     75            $ligne = fgets($pointeur_fichier, 4096);
    6076
    61 
    62 $tab_fichier = array();
    63     $nb = 0;
    64         $dir=_DIR_TMP.lire_config('cog/chemin_donnee');
    65         $fichier=$dir.'geonames_FR.txt';
    66         $pointeur_fichier = @fopen($fichier, "r");
    67         $commune_temp='';
    68         $temp_code="";
    69         if ($pointeur_fichier <> 0) {
    70 
    71                 while (!feof($pointeur_fichier)) {
    72                         $ligne = fgets($pointeur_fichier, 4096);
    73 
    74                         $tab = explode("\t", $ligne);
    75                                 if(isset($filtre))
    76                                         {
    77                                         if(!preg_match('/^'.$filtre['valeur'].'$/',$tab[$filtre['cle']]))
    78                                                 continue;
    79                                         }
    80                                 if(in_array(substr($tab[$liaison],0,2),$tab_departement))
    81                                 {
    82                                 $id_cog_commune = sql_getfetsel('id_cog_commune','spip_cog_communes','departement='.sql_quote(substr($tab[$liaison],0,2)).' and code ='.sql_quote(substr($tab[$liaison],2)));
    83                                 if ($id_cog_commune) {
    84                                         $champs =array();
    85                                         foreach($colonnes as $nom_colonne=>$num_colonne)
    86                                                 {
    87                                                 $champs[''.$nom_colonne]=$tab[$num_colonne];
    88                                                 }
    89                                         $where='id_cog_commune='.$id_cog_commune;
    90                                         sql_updateq('spip_cog_communes', $champs,$where);
    91                                         $nb++;
    92                                         }
    93                                 }
    94                         }
    95                 }
    96 return $nb.' communes viennent d\'être compl&eacute;t&eacute;es';
     77            $tab = explode("\t", $ligne);
     78            if (isset($filtre)) {
     79                if (!preg_match('/^' . $filtre['valeur'] . '$/', $tab[$filtre['cle']])) {
     80                    continue;
     81                }
     82            }
     83            if (in_array(substr($tab[$liaison], 0, 2), $tab_departement)) {
     84                $id_cog_commune = sql_getfetsel('id_cog_commune', 'spip_cog_communes',
     85                    'departement=' . sql_quote(substr($tab[$liaison], 0,
     86                        2)) . ' and code =' . sql_quote(substr($tab[$liaison], 2)));
     87                if ($id_cog_commune) {
     88                    $champs = array();
     89                    foreach ($colonnes as $nom_colonne => $num_colonne) {
     90                        $champs['' . $nom_colonne] = $tab[$num_colonne];
     91                    }
     92                    $where = 'id_cog_commune=' . $id_cog_commune;
     93                    sql_updateq('spip_cog_communes', $champs, $where);
     94                    $nb++;
     95                }
     96            }
     97        }
     98    }
     99    return $nb . ' communes viennent d\'être compl&eacute;t&eacute;es';
    97100}
    98101
    99102
    100 
    101 
    102 
    103 
    104 
    105103?>
  • _plugins_/COG_gps/trunk/formulaires/telecharger_coggps.html

    r65251 r95693  
    88        <ul>
    99        <li class="editer_fichier obligatoire[ (#ENV**{erreurs}|table_valeur{nom}|oui)erreur]">
    10                 <label for="fichier"><:cog:fichiers_a_telecharger:></label>[
     10                <label for="selection_fichier"><:cog:fichiers_a_telecharger:></label>[
    1111                <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{fichier})</span>
    1212                ]<p class='explication'><:coggps:choississez_le_fichier_a_telecharger:></p>
    13                 <select name='objet' [(#ENV{objet,''}|?{'',' '})onfocus="if(!antifocus){this.value='';antifocus=true;}"]>
     13                <select id="selection_fichier" name='objet' [(#ENV{objet,''}|?{'',' '})onfocus="if(!antifocus){this.value='';antifocus=true;}"]>
    1414                <BOUCLE_fichier(POUR){tableau #ENV{tab_objet}}>
    1515                <option value="#CLE"[ (#ENV{objet}|=={#CLE}|oui) selected="selected"]>
  • _plugins_/COG_gps/trunk/formulaires/telecharger_coggps.php

    r68108 r95693  
    11<?php
     2include_spip("formulaires/telecharger_cog");
     3
     4function formulaires_telecharger_coggps_charger()
     5{
     6
     7    include_spip('coggps_config');
     8    $tab_objet = coggps_config_tab_fichier();
     9    foreach ($tab_objet as $key => &$objet) {
     10        if (is_array($objet['fichier'])) {
     11            $objet['fichier'] = implode(',', $objet['fichier']);
     12        }
     13        if (preg_match('`^http`i', $objet['fichier'])) {
     14            $objet = $objet;
     15        } else {
     16            unset($tab_objet[$key]);
     17        }
     18    }
    219
    320
    4 function formulaires_telecharger_coggps_charger(){
    5 
    6 include_spip('coggps_config');
    7 $tab_objet=coggps_config_tab_fichier();
    8 foreach($tab_objet as $key=>&$objet)
    9 {
    10         if(is_array($objet['url_fichier'])){
    11                 $objet['url_fichier']=implode(',',$objet['url_fichier']);
    12         }
    13         if(preg_match('`^http`i',$objet['url_fichier'])){
    14                 $objet=$objet;
    15                 }
    16         else {
    17                 unset($tab_objet[$key]);
    18                 }
    19         }
    20 
    21 
    22 return array('tab_objet'=>$tab_objet);
     21    return array('tab_objet' => $tab_objet);
    2322}
    2423
    2524
     25function formulaires_telecharger_coggps_verifier_dist()
     26{
     27    include_spip('coggps_config');
     28    include_spip('inc/config');
     29    $erreurs = array();
     30    $tab_objet = coggps_config_tab_fichier();
    2631
     32    // login trop court ou existant
     33    if ($objet = _request('objet')) {
     34        if (!isset($tab_objet[$objet])) {
     35            $erreurs['objet'] = _T('coggps:fichier_incorrect');
     36            $erreurs['message_erreur'] .= _T('coggps:fichier_incorrect');
     37        }
     38    } else {
     39        $erreurs['objet'] = _T('coggps:choix_erronne');
    2740
     41    }
    2842
    29 function formulaires_telecharger_coggps_verifier_dist(){
    30         include_spip('coggps_config');
    31         include_spip('inc/config');
    32         $erreurs = array();
    33         $tab_objet=coggps_config_tab_fichier();
    34         $emplacement=_DIR_TMP.lire_config('cog/chemin_donnee');
    35         // login trop court ou existant
    36         if ($objet = _request('objet')) {
    37                 if (!isset($tab_objet[$objet])) {
    38                         $erreurs['objet'] = _T('coggps:fichier_incorrect');
    39                         $erreurs['message_erreur'] .= _T('coggps:fichier_incorrect');
    40                 }
    41         }else{
    42         $erreurs['objet'] = _T('coggps:choix_erronne');
    43 
    44         }
    45 
    46         return $erreurs;
     43    return $erreurs;
    4744}
    4845
    4946// http://doc.spip.org/@inc_editer_mot_dist
    50 function formulaires_telecharger_coggps_traiter_dist(){
    51 include_spip('coggps_config');
    52 include_spip('inc/cog_import');
    53 $tab_objet=coggps_config_tab_fichier();
    54 $objet =_request('objet');
    55 $tab_fichier_telecharger=array();
    56 $tab_fichier=cog_tab_fichier_telecharger($tab_objet[$objet]['url_fichier']);
    57 foreach($tab_fichier as $fichier) {
    58         $nom_fichier_txt="";
    59 if(isset($tab_objet[$objet]['nom_fichier'])){
    60         $nom_fichier_txt=$tab_objet[$objet]['nom_fichier'];
    61        
    62         }
    63         $nom_fichier=coggps_telecharger_fichier_distant($fichier,$nom_fichier_txt);
    64         if($nom_fichier)
    65                 $tab_fichier_telecharger[]=$nom_fichier;
    66 }
     47function formulaires_telecharger_coggps_traiter_dist()
     48{
     49    include_spip('coggps_config');
     50    include_spip('inc/cog_import');
     51    $tab_objet = coggps_config_tab_fichier();
     52    $tab_fichier_telecharger = array();
     53    $objet_nom = "";
     54    $objet = _request('objet');
     55    for ($i = 0; $i < count($objet); $i++) {
    6756
    68 $retour['editable']=true;
    69 if(count($tab_fichier_telecharger)==count($tab_fichier)){
    70         $retour['message_ok'] = 'Le ou les fichier(s) '.$objet.' a bien été télécharger, vous pouvez procéder à son importation.';
    71 } else {
    72         $retour['message_erreur'] = 'Problème dans le téléchargement du fichier';
    73 }
    74 return $retour;
     57       $tab_fichier = cog_tab_fichier_telecharger($tab_objet[$objet]['fichier']);
     58        foreach ($tab_fichier as $fichier) {
     59
     60            $nom_fichier = cog_telecharger_fichier_distant($fichier);
     61            if ($nom_fichier) {
     62                $tab_fichier_telecharger[] = $nom_fichier;
     63            }
     64        }
     65    }
     66
     67
     68    $retour['editable'] = true;
     69    if (count($tab_fichier_telecharger) == count($tab_fichier)) {
     70        $retour['message_ok'] = 'Le ou les fichier(s) ' . $objet . ' a bien été télécharger, vous pouvez procéder à son importation.';
     71    } else {
     72        $retour['message_erreur'] = 'Problème dans le téléchargement du fichier';
     73    }
     74    return $retour;
    7575
    7676}
    7777
    7878
     79function coggps_telecharger_fichier_distant($source, $nom_fichier_txt)
     80{
     81    include_spip('inc/distant');
     82    include_spip('inc/config');
     83    $fichier = copie_locale($source, 'force');
     84    $infos_fichier = pathinfo($source);
     85    $emplacement = _DIR_TMP . lire_config('cog/chemin_donnee');
     86    $nom_fichier = $emplacement . $infos_fichier['filename'] . '.' . $infos_fichier['extension'];
     87    if (empty($nom_fichier_txt)) {
     88        $nom_fichier_txt = $emplacement . $infos_fichier['filename'] . '.txt';
     89    } else {
     90        $nom_fichier_txt = $emplacement . $nom_fichier_txt;
     91    }
     92    rename(_DIR_RACINE . $fichier, $nom_fichier);
     93    $infos_fichier = pathinfo($nom_fichier);
     94    // Si c'est un zip on l'extrait
     95    if ($infos_fichier['extension'] == 'zip') {
    7996
    80 function coggps_telecharger_fichier_distant($source,$nom_fichier_txt)
    81 {
    82 include_spip('inc/distant');
    83 include_spip('inc/config');
    84 $fichier=copie_locale($source);
    85 $infos_fichier=pathinfo($source);
    86 $emplacement=_DIR_TMP.lire_config('cog/chemin_donnee');
    87 $nom_fichier=$emplacement.$infos_fichier['filename'].'.'.$infos_fichier['extension'];
    88 if(empty($nom_fichier_txt)){
    89         $nom_fichier_txt=$emplacement.$infos_fichier['filename'].'.txt';
    90         }
    91 else {
    92         $nom_fichier_txt=$emplacement.$nom_fichier_txt;
    93         }
    94 rename(_DIR_RACINE.$fichier,$nom_fichier);
    95 $infos_fichier=pathinfo($nom_fichier);
    96 // Si c'est un zip on l'extrait
    97 if($infos_fichier['extension']=='zip')
    98 {
     97        include_spip('inc/pclzip');
     98        include_spip('inc/joindre_document');
     99        $archive = new PclZip($nom_fichier);
     100        $archive->extract(_DIR_TMP);
     101        $contenu = joindre_decrire_contenu_zip($archive);
     102        if (isset($contenu[0])) {
     103            foreach ($contenu[0] as $fichier) {
     104                if ($fichier['filename'] != "readme.txt") {
     105                    rename(_DIR_RACINE . $fichier['filename'], $nom_fichier_txt);
     106                }
     107            }
     108        }
     109        unlink($nom_fichier);
     110    }
    99111
    100         include_spip('inc/pclzip');
    101         include_spip('inc/joindre_document');
    102         $archive = new PclZip($nom_fichier);
    103         $archive->extract(_DIR_TMP);
    104         $contenu = joindre_decrire_contenu_zip($archive);
    105         if(isset($contenu[0]))  {
    106                 foreach ($contenu[0] as $fichier) {
    107                         if($fichier['filename']!="readme.txt"){
    108                                 rename(_DIR_RACINE.$fichier['filename'],$nom_fichier_txt);
    109                                 }
    110                 }
    111         }
    112         unlink($nom_fichier);
    113 }
    114 
    115 return $nom_fichier;
     112    return $nom_fichier;
    116113
    117114}
  • _plugins_/COG_gps/trunk/paquet.xml

    r95021 r95693  
    22        prefix="coggps"
    33        categorie="divers"
    4         version="2.0.2"
     4        version="2.1.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.