$a_actionner[id] = type foreach ($actions as $action => $p) { foreach ($p as $i => $null) { $a_actionner[$i] = $action; } } } // lancer les verifications if (!$a_actionner) { $erreurs['message_erreur'] = _T('svp:message_erreur_aucun_plugin_selectionne'); } else { // On fait appel au decideur pour determiner la liste exacte des commandes apres // verification des dependances include_spip('inc/svp_decider'); svp_decider_verifier_actions_demandees($a_actionner, $erreurs); $todo = _request('_todo') ? unserialize(_request('_todo')) : array(); $actions = _request('_decideur_actions') ? unserialize(_request('_decideur_actions')) : array(); // si c'est une action simple (hors suppression) sans rien a faire de plus que demande, on y go direct if (in_array('stop', $todo) or in_array('kill', $todo)) { if (in_array('stop', $todo)) { $notices = array(); $notices['decideur_warning'] = _T('svp:confirmer_desinstaller'); set_request('_notices', $notices); } } elseif ( count($todo) == count($a_actionner) // et on n'a pas plus d'actions que ce qu'on avait demandé explicitement and !isset($erreurs['decideur_erreurs']) and (!isset($erreurs['decideur_propositions']) or !count($actions['decideur_propositions'])) ) { set_request('valider_actions', true); // on fake la validation, non mais ho ! } } } if (count($erreurs) and !isset($erreurs['message_erreur'])) { $erreurs['message_erreur'] = ''; } return $erreurs; } /** * Traitement du formulaire de gestion des plugins * * Si une liste d'action est validée, on redirige de formulaire sur * l'action 'actionner' qui les traitera une par une. * * @uses svp_actionner_traiter_actions_demandees() * * @param string $voir * Statut des plugins que l'on souhaite voir : actif, inactif, tous * @param string $verrouille * Types de plugins que l'on souhaite voir : * - 'non' : les plugins utilisateurs * - 'oui' : les plugins verrouillés (plugins-dist) * - 'tous' : les deux ! * @param string|int $id_paquet * Identifiant du paquet dont on veut obtenir une description complète * lors de l'affichage du formulaire * @param string $redirect * URL de redirection après les traitements * @return array * Retours du traitement **/ function formulaires_admin_plugin_traiter_dist($voir = 'actif', $verrouille = 'non', $id_paquet = '', $redirect = '') { $retour = array(); if (_request('valider_actions')) { refuser_traiter_formulaire_ajax(); // Ajout de la liste des actions à l'actionneur // c'est lui qui va effectuer rellement les actions // lors de l'appel de action/actionner $actions = unserialize(_request('_todo')); include_spip('inc/svp_actionner'); svp_actionner_traiter_actions_demandees($actions, $retour, $redirect); } $retour['editable'] = true; return $retour; }