Changeset 113401 in spip-zone


Ignore:
Timestamp:
Jan 12, 2019, 7:32:04 PM (6 days ago)
Author:
root
Message:

Mise au point de l'export IEConfig qui permet de sauvegarder outre la configuration du plugin :

  • les taxons du règne au genre, importés via les fichiers ITIS puis édités manuellement;
  • les taxons ascendants d'une espèce (entre le genre et l'espèce non compris), non inclus dans un fichier ITIS et insérés lors de la création d'une espèce;
  • les taxons de type espèce et descendants créés manuellement.
Location:
_plugins_/taxonomie/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/taxonomie/trunk/lang/taxonomie_fr.php

    r113389 r113401  
    5757
    5858        // I
     59        'ieconfig_taxonomie_export_explication' => 'Exporte la configuration du plugin et les données de production concernant les taxons du règne au genre édités après insertion et les taxons de type espèce et descendants créés manuellement.',
     60        'ieconfig_taxonomie_export_option' => 'Inclure les données de Taxonomie dans l’export ?',
    5961        'info_boite_taxonomie_configuration' => 'Cette page permet de configurer les paramètres de base du plugin comme la liste des langues utilisables pour nommer ou décrire les taxons.',
    6062        'info_boite_regnes' => 'Cette page permet de charger, mettre à jour ou vider les taxons du règne au genre (rangs principaux, secondaires et intercalaires) importés à partir des rapports hiérarchiques extraits de la base ITIS. Ces taxons peuvent être rechargés sans danger pour les autres taxons et pour les modifications éventuellement effectuées.',
  • _plugins_/taxonomie/trunk/taxonomie_ieconfig.php

    r113387 r113401  
    2626                                'saisie' => 'fieldset',
    2727                                'options' => array(
    28                                         'label' => '<:noizetier:noizetier:>',
    29                                         'icone' => 'noizetier-24.png',
     28                                        'nom'   => 'taxonomie_fieldset',
     29                                        'label' => '<:taxonomie:titre_page_taxonomie:>',
     30                                        'icone' => 'taxon-16.png',
    3031                                ),
    3132                                'saisies' => array(
     
    3334                                                'saisie' => 'oui_non',
    3435                                                'options' => array(
    35                                                         'nom' => 'noizetier_export_option',
    36                                                         'label' => '<:noizetier:ieconfig_noizetier_export_option:>',
    37                                                         'explication' => '<:noizetier:ieconfig_noizetier_export_explication:>',
     36                                                        'nom' => 'taxonomie_export_option',
     37                                                        'label' => '<:taxonomie:ieconfig_taxonomie_export_option:>',
     38                                                        'explication' => '<:taxonomie:ieconfig_taxonomie_export_explication:>',
    3839                                                        'defaut' => '',
    3940                                                ),
     
    4445                $flux['data'] = array_merge($flux['data'], $saisies);
    4546
    46         } elseif (($action == 'export') and (_request('noizetier_export_option') == 'on')) {
     47        } elseif (($action == 'export') and (_request('taxonomie_export_option') == 'on')) {
    4748                // Générer le tableau d'export
    48                 $flux['data']['noizetier'] = noizetier_ieconfig_exporter();
     49                $flux['data']['taxonomie'] = taxonomie_ieconfig_exporter();
    4950
    5051        } elseif (($action == 'form_import') and isset($flux['args']['config']['noizetier'])) {
     
    241242
    242243/**
    243  * Retourne le tableau d'export du plugin Taxonomie contenant toujours sa configuration et les taxons du règne au genre
    244  * édités après insertion et les taxons de type espèce et descendants créés manuellement.
     244 * Retourne le tableau d'export du plugin Taxonomie contenant toujours sa configuration et les taxons nécessitant d'être
     245 * sauvegardés car non créés via les fichiers ITIS.
     246 * Les taxons concernés sont :
     247 * - les taxons du règne au genre, importés via les fichiers ITIS puis édités manuellement;
     248 * - les taxons ascendants d'une espèce (entre le genre et l'espèce non compris), non inclus dans un fichier ITIS
     249 *   et insérés lors de la création d'une espèce;
     250 * - les taxons de type espèce et descendants créés manuellement.
    245251 *
    246252 * @return array
     
    266272        // Les metas de chargement de chaque règne ne sont pas exportées mais on identifie quand même la liste des règnes
    267273        // insérés dans la base. Les taxons seront ensuite exportés par règne pour permettre un import plus ciblé.
    268         $export['contenu']['regnes'] = array();
     274        include_spip('taxonomie_fonctions');
     275        include_spip('inc/taxonomie');
     276        $export['regnes'] = array();
    269277        $regnes = regne_lister();
    270278        foreach ($regnes as $_regne) {
    271279                if (regne_existe($_regne, $meta_regne)) {
    272                         $export['contenu']['regnes'][] = $_regne;
    273                 }
    274         }
    275 
    276         // Exportation de la table spip_taxons qui contient les taxons du règne au genre créés automatiquement mais pouvant
    277         // être édités et les taxons espèces et descendants qui sont créés manuellement.
     280                        $export['regnes'][] = $_regne;
     281                }
     282        }
     283        $export['contenu']['regnes'] = $export['regnes'] ? 'on' : '';
     284
     285        // Exportation de la table spip_taxons des taxons nécessitant d'être sauvegardés.
    278286        if ($export['contenu']['regnes']) {
     287                // Récupération de la description de la table spip_taxons afin de connaitre la liste des colonnes.
     288                include_spip('base/objets');
    279289                $from ='spip_taxons';
     290                $description_table = lister_tables_objets_sql($from);
     291                $select = array_diff(array_keys($description_table['field']), array('id_taxon', 'maj'));
    280292
    281293                // Pour faciliter l'import et aussi mieux le cibler les taxons exportés sont rangés par règne (index au nom
    282                 // du règne). Ensuite, on sépare aussi les taxons édités (index taxons) et les espèces créées manuellement
    283                 // (index espèces).
    284                 $select = array('page', 'blocs_exclus');
    285                 $where = array('est_virtuelle=' . sql_quote('non'));
    286                 $export['pages_explicites'] = sql_allfetsel($select, $from, $where);
    287                 $export['contenu']['pages_explicites'] = $export['pages_explicites'] ? 'on' : '';
    288 
    289                 // -- pour les compositions virtuelles il faut tout sauvegarder (sauf le timestamp 'maj') car elles sont créées
    290                 //    de zéro.
    291                 $trouver_table = charger_fonction('trouver_table', 'base');
    292                 $table = $trouver_table($from);
    293                 $select = array_diff(array_keys($table['field']), array('maj'));
    294                 $where = array('est_virtuelle=' . sql_quote('oui'));
    295                 $export['compositions_virtuelles'] = sql_allfetsel($select, $from, $where);
    296                 $export['contenu']['compositions_virtuelles'] = $export['compositions_virtuelles'] ? 'on' : '';
    297 
    298                 // Exportation de la tables spip_noisettes qui contient les noisettes associées aux pages explicites,
    299                 // aux compositions virtuelles et à certains objets précis.
    300                 // -- on fait en sorte que les noisettes conteneur soient les premiers index suivies des noisettes non conteneur.
    301                 //    Pour chaque groupe, on sous-classe par profondeur de 0 à n. On utilise donc l'API SQL et pas celle de N-Core.
    302                 // -- on supprime l'id_noisette de chaque noisette car il sera recréé lors de l'import.
    303                 $where = array('plugin=' . sql_quote('noizetier'));
    304                 $order_by = array('est_conteneur DESC', 'profondeur ASC');
    305                 $noisettes = sql_allfetsel('*', 'spip_noisettes', $where, array(), $order_by);
    306                 // -- le array_merge a changé les index numériques de 0 à n, il faut remettre les id de noisette.
    307                 $export['noisettes'] = array_column($noisettes, null, 'id_noisette');
    308                 foreach($export['noisettes'] as $_id => $_noisette) {
    309                         unset($export['noisettes'][$_id]['id_noisette']);
    310                 }
    311                 $export['contenu']['noisettes'] = $export['noisettes'] ? 'on' : '';
     294                // du règne). Ensuite, on sépare aussi les taxons édités (index [taxons][edites]), les taxons créés en tant
     295                // qu'ascendant d'une espèce (index [taxons][crees]) et les espèces créées manuellement (index [especes]).
     296                foreach ($export['regnes'] as $_regne) {
     297                        // Extraction des taxons du règne au genre édités manuellement par les utilisateurs ou créés lors d'un
     298                        // ajout d'espèce.
     299                        // On sauvegarde les champs éditables uniquement des édités et tous les champs pour les autres.
     300                        $export[$_regne]['taxons'] = taxon_preserver($_regne);
     301                        $export['contenu']['taxons']['edites'][$_regne] = $export[$_regne]['taxons']['edites'] ? 'on' : '';
     302                        $export['contenu']['taxons']['crees'][$_regne] = $export[$_regne]['taxons']['crees'] ? 'on' : '';
     303
     304                        // Extraction des espèces et descendants.
     305                        $export[$_regne]['especes'] = array();
     306                        $where = array(
     307                                'regne=' . sql_quote($_regne),
     308                                'importe=' . sql_quote('non'),
     309                                'espece=' . sql_quote('oui')
     310                        );
     311                        $export[$_regne]['especes'] = sql_allfetsel($select, $from, $where);
     312                        $export['contenu']['especes'][$_regne] = $export[$_regne]['especes'] ? 'on' : '';
     313                }
    312314        }
    313315
Note: See TracChangeset for help on using the changeset viewer.