Server : Apache System : Linux webd348.cluster026.gra.hosting.ovh.net 5.15.148-ovh-vps-grsec-zfs-classid #1 SMP Thu Feb 8 09:41:04 UTC 2024 x86_64 User : hednacluml ( 122243) PHP Version : 8.3.9 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl Directory : /home/hednacluml/jobs/plugins-dist/svp/formulaires/ |
<?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() { if (!autoriser('ajouter', '_plugins')) { return false; } return [ 'archive' => '', 'destination' => '', 'password' => '' ]; } /** * 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 = []; if (!autoriser('ajouter', '_plugins')) { $erreurs['message_erreur'] = _T('svp:erreur_teleporter_chargement_source_impossible', ['source' => '']); } else { 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', [ 'dir' => joli_repertoire($dir), 'dir_backup' => joli_repertoire($backup) ]); } } } if (empty($password = _request('password'))) { $erreurs['password'] = _T('info_obligatoire'); } else { include_spip('inc/auth'); if (!auth_controler_password_auteur_connecte($password)) { $erreurs['message_erreur'] = _T('svp:erreur_teleporter_chargement_source_impossible', ['source' => '']); } } } 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 = []; $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', ['dir' => joli_repertoire(_DIR_PLUGINS_AUTO . $dest)] ); } $retour['editable'] = true; return $retour; }