[SPIP] ~maj v3.0.14-->v3.0.17
[ptitvelo/web/www.git] / www / plugins-dist / svp / formulaires / charger_plugin_archive.php
1 <?php
2
3 /**
4 * Gestion du formulaire de téléchargement de plugin via une URL
5 *
6 * @plugin SVP pour SPIP
7 * @license GPL
8 * @package SPIP\SVP\Formulaires
9 */
10
11 if (!defined("_ECRIRE_INC_VERSION")) return;
12
13 /**
14 * Chargement du formulaire de téléchargement de plugin
15 *
16 * @return array
17 * Environnement du formulaire
18 **/
19 function formulaires_charger_plugin_archive_charger_dist() {
20 return array(
21 'archive' =>'',
22 'destination' =>''
23 );
24 }
25
26 /**
27 * Vérifications du formulaire de téléchargement de plugin
28 *
29 * Vérifie qu'une archive est saisie, et si la destination existe
30 * demande à confirmer l'écrasement
31 *
32 * @return array
33 * Tableau des erreurs
34 **/
35 function formulaires_charger_plugin_archive_verifier_dist(){
36 include_spip('inc/plugin'); // _DIR_PLUGINS_AUTO
37 $erreurs = array();
38 if (!$archive = _request('archive')) {
39 $erreurs['archive'] = _T('info_obligatoire');
40 } else {
41 // Validité de l'url de l'archive
42 $infos_archive = pathinfo($archive);
43 if (!isset($infos_archive['extension'])) {
44 $erreurs['archive'] = _T('svp:message_nok_url_archive');
45 }
46 else {
47 // calcul du répertoire de destination
48 if (!$destination = _request('destination')) {
49 $destination = $infos_archive['filename'];
50 }
51 $destination = str_replace('../', '', $destination);
52 set_request('destination', $destination);
53
54 // si la destination existe, on demande confirmation de l'ecrasement.
55 $dir = _DIR_PLUGINS_AUTO . $destination;
56 if (is_dir($dir) and !_request('confirmer')) {
57 $base = dirname($dir);
58 $nom = basename($dir);
59 $backup = "$base/.$nom.bck";
60 $erreurs['confirmer'] = _T("svp:confirmer_telecharger_dans", array(
61 'dir' => joli_repertoire($dir),
62 'dir_backup' => joli_repertoire($backup)));
63 }
64 }
65 }
66
67 return $erreurs;
68 }
69
70 /**
71 * Traitement du formulaire de téléchargement de plugin
72 *
73 * Télécharge le plugin via le téléporteur et rend la main.
74 *
75 * @return array
76 * Retours du traitement
77 **/
78 function formulaires_charger_plugin_archive_traiter_dist(){
79 $retour = array();
80
81 $archive = _request('archive');
82 $dest = _request('destination');
83
84 include_spip('action/teleporter');
85 $teleporter_composant = charger_fonction('teleporter_composant', 'action');
86 $ok = $teleporter_composant('http', $archive, _DIR_PLUGINS_AUTO . $dest);
87 if ($ok !== true) {
88 $retour['message_erreur'] = $ok;
89 } else {
90 $retour['message_ok'] = _T('svp:message_telechargement_archive_effectue',
91 array('dir' => joli_repertoire( _DIR_PLUGINS_AUTO . $dest )));
92 }
93 $retour['editable'] = true;
94 return $retour;
95 }
96
97
98 ?>