mirror of
https://github.com/YunoHost-Apps/spip_ynh.git
synced 2024-09-03 20:25:59 +02:00
98 lines
2.5 KiB
PHP
98 lines
2.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Gestion du formulaire de téléchargement de plugin via une URL
|
|
*
|
|
* @plugin SVP pour SPIP
|
|
* @license GPL
|
|
* @package SPIP\SVP\Formulaires
|
|
*/
|
|
|
|
if (!defined("_ECRIRE_INC_VERSION")) return;
|
|
|
|
/**
|
|
* Chargement du formulaire de téléchargement de plugin
|
|
*
|
|
* @return array
|
|
* Environnement du formulaire
|
|
**/
|
|
function formulaires_charger_plugin_archive_charger_dist() {
|
|
return array(
|
|
'archive' =>'',
|
|
'destination' =>''
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Vérifications du formulaire de téléchargement de plugin
|
|
*
|
|
* Vérifie qu'une archive est saisie, et si la destination existe
|
|
* demande à confirmer l'écrasement
|
|
*
|
|
* @return array
|
|
* Tableau des erreurs
|
|
**/
|
|
function formulaires_charger_plugin_archive_verifier_dist(){
|
|
include_spip('inc/plugin'); // _DIR_PLUGINS_AUTO
|
|
$erreurs = array();
|
|
if (!$archive = _request('archive')) {
|
|
$erreurs['archive'] = _T('info_obligatoire');
|
|
} else {
|
|
// Validité de l'url de l'archive
|
|
$infos_archive = pathinfo($archive);
|
|
if (!isset($infos_archive['extension'])) {
|
|
$erreurs['archive'] = _T('svp:message_nok_url_archive');
|
|
}
|
|
else {
|
|
// calcul du répertoire de destination
|
|
if (!$destination = _request('destination')) {
|
|
$destination = $infos_archive['filename'];
|
|
}
|
|
$destination = str_replace('../', '', $destination);
|
|
set_request('destination', $destination);
|
|
|
|
// si la destination existe, on demande confirmation de l'ecrasement.
|
|
$dir = _DIR_PLUGINS_AUTO . $destination;
|
|
if (is_dir($dir) and !_request('confirmer')) {
|
|
$base = dirname($dir);
|
|
$nom = basename($dir);
|
|
$backup = "$base/.$nom.bck";
|
|
$erreurs['confirmer'] = _T("svp:confirmer_telecharger_dans", array(
|
|
'dir' => joli_repertoire($dir),
|
|
'dir_backup' => joli_repertoire($backup)));
|
|
}
|
|
}
|
|
}
|
|
|
|
return $erreurs;
|
|
}
|
|
|
|
/**
|
|
* Traitement du formulaire de téléchargement de plugin
|
|
*
|
|
* Télécharge le plugin via le téléporteur et rend la main.
|
|
*
|
|
* @return array
|
|
* Retours du traitement
|
|
**/
|
|
function formulaires_charger_plugin_archive_traiter_dist(){
|
|
$retour = array();
|
|
|
|
$archive = _request('archive');
|
|
$dest = _request('destination');
|
|
|
|
include_spip('action/teleporter');
|
|
$teleporter_composant = charger_fonction('teleporter_composant', 'action');
|
|
$ok = $teleporter_composant('http', $archive, _DIR_PLUGINS_AUTO . $dest);
|
|
if ($ok !== true) {
|
|
$retour['message_erreur'] = $ok;
|
|
} else {
|
|
$retour['message_ok'] = _T('svp:message_telechargement_archive_effectue',
|
|
array('dir' => joli_repertoire( _DIR_PLUGINS_AUTO . $dest )));
|
|
}
|
|
$retour['editable'] = true;
|
|
return $retour;
|
|
}
|
|
|
|
|
|
?>
|