source: spip-zone/_core_/plugins/svp/formulaires/admin_plugin.php @ 64676

Last change on this file since 64676 was 64676, checked in by marcimat@…, 7 years ago

Du PHP Doc sur une partie de SVP

File size: 6.0 KB
Line 
1<?php
2
3/**
4 * Gestion du formulaire de gestion des plugins
5 *
6 * @plugin SVP pour SPIP
7 * @license GPL
8 * @package Plugins\SVP\Formulaires
9 */
10 
11if (!defined("_ECRIRE_INC_VERSION")) return;
12
13/**
14 * Chargement du formulaire de gestion des plugins
15 *
16 * @param string $voir
17 *     Statut des plugins que l'on souhaite voir : actif, inactif, tous
18 * @param string $verrouille
19 *     Types de plugins que l'on souhaite voir :
20 *     - 'non' : les plugins utilisateurs
21 *     - 'oui' : les plugins verrouillés (plugins-dist)
22 *     - 'tous' : les deux !
23 * @param string|int $id_paquet
24 *     Identifiant du paquet dont on veut obtenir une description complète
25 *     lors de l'affichage du formulaire
26 * @param string $redirect
27 *     URL de redirection après les traitements
28 * @return array
29 *     Environnement du formulaire
30**/
31function formulaires_admin_plugin_charger_dist($voir='actif', $verrouille='non', $id_paquet='',$redirect=''){
32        $valeurs = array();
33
34        // actualiser la liste des paquets locaux systematiquement
35        include_spip('inc/svp_depoter_local');
36        // sans forcer tout le recalcul en base, mais en récupérant les erreurs XML
37        $valeurs['erreurs_xml'] = array();
38        svp_actualiser_paquets_locaux(false, $valeurs['erreurs_xml']);
39
40        $valeurs['actif'] = 'oui';
41        if ($voir == 'inactif')
42                $valeurs['actif'] = 'non';
43        if ($voir == 'tous')
44                $valeurs['actif'] = '';
45
46        $valeurs['constante'] = array('_DIR_PLUGINS','_DIR_PLUGINS_SUPPL');
47        if ($verrouille == 'oui')
48                $valeurs['constante'] = array('_DIR_PLUGINS_DIST');
49        if ($verrouille == 'tous')
50                $valeurs['constante'] = array();
51
52        $valeurs['verrouille'] = $verrouille;
53        $valeurs['id_paquet'] = $id_paquet;
54        $valeurs['actions'] = array();
55        $valeurs['ids_paquet'] = _request('ids_paquet');
56        $valeurs['_todo'] = _request('_todo');
57
58        return $valeurs;
59}
60
61/**
62 * Vérifications du formulaire de gestion des plugins
63 *
64 * Appelle le décideur qui détermine la liste des actions à faire et si celles-ci
65 * peuvent être faites (dépendances connues). Une erreur sera levé dans le
66 * cas contraire.
67 *
68 * Si toutes les actions peuvent être faites, une demande de confirmation
69 * est envoyée (dans une erreur spéciale), présentant alors toutes les
70 * actions qui seront réalisées (celle demandée + celles à faire par voie
71 * de conséquence.
72 *
73 * Si on reçoit une demande de confirmation, on sort sans lever d'erreur !
74 *
75 * @param string $voir
76 *     Statut des plugins que l'on souhaite voir : actif, inactif, tous
77 * @param string $verrouille
78 *     Types de plugins que l'on souhaite voir :
79 *     - 'non' : les plugins utilisateurs
80 *     - 'oui' : les plugins verrouillés (plugins-dist)
81 *     - 'tous' : les deux !
82 * @param string|int $id_paquet
83 *     Identifiant du paquet dont on veut obtenir une description complète
84 *     lors de l'affichage du formulaire
85 * @param string $redirect
86 *     URL de redirection après les traitements
87 * @return array
88 *     Tableau des erreurs
89**/
90function formulaires_admin_plugin_verifier_dist($voir='actif', $verrouille='non', $id_paquet='',$redirect=''){
91
92        $erreurs = array();
93
94        if (_request('annuler_actions')) {
95                // Requete : Annulation des actions d'installation en cours
96                // -- On vide la liste d'actions en cours
97                set_request('_todo', '');
98                // -- vider les paquets coches s'il y en a
99                set_request('ids_paquet', array());
100        } elseif (_request('valider_actions')) {
101                // ...
102        } else {
103                $a_actionner = array();
104               
105                // actions globales...
106                if ($action_globale = _request('action_globale') AND _request('appliquer')) {
107                        $ids_paquet = _request('ids_paquet');
108                        if (!is_array($ids_paquet)) {
109                                $erreurs['message_erreur'] = _T('svp:message_erreur_aucun_plugin_selectionne');
110                        } else {
111                                foreach ($ids_paquet as $i) {
112                                        $a_actionner[$i] = $action_globale;
113                                }
114                        }
115                // action unitaire
116                } else {
117                        $actions = _request('actions');
118                        // $actions[type][id] = Texte
119                        // -> $a_actionner[id] = type
120                        foreach ($actions as $action => $p) {
121                                foreach ($p as $i => $null) {
122                                        $a_actionner[$i] = $action;
123                                }
124                        }
125                }
126                // lancer les verifications
127                if (!$a_actionner)
128                        $erreurs['message_erreur'] = _T('svp:message_erreur_aucun_plugin_selectionne');
129                else {
130                       
131                        // On fait appel au decideur pour determiner la liste exacte des commandes apres
132                        // verification des dependances
133                        include_spip('inc/svp_decider');
134                        svp_decider_verifier_actions_demandees($a_actionner, $erreurs);
135                }
136        }
137       
138        return $erreurs;
139}
140
141/**
142 * Traitement du formulaire de gestion des plugins
143 *
144 * Si une liste d'action est validée, on redirige de formulaire sur
145 * l'action 'actionner' qui les traitera une par une.
146 *
147 * @param string $voir
148 *     Statut des plugins que l'on souhaite voir : actif, inactif, tous
149 * @param string $verrouille
150 *     Types de plugins que l'on souhaite voir :
151 *     - 'non' : les plugins utilisateurs
152 *     - 'oui' : les plugins verrouillés (plugins-dist)
153 *     - 'tous' : les deux !
154 * @param string|int $id_paquet
155 *     Identifiant du paquet dont on veut obtenir une description complète
156 *     lors de l'affichage du formulaire
157 * @param string $redirect
158 *     URL de redirection après les traitements
159 * @return array
160 *     Retours du traitement
161**/
162function formulaires_admin_plugin_traiter_dist($voir='actif', $verrouille='non', $id_paquet='',$redirect=''){
163       
164        $retour = array();
165
166        if (_request('valider_actions')) {
167                #refuser_traiter_formulaire_ajax();
168                // Ajout de la liste des actions à l'actionneur
169                // c'est lui qui va effectuer rellement les actions
170                // lors de l'appel de action/actionner
171                $actions = unserialize(_request('_todo'));
172                include_spip('inc/svp_actionner');
173                svp_actionner_traiter_actions_demandees($actions, $retour,$redirect);
174        }
175
176        $retour['editable'] = true;
177        return $retour;
178}
179
180/**
181 * Crée une valeur d'action pour l'attribut 'name' d'une saisie de formulaire
182 *
183 * @example
184 *     [(#ID_PAQUET|svp_nom_action{on})]
185 *     écrit : actions[on][24]
186 * @param int $id_paquet
187 *     Identifiant du paquet
188 * @param string $action
189 *     Une action possible (on, off, stop, up, on, upon, kill)
190**/
191function filtre_svp_nom_action($id_paquet, $action) {
192        return "actions[$action][$id_paquet]";
193}
194
195?>
Note: See TracBrowser for help on using the repository browser.