4 * Gestion du formulaire de téléchargement de plugin via une URL
6 * @plugin SVP pour SPIP
8 * @package SPIP\SVP\Formulaires
11 if (!defined("_ECRIRE_INC_VERSION")) return;
14 * Chargement du formulaire de téléchargement de plugin
17 * Environnement du formulaire
19 function formulaires_charger_plugin_archive_charger_dist() {
27 * Vérifications du formulaire de téléchargement de plugin
29 * Vérifie qu'une archive est saisie, et si la destination existe
30 * demande à confirmer l'écrasement
35 function formulaires_charger_plugin_archive_verifier_dist(){
36 include_spip('inc/plugin'); // _DIR_PLUGINS_AUTO
38 if (!$archive = _request('archive')) {
39 $erreurs['archive'] = _T('info_obligatoire');
41 // calcul du répertoire de destination
42 if (!$destination = _request('destination')) {
43 $destination = pathinfo($archive);
44 $destination = $destination['filename'];
46 $destination = str_replace('../', '', $destination);
47 set_request('destination', $destination);
49 // si la destination existe, on demande confirmation de l'ecrasement.
50 $dir = _DIR_PLUGINS_AUTO
. $destination;
51 if (is_dir($dir) and !_request('confirmer')) {
52 $base = dirname($dir);
53 $nom = basename($dir);
54 $backup = "$base/.$nom.bck";
55 $erreurs['confirmer'] = _T("svp:confirmer_telecharger_dans", array(
56 'dir' => joli_repertoire($dir),
57 'dir_backup' => joli_repertoire($backup)));
65 * Traitement du formulaire de téléchargement de plugin
67 * Télécharge le plugin via le téléporteur et rend la main.
70 * Retours du traitement
72 function formulaires_charger_plugin_archive_traiter_dist(){
75 $archive = _request('archive');
76 $dest = _request('destination');
78 include_spip('action/teleporter');
79 $teleporter_composant = charger_fonction('teleporter_composant', 'action');
80 $ok = $teleporter_composant('http', $archive, _DIR_PLUGINS_AUTO
. $dest);
82 $retour['message_erreur'] = $ok;
84 $retour['message_ok'] = _T('svp:message_telechargement_archive_effectue',
85 array('dir' => joli_repertoire( _DIR_PLUGINS_AUTO
. $dest )));
87 $retour['editable'] = true;