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