[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins-dist / svp / formulaires / charger_plugin.php
1 <?php
2
3 /**
4 * Gestion du formulaire de recherche et téléchargement de plugins
5 * distants connus dans un dépot
6 *
7 * @plugin SVP pour SPIP
8 * @license GPL
9 * @package SPIP\SVP\Formulaires
10 */
11
12 if (!defined("_ECRIRE_INC_VERSION")) {
13 return;
14 }
15
16 // pour svp_presenter_actions_realisees()
17 include_spip('exec/admin_plugin');
18
19 /**
20 * Chargement du formulaire de recherche et téléchargement de plugins
21 *
22 * @return array
23 * Environnement du formulaire
24 **/
25 function formulaires_charger_plugin_charger_dist() {
26 return array(
27 'phrase' => _request('phrase'),
28 'categorie' => _request('categorie'),
29 'etat' => _request('etat'),
30 'depot' => _request('depot'),
31 'doublon' => _request('doublon'),
32 'exclusion' => _request('exclusion'),
33 'ids_paquet' => _request('ids_paquet'),
34 '_todo' => _request('_todo'),
35 '_libelles_actions' => _request('_libelles_actions'),
36 // on présente les actions réalisées ici au retour, lorsqu'il n'y avait eu que des Téléchargement demandés (sans activation)
37 '_actions_realisees' => (_request('todo') or _AJAX) ? '' : svp_presenter_actions_realisees()
38 );
39 }
40
41 /**
42 * Vérification du formulaire de recherche et téléchargement de plugins
43 *
44 * Appelle le décideur qui détermine la liste des actions à faire et si celles-ci
45 * peuvent être faites (dépendances connues). Une erreur sera levé dans le
46 * cas contraire.
47 *
48 * Si toutes les actions peuvent être faites, une demande de confirmation
49 * est envoyée (dans une erreur spéciale), présentant alors toutes les
50 * actions qui seront réalisées (celle demandée + celles à faire par voie
51 * de conséquence.
52 *
53 * Si on reçoit une demande de confirmation, on sort sans lever d'erreur !
54 *
55 * @uses svp_decider_verifier_actions_demandees()
56 * @return array
57 * Tableau des erreurs
58 **/
59 function formulaires_charger_plugin_verifier_dist() {
60
61 $erreurs = array();
62 $a_installer = array();
63
64 if (_request('annuler_actions')) {
65 // Requete : Annulation des actions d'installation en cours
66 // -- On vide la liste d'actions en cours
67 set_request('_todo', '');
68
69 } elseif (_request('valider_actions')) {
70
71
72 } elseif (_request('rechercher')) {
73 // annuler les selections si nouvelle recherche
74 set_request('ids_paquet', array());
75 } else {
76 // Requete : Installation d'un ou de plusieurs plugins
77 // -- On construit le tableau des ids de paquets conformement a l'interface du decideur
78 if (_request('installer') or _request('telecharger')) {
79 $action = _request('installer') ? 'geton' : 'get';
80 // L'utilisateur a demande une installation multiple de paquets
81 // -- on verifie la liste des id_paquets uniquement
82 if ($id_paquets = _request('ids_paquet')) {
83 foreach ($id_paquets as $_id_paquet) {
84 $a_installer[$_id_paquet] = $action;
85 }
86 }
87 } else {
88 // L'utilisateur a demande l'installation d'un paquet en cliquant sur le bouton en regard
89 // du resume du plugin -> installer_paquet
90 if ($install = _request('installer_paquet')) {
91 if ($id_paquet = key($install)) {
92 $a_installer[$id_paquet] = 'geton';
93 }
94 }
95 }
96
97 if (!$a_installer) {
98 $erreurs['message_erreur'] = _T('svp:message_nok_aucun_plugin_selectionne');
99 } else {
100 // On fait appel au decideur pour determiner la liste exacte des commandes apres
101 // verification des dependances
102 include_spip('inc/svp_decider');
103 svp_decider_verifier_actions_demandees($a_installer, $erreurs);
104 }
105 }
106
107 return $erreurs;
108 }
109
110 /**
111 * Traitement du formulaire de recherche et téléchargement de plugins
112 *
113 * Si une liste d'action est validée, on redirige de formulaire sur
114 * l'action 'actionner' qui les traitera une par une.
115 *
116 * @return array
117 * Retours du traitement
118 **/
119 function formulaires_charger_plugin_traiter_dist() {
120
121 $retour = array();
122
123 if (_request('rechercher') or _request('annuler_actions')) {
124
125 } elseif (_request('valider_actions')) {
126 #refuser_traiter_formulaire_ajax();
127 // Ajout de la liste des actions à l'actionneur
128 // c'est lui qui va effectuer rellement les actions
129 // lors de l'appel de action/actionner
130 $actions = unserialize(_request('_todo'));
131 include_spip('inc/svp_actionner');
132 // si toutes les actions sont des téléchargements (pas d'activation), on reste sur cette page
133 $redirect = null;
134 if (!array_diff($actions, array('get'))) {
135 $redirect = self();
136 }
137 svp_actionner_traiter_actions_demandees($actions, $retour, $redirect);
138 }
139
140 $retour['editable'] = true;
141
142 return $retour;
143 }