[SPIP] +spip v3.0.17
[lhc/web/clavette_www.git] / www / plugins-dist / svp / formulaires / admin_plugin.php
1 <?php
2
3 /**
4 * Gestion du formulaire de gestion des plugins
5 *
6 * @plugin SVP pour SPIP
7 * @license GPL
8 * @package SPIP\SVP\Formulaires
9 */
10
11 if (!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 **/
31 function 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 **/
90 function 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 **/
162 function 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 **/
191 function filtre_svp_nom_action($id_paquet, $action) {
192 return "actions[$action][$id_paquet]";
193 }
194
195 ?>