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

Last change on this file since 109602 was 109602, checked in by eric@…, 17 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
Line 
1<?php
2/**
3 * Gestion du formulaire de chargement des taxons d'un règne.
4 *
5 * @package    SPIP\TAXONOMIE\TAXON
6 */
7
8if (!defined("_ECRIRE_INC_VERSION")) return;
9
10/**
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.
14 *
15 * @uses regne_existe()
16 *
17 * @return array
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
26 */
27function formulaires_charger_regne_charger() {
28        $valeurs = array();
29        include_spip('inc/taxonomie');
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;
40        $regnes = regne_lister();
41        foreach ($regnes as $_regne) {
42                $valeurs['_regnes'][$_regne] = '<span class="nom_scientifique_inline">' . $_regne . '</span>, ' . _T("taxonomie:regne_${_regne}");
43                if (regne_existe($_regne, $meta_regne)) {
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
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);
59
60        return $valeurs;
61}
62
63/**
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 *
68 * @return array
69 *              Tableau des erreurs sur l'action et/ou le règne ou tableau vide si aucune erreur.
70 */
71function formulaires_charger_regne_verifier() {
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
83/**
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.
86 *
87 * @uses regne_existe()
88 * @uses regne_vider()
89 * @uses regne_charger()
90 *
91 * @return array
92 *              Tableau retourné par le formulaire contenant toujours un message de bonne exécution ou
93 *              d'erreur. L'indicateur editable est toujours à vrai.
94 */
95function formulaires_charger_regne_traiter() {
96        $retour = array();
97
98        $action = _request('action_regne');
99        $regne = _request('regne');
100        $regne_existe = regne_existe($regne, $meta_regne);
101
102        if ($action == 'vider') {
103                if ($regne_existe) {
104                        $ok = regne_vider($regne);
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 {
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');
118                $ok = regne_charger($regne, $langues);
119                $item = $ok ? 'taxonomie:succes_charger_regne' : 'taxonomie:erreur_charger_regne';
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.