source: spip-zone/_plugins_/taxonomie/trunk/formulaires/charger_regne.php @ 109602

Last change on this file since 109602 was 109602, checked in by eric@…, 18 months ago

Refactoring complet du plugin suite au merge des tables spip_taxons et spip_especes. Tout n'est pas encore revenu à) l'état de la version 0.2.0

  • Property svn:eol-style set to native
File size: 4.6 KB
RevLine 
[86103]1<?php
[92935]2/**
[93019]3 * Gestion du formulaire de chargement des taxons d'un règne.
[92935]4 *
[108777]5 * @package    SPIP\TAXONOMIE\TAXON
[92935]6 */
[86103]7
8if (!defined("_ECRIRE_INC_VERSION")) return;
9
[92951]10/**
[109292]11 * Chargement des données : le formulaire propose de charger ou vider un des 3 règnes gérés par Taxonomie. Pour le
12 * chargement d'un règne, le formulaire propose de choisir les langues vernaculaires à utiliser parmi celles
13 * supportées par le plugin.
[93019]14 *
[109345]15 * @uses regne_existe()
[93019]16 *
[92951]17 * @return array
[93032]18 *              Tableau des données à charger par le formulaire (affichage). Aucune donnée chargée n'est un
19 *              champ de saisie, celle-ci sont systématiquement remises à zéro.
20 *              - `_actions_regnes`             : (affichage) alias et libellés des actions possibles sur un règne, `charger` et `vider`
21 *              - `_actions_disable`    : (affichage) liste des actions désactivées (`vider` si le règne n`est pas chargé)
22 *              - `_action_defaut`              : (affichage) action sélectionnée par défaut, `charger`
23 *              - `_regnes`                             : (affichage) noms scientifiques et libellés des règnes supportés par le plugin
24 *              - `_langues_regne`              : (affichage) codes de langue SPIP et libellés des langues utilisées (configuration)
25 *              - `_langue_defaut`              : (affichage) la première langue de la liste des langues utilisées
[92951]26 */
[109203]27function formulaires_charger_regne_charger() {
[86103]28        $valeurs = array();
[109300]29        include_spip('inc/taxonomie');
[86103]30
31        // Lister les actions sur les règnes
32        $valeurs['_actions_regne'] = array(
33                'charger' => _T('taxonomie:label_action_charger_regne'),
34                'vider' => _T('taxonomie:label_action_vider_regne')
35        );
36
37        // Acquérir la liste des règnes gérer par le plugin et leur statut de chargement
38        // Désactiver l'action vider si aucun règne n'est chargé
39        $aucun_regne_charge = true;
[109300]40        $regnes = regne_lister();
[86103]41        foreach ($regnes as $_regne) {
[109246]42                $valeurs['_regnes'][$_regne] = '<span class="nom_scientifique_inline">' . $_regne . '</span>, ' . _T("taxonomie:regne_${_regne}");
[109345]43                if (regne_existe($_regne, $meta_regne)) {
[86103]44                        $valeurs['_regnes'][$_regne] .= ' [' . _T("taxonomie:info_regne_charge") . ']';
45                        $aucun_regne_charge = false;
46                }
47        }
48        if ($aucun_regne_charge) {
49                $valeurs['_actions_disable'] = array('vider' => 'oui');
50                $valeurs['_action_defaut'] = 'charger';
51        }
52
[92897]53        // Acquérir la liste des langues utilisables par le plugin et stockées dans la configuration.
54        $langues_utilisees = lire_config('taxonomie/langues_utilisees');
55        foreach ($langues_utilisees as $_code_langue) {
56                $valeurs['_langues_regne'][$_code_langue] = traduire_nom_langue($_code_langue);
57        }
58        $valeurs['_langues_defaut'] = reset($langues_utilisees);
[86103]59
60        return $valeurs;
61}
62
[92951]63/**
[93019]64 * Vérification des saisies : il est indispensable de choisir une action (`vider` ou `charger`) et
65 * un règne.
66 * Un rang minimal est toujours sélectionné. La saisie des langues des noms communs est optionnelle.
67 *
[92951]68 * @return array
[93019]69 *              Tableau des erreurs sur l'action et/ou le règne ou tableau vide si aucune erreur.
[92951]70 */
[109203]71function formulaires_charger_regne_verifier() {
[86103]72        $erreurs = array();
73
74        $obligatoires = array('action_regne', 'regne');
75        foreach ($obligatoires as $_obligatoire) {
76                if (!_request($_obligatoire))
77                        $erreurs[$_obligatoire] = _T('info_obligatoire');
78        }
79
80        return $erreurs;
81}
82
[92951]83/**
[109602]84 * Exécution du formulaire : le règne choisi est soit vidé, soit chargé jusqu'au rang genre
85 * en y intégrant les traductions des noms communs sélectionnées.
[93019]86 *
[109345]87 * @uses regne_existe()
88 * @uses regne_vider()
89 * @uses regne_charger()
[93019]90 *
[92951]91 * @return array
[93019]92 *              Tableau retourné par le formulaire contenant toujours un message de bonne exécution ou
93 *              d'erreur. L'indicateur editable est toujours à vrai.
[92951]94 */
[109203]95function formulaires_charger_regne_traiter() {
[86103]96        $retour = array();
97
98        $action = _request('action_regne');
99        $regne = _request('regne');
[109345]100        $regne_existe = regne_existe($regne, $meta_regne);
[86103]101
102        if ($action == 'vider') {
103                if ($regne_existe) {
[109345]104                        $ok = regne_vider($regne);
[86103]105                        $item = $ok ? 'taxonomie:succes_vider_regne' : 'taxonomie:erreur_vider_regne';
106                }
107                else {
108                        // Inutile de vider un règne non encore chargé
109                        $ok = false;
110                        $item = 'taxonomie:notice_vider_regne_inexistant';
111                }
112        }
113        else {
[87675]114                // La fonction de chargement du règne lance un vidage préalable si le règne
115                // demandé est déjà chargé. Un mécanisme de sauvegarde interne permet aussi de
116                // restituer les modifications manuelles des taxons
117                $langues = _request('langues_regne');
[109345]118                $ok = regne_charger($regne, $langues);
[87675]119                $item = $ok ? 'taxonomie:succes_charger_regne' : 'taxonomie:erreur_charger_regne';
[86103]120        }
121
122        $message = $ok ? 'message_ok' : 'message_erreur';
123        $retour[$message] = _T($item, array('regne' => '<i>' . ucfirst($regne) . '</i>'));
124        $retour['editable'] = true;
125
126        return $retour;
127}
Note: See TracBrowser for help on using the repository browser.