<?php
/**
- * Gestion du formulaire de gestion des plugins
+ * Gestion du formulaire de gestion des plugins
*
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Formulaires
*/
-
-if (!defined("_ECRIRE_INC_VERSION")) return;
+
+if (!defined("_ECRIRE_INC_VERSION")) {
+ return;
+}
/**
* Chargement du formulaire de gestion des plugins
*
+ * @uses svp_actualiser_paquets_locaux()
* @param string $voir
* Statut des plugins que l'on souhaite voir : actif, inactif, tous
* @param string $verrouille
* URL de redirection après les traitements
* @return array
* Environnement du formulaire
-**/
-function formulaires_admin_plugin_charger_dist($voir='actif', $verrouille='non', $id_paquet='',$redirect=''){
+ **/
+function formulaires_admin_plugin_charger_dist($voir = 'actif', $verrouille = 'non', $id_paquet = '', $redirect = '') {
$valeurs = array();
// actualiser la liste des paquets locaux systematiquement
include_spip('inc/svp_depoter_local');
// sans forcer tout le recalcul en base, mais en récupérant les erreurs XML
- $valeurs['erreurs_xml'] = array();
- svp_actualiser_paquets_locaux(false, $valeurs['erreurs_xml']);
+ $valeurs['_erreurs_xml'] = array();
+ svp_actualiser_paquets_locaux(false, $valeurs['_erreurs_xml']);
$valeurs['actif'] = 'oui';
- if ($voir == 'inactif')
+ if ($voir == 'inactif') {
$valeurs['actif'] = 'non';
- if ($voir == 'tous')
+ }
+ if ($voir == 'tous') {
$valeurs['actif'] = '';
+ }
- $valeurs['constante'] = array('_DIR_PLUGINS','_DIR_PLUGINS_SUPPL');
- if ($verrouille == 'oui')
+ $valeurs['constante'] = array('_DIR_PLUGINS', '_DIR_PLUGINS_SUPPL');
+ if ($verrouille == 'oui') {
$valeurs['constante'] = array('_DIR_PLUGINS_DIST');
- if ($verrouille == 'tous')
+ }
+ if ($verrouille == 'tous') {
$valeurs['constante'] = array();
+ }
$valeurs['verrouille'] = $verrouille;
$valeurs['id_paquet'] = $id_paquet;
$valeurs['actions'] = array();
$valeurs['ids_paquet'] = _request('ids_paquet');
+ $valeurs['afficher_incompatibles'] = _request('afficher_incompatibles');
$valeurs['_todo'] = _request('_todo');
+ $valeurs['_notices'] = _request('_notices');
+ $valeurs['_libelles_actions'] = _request('_libelles_actions');
return $valeurs;
}
* de conséquence.
*
* Si on reçoit une demande de confirmation, on sort sans lever d'erreur !
- *
+ *
+ * @uses svp_decider_verifier_actions_demandees()
+ *
* @param string $voir
* Statut des plugins que l'on souhaite voir : actif, inactif, tous
* @param string $verrouille
* URL de redirection après les traitements
* @return array
* Tableau des erreurs
-**/
-function formulaires_admin_plugin_verifier_dist($voir='actif', $verrouille='non', $id_paquet='',$redirect=''){
+ **/
+function formulaires_admin_plugin_verifier_dist($voir = 'actif', $verrouille = 'non', $id_paquet = '', $redirect = '') {
$erreurs = array();
// ...
} else {
$a_actionner = array();
-
+
// actions globales...
- if ($action_globale = _request('action_globale') AND _request('appliquer')) {
+ if ($action_globale = _request('action_globale') and _request('appliquer')) {
$ids_paquet = _request('ids_paquet');
if (!is_array($ids_paquet)) {
$erreurs['message_erreur'] = _T('svp:message_erreur_aucun_plugin_selectionne');
$a_actionner[$i] = $action_globale;
}
}
- // action unitaire
+ // action unitaire
} else {
$actions = _request('actions');
// $actions[type][id] = Texte
}
}
// lancer les verifications
- if (!$a_actionner)
+ if (!$a_actionner) {
$erreurs['message_erreur'] = _T('svp:message_erreur_aucun_plugin_selectionne');
- else {
-
+ } 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;
}
*
* 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
* 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=''){
-
+ **/
+function formulaires_admin_plugin_traiter_dist($voir = 'actif', $verrouille = 'non', $id_paquet = '', $redirect = '') {
+
$retour = array();
if (_request('valider_actions')) {
- #refuser_traiter_formulaire_ajax();
+ 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);
+ svp_actionner_traiter_actions_demandees($actions, $retour, $redirect);
}
$retour['editable'] = true;
- return $retour;
-}
-/**
- * Crée une valeur d'action pour l'attribut 'name' d'une saisie de formulaire
- *
- * @example
- * [(#ID_PAQUET|svp_nom_action{on})]
- * écrit : actions[on][24]
- * @param int $id_paquet
- * Identifiant du paquet
- * @param string $action
- * Une action possible (on, off, stop, up, on, upon, kill)
-**/
-function filtre_svp_nom_action($id_paquet, $action) {
- return "actions[$action][$id_paquet]";
+ return $retour;
}
-
-?>