File "charger_plugin.php"
Full path: /home/argothem/www/v4_old/plugins-dist/svp/formulaires/charger_plugin.php
File size: 4.34 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Gestion du formulaire de recherche et téléchargement de plugins
* distants connus dans un dépot
*
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Formulaires
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
// pour svp_presenter_actions_realisees()
include_spip('exec/admin_plugin');
/**
* Chargement du formulaire de recherche et téléchargement de plugins
*
* @return array
* Environnement du formulaire
**/
function formulaires_charger_plugin_charger_dist() {
if (!autoriser('ajouter', '_plugins')) {
return false;
}
return [
'phrase' => _request('phrase'),
'etat' => _request('etat'),
'depot' => _request('depot'),
'doublon' => _request('doublon'),
'exclusion' => _request('exclusion'),
'ids_paquet' => _request('ids_paquet'),
'_todo' => _request('_todo'),
'_libelles_actions' => _request('_libelles_actions'),
// 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)
'_actions_realisees' => (_request('todo') or _AJAX) ? '' : svp_presenter_actions_realisees()
];
}
/**
* Vérification du formulaire de recherche et téléchargement de plugins
*
* Appelle le décideur qui détermine la liste des actions à faire et si celles-ci
* peuvent être faites (dépendances connues). Une erreur sera levé dans le
* cas contraire.
*
* Si toutes les actions peuvent être faites, une demande de confirmation
* est envoyée (dans une erreur spéciale), présentant alors toutes les
* actions qui seront réalisées (celle demandée + celles à faire par voie
* de conséquence.
*
* Si on reçoit une demande de confirmation, on sort sans lever d'erreur !
*
* @uses svp_decider_verifier_actions_demandees()
* @return array
* Tableau des erreurs
**/
function formulaires_charger_plugin_verifier_dist() {
$erreurs = [];
$a_installer = [];
if (_request('annuler_actions')) {
// Requete : Annulation des actions d'installation en cours
// -- On vide la liste d'actions en cours
set_request('_todo', '');
} elseif (_request('valider_actions')) {
} elseif (_request('rechercher')) {
// annuler les selections si nouvelle recherche
set_request('ids_paquet', []);
} else {
// Requete : Installation d'un ou de plusieurs plugins
// -- On construit le tableau des ids de paquets conformement a l'interface du decideur
if (_request('installer') or _request('telecharger')) {
$action = _request('installer') ? 'geton' : 'get';
// L'utilisateur a demande une installation multiple de paquets
// -- on verifie la liste des id_paquets uniquement
if ($id_paquets = _request('ids_paquet')) {
foreach ($id_paquets as $_id_paquet) {
$a_installer[$_id_paquet] = $action;
}
}
} else {
// L'utilisateur a demande l'installation d'un paquet en cliquant sur le bouton en regard
// du resume du plugin -> installer_paquet
if ($install = _request('installer_paquet')) {
if ($id_paquet = key($install)) {
$a_installer[$id_paquet] = 'geton';
}
}
}
if (!$a_installer) {
$erreurs['message_erreur'] = _T('svp:message_nok_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_installer, $erreurs);
}
}
return $erreurs;
}
/**
* Traitement du formulaire de recherche et téléchargement de plugins
*
* Si une liste d'action est validée, on redirige de formulaire sur
* l'action 'actionner' qui les traitera une par une.
*
* @return array
* Retours du traitement
**/
function formulaires_charger_plugin_traiter_dist() {
$retour = [];
if (_request('rechercher') or _request('annuler_actions')) {
} elseif (_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');
// si toutes les actions sont des téléchargements (pas d'activation), on reste sur cette page
$redirect = null;
if (!array_diff($actions, ['get'])) {
$redirect = self();
}
svp_actionner_traiter_actions_demandees($actions, $retour, $redirect);
}
$retour['editable'] = true;
return $retour;
}