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

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

Transfert de certaines fonctions d'API dans inc/taxonomie car elles ne servent jamais de filtres.

  • Property svn:eol-style set to native
File size: 5.0 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
29        // Initialisation du tableau des variables fournies au formulaire.
30        $valeurs = array();
31
32        // Lister les actions sur les règnes
33        $valeurs['_actions_regne'] = array(
34                'charger' => _T('taxonomie:label_action_charger_regne'),
35                'vider' => _T('taxonomie:label_action_vider_regne')
36        );
37
38        // Acquérir la liste des règnes gérer par le plugin et leur statut de chargement
39        // Désactiver l'action vider si aucun règne n'est chargé
40        include_spip('inc/taxonomie');
41        $aucun_regne_charge = true;
42        $regnes = regne_lister();
43        foreach ($regnes as $_regne) {
44                $valeurs['_regnes'][$_regne] = '<span class="nom_scientifique_inline">' . $_regne . '</span>, ' . _T("taxonomie:regne_${_regne}");
45                if (regne_existe($_regne, $meta_regne)) {
46                        $valeurs['_regnes'][$_regne] .= ' [' . _T("taxonomie:info_regne_charge") . ']';
47                        $aucun_regne_charge = false;
48                }
49        }
50        if ($aucun_regne_charge) {
51                $valeurs['_actions_disable'] = array('vider' => 'oui');
52                $valeurs['_action_defaut'] = 'charger';
53        }
54
55        // Acquérir la liste des langues utilisables par le plugin et stockées dans la configuration.
56        include_spip('inc/lang');
57        $langues_utilisees = lire_config('taxonomie/langues_utilisees');
58        foreach ($langues_utilisees as $_code_langue) {
59                $valeurs['_langues_regne'][$_code_langue] = traduire_nom_langue($_code_langue);
60        }
61        $valeurs['_langues_defaut'] = reset($langues_utilisees);
62
63        return $valeurs;
64}
65
66/**
67 * Vérification des saisies : il est indispensable de choisir une action (`vider` ou `charger`) et
68 * un règne.
69 * Un rang minimal est toujours sélectionné. La saisie des langues des noms communs est optionnelle.
70 *
71 * @return array
72 *              Tableau des erreurs sur l'action et/ou le règne ou tableau vide si aucune erreur.
73 */
74function formulaires_charger_regne_verifier() {
75
76        // Initialisation des messages d'erreur
77        $erreurs = array();
78
79        $obligatoires = array('action_regne', 'regne');
80        foreach ($obligatoires as $_obligatoire) {
81                if (!_request($_obligatoire))
82                        $erreurs[$_obligatoire] = _T('info_obligatoire');
83        }
84
85        return $erreurs;
86}
87
88/**
89 * Exécution du formulaire : le règne choisi est soit vidé, soit chargé jusqu'au rang genre
90 * en y intégrant les traductions des noms communs sélectionnées.
91 *
92 * @uses regne_existe()
93 * @uses regne_vider()
94 * @uses regne_charger()
95 *
96 * @return array
97 *              Tableau retourné par le formulaire contenant toujours un message de bonne exécution ou
98 *              d'erreur. L'indicateur editable est toujours à vrai.
99 */
100function formulaires_charger_regne_traiter() {
101
102        // Initialisation du retour de traitement du formulaire (message, editable).
103        $retour = array();
104
105        // Lecture de l'action et règne concerné
106        $action = _request('action_regne');
107        $regne = _request('regne');
108
109        // Vérifier que le règne existe (cad a déjà été chargé).
110        include_spip('inc/taxonomie');
111        $regne_existe = regne_existe($regne, $meta_regne);
112
113        if ($action == 'vider') {
114                if ($regne_existe) {
115                        $ok = regne_vider($regne);
116                        $item = $ok ? 'taxonomie:succes_vider_regne' : 'taxonomie:erreur_vider_regne';
117                }
118                else {
119                        // Inutile de vider un règne non encore chargé
120                        $ok = false;
121                        $item = 'taxonomie:notice_vider_regne_inexistant';
122                }
123        }
124        else {
125                // La fonction de chargement du règne lance un vidage préalable si le règne
126                // demandé est déjà chargé. Un mécanisme de sauvegarde interne permet aussi de
127                // restituer les modifications manuelles des taxons
128                $langues = _request('langues_regne');
129                $ok = regne_charger($regne, $langues);
130                $item = $ok ? 'taxonomie:succes_charger_regne' : 'taxonomie:erreur_charger_regne';
131        }
132
133        $message = $ok ? 'message_ok' : 'message_erreur';
134        $retour[$message] = _T($item, array('regne' => '<i>' . ucfirst($regne) . '</i>'));
135        $retour['editable'] = true;
136
137        return $retour;
138}
Note: See TracBrowser for help on using the repository browser.