source: spip-zone/_plugins_/isocode/trunk/formulaires/isocode_gerer_table.php @ 100330

Last change on this file since 100330 was 100330, checked in by eric@…, 5 years ago

PSR SPIP.
Les fonctions de lectures par type de source ont été remplacées par une seule fonction générique.

  • Property svn:eol-style set to native
File size: 4.1 KB
Line 
1<?php
2/**
3 * Gestion du formulaire de chargement ou de vidage des tables de codes ISO.
4 *
5 * @package    SPIP\ISOCODE\OBJET
6 */
7if (!defined('_ECRIRE_INC_VERSION')) {
8        return;
9}
10
11/**
12 * Chargement des données : le formulaire propose les actions possibles sur les tables de codes ISO,
13 * à savoir, charger ou vider et la liste des tables regroupées par service.
14 *
15 * @return array
16 *        Tableau des données à charger par le formulaire (affichage). Aucune donnée chargée n'est un
17 *        champ de saisie, celle-ci sont systématiquement remises à zéro.
18 *        - `_actions_tables`        : (affichage) alias et libellés des actions possibles sur une table, `charger` et
19 *        `vider`
20 *        - `_actions_disable`    : (affichage) liste des actions désactivées (`vider` si aucune table n`est chargée)
21 *        - `_action_defaut`        : (affichage) action sélectionnée par défaut, `charger`
22 *        - `_tables`                : (affichage) noms des tables sans le préfixe `spip_`
23 */
24function formulaires_isocode_gerer_table_charger() {
25        $valeurs = array();
26        include_spip('isocode_fonctions');
27
28        // Lister les actions sur les tables
29        $valeurs['_actions_tables'] = array(
30                'charger' => _T('isocode:label_action_charger_table'),
31                'vider'   => _T('isocode:label_action_vider_table')
32        );
33
34        // Acquérir la liste des tables et leur statut de chargement
35        $tables = isocode_lister_tables();
36        $aucune_table_charge = true;
37        if ($tables) {
38                foreach ($tables as $_table) {
39                        $valeurs['_tables'][$_table] = "<em>${_table}</em>, " . _T("isocode:label_table_${_table}");
40                        if (isocode_table_chargee($_table, $meta_regne)) {
41                                $valeurs['_tables'][$_table] .= ' - [' . _T('isocode:info_table_chargee') . ']';
42                                $aucune_table_charge = false;
43                        }
44                }
45        }
46
47        // Désactiver l'action vider si aucun table n'est chargée
48        if ($aucune_table_charge) {
49                $valeurs['_actions_disable'] = array('vider' => 'oui');
50                $valeurs['_action_defaut'] = 'charger';
51        }
52
53        return $valeurs;
54}
55
56/**
57 * Vérification des saisies : il est indispensable de choisir une action (`vider` ou `charger`) et
58 * une table.
59 *
60 * @return array
61 *        Tableau des erreurs sur l'action et/ou la table ou tableau vide si aucune erreur.
62 */
63function formulaires_isocode_gerer_table_verifier() {
64        $erreurs = array();
65
66        $obligatoires = array('action_table', 'tables');
67        foreach ($obligatoires as $_obligatoire) {
68                if (!_request($_obligatoire)) {
69                        $erreurs[$_obligatoire] = _T('info_obligatoire');
70                }
71        }
72
73        return $erreurs;
74}
75
76/**
77 * Exécution du formulaire : les tables choisies sont soit vidées, soit chargées.
78 *
79 * @uses isocode_charger_tables()
80 * @uses isocode_decharger_tables()
81 *
82 * @return array
83 *        Tableau retourné par le formulaire contenant toujours un message de bonne exécution ou
84 *        d'erreur. L'indicateur editable est toujours à vrai.
85 */
86function formulaires_isocode_gerer_table_traiter() {
87
88        $retour = array();
89
90        // Acquisition des saisies: comme elles sont obligatoires, il existe toujours une action et une
91        // table.
92        $action = _request('action_table');
93        $tables = _request('tables');
94
95        // Pour chaque table, on génère l'action demandée
96        if ($action == 'vider') {
97                list($action_ok, $tables_nok) = isocode_decharger_tables($tables);
98                $message = $action_ok
99                        ? _T('isocode:succes_vider_table')
100                        : _T('isocode:erreur_vider_table', array('tables' => implode(', ', $tables_nok)));
101        } else {
102                // La fonction de chargement de la table lance un vidage préalable si la table
103                // demandé est déjà chargée.
104                list($action_ok, $tables_nok, $tables_inchangees) = isocode_charger_tables($tables);
105                if ($action_ok) {
106                        $message = _T('isocode:succes_charger_table');
107                } else {
108                        $message = '';
109                        if ($tables_inchangees) {
110                                $message .= _T('isocode:notice_charger_table', array('tables' => implode(', ', $tables_inchangees)));
111                        }
112                        if ($tables_nok) {
113                                $message .= $message ? '<br/>' : '';
114                                $message .= _T('isocode:erreur_charger_table', array('tables' => implode(', ', $tables_nok)));
115                        }
116                }
117        }
118
119        $type_message = $action_ok ? 'message_ok' : 'message_erreur';
120        $retour[$type_message] = $message;
121        $retour['editable'] = true;
122
123        return $retour;
124}
Note: See TracBrowser for help on using the repository browser.