Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
Administratif
/
FTP
/
Monsta-FTP-master
:
test_send_modal_05.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php require("gestion_version_DB03.php"); //$page_reference = isset($_GET['source']) ? htmlspecialchars($_GET['source']) : ''; //$fichier = isset($_GET['fichier']) ? htmlspecialchars($_GET['fichier']) : ''; //$chemin = isset($_GET['path']) ? htmlspecialchars($_GET['path']) : ''; // Détecter si un fichier doit être téléchargé if (isset($_GET['download'])) { $fileId = intval($_GET['download']); echo " >>>>>> " . $fileId ."<br>"; echo $_GET['param1'] ." " .$_GET['param2'] ." " .$_GET['param3'] ."<br>"; $page_reference = $_GET['param1']; $fichier = $_GET['param2']; $chemin = $_GET['param3']; if( $fileId == 0) { $fichier_telechargement = $chemin ."/" .$fichier; } else { // Récupérer les informations du fichier $fileInfo = pathinfo($fichier); // Obtenir la partie avant l'extension $nom_fichier = $fileInfo['filename']; // Obtenir l'extension $extension = $fileInfo['extension']; $version = "_v" .$fileId; $fichier_telechargement = $chemin ."/" .$nom_fichier .$version ."." .$extension; } //echo " ++++++ " .$fichier_telechargement ."<br>"; $utilisateur = "patrice"; inserer_acces_fichier_DB($utilisateur, $fichier_telechargement ); if ( file_exists( $fichier_telechargement )) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . basename($fichier_telechargement) . '"'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($fichier_telechargement)); ob_clean(); flush(); readfile($fichier_telechargement); exit(); } } $page_reference = isset($_GET['source']) ? htmlspecialchars($_GET['source']) : ''; $fichier = isset($_GET['fichier']) ? htmlspecialchars($_GET['fichier']) : ''; $chemin = isset($_GET['path']) ? htmlspecialchars($_GET['path']) : ''; //echo " --->>> " .$page_reference ."<br>"; //echo " --->>> " .$fichier ."<br>"; //echo " --->>> " .$chemin ."<br>"; // mise en forme d'une partie du chemin $chemin_format = str_replace("~", "/home/analogde", $chemin); // creation du chemin complet avec le nom du fichier $recherche = $chemin_format ."/" .$fichier; //echo " Recherche " . $recherche ."<br>"; $liste_fichiers = []; $liste_fichiers_version = []; $liste_fichiers_donnees = []; $toto = []; if (file_exists($recherche)) { $liste_fichiers = scan_repertoire($chemin_format); //echo "<pre>"; //print_r($liste_fichiers); //echo "</pre>"; $liste_fichiers_version = detection_fichier_version($fichier, $liste_fichiers); //echo "<pre>"; //print_r($liste_fichiers_version); //echo "</pre>"; $liste_fichiers_donnees = info_data_fichiers($chemin_format, $liste_fichiers_version); // non utiliser //$transfert = info_data_fichiers($chemin_format, $liste_fichiers_version); //$liste_fichiers_donnees = $transfert[1]; //echo "<pre>"; //print_r( $liste_fichiers_donnees); //echo "</pre>"; } function scan_repertoire($chemin) { // Lire le contenu du répertoire $scan_tous_fichier = scandir($chemin); $liste_fichiers = []; foreach ($scan_tous_fichier as $fichier) { // Ignorer les entrées spéciales "." et ".." if ($fichier !== "." && $fichier !== "..") { $liste_fichiers[] = $fichier; } } return($liste_fichiers); } function detection_fichier_version($fichier, $liste_fichiers) { // Extraire la partie du nom sans extension $baseName = pathinfo($fichier, PATHINFO_FILENAME); // Tableau pour stocker les fichiers correspondants $matchingFiles = []; // on ajoute le fichier en version initial $matchingFiles[] = $fichier; // Parcourir la liste des fichiers foreach ($liste_fichiers as $element) { // Extraire la partie du nom sans extension $currentBaseName = pathinfo($element, PATHINFO_FILENAME); // Vérifier si le fichier partage une partie commune de nom avec le fichier de référence if (strpos($currentBaseName, $baseName) === 0 && $currentBaseName !== $baseName) { $matchingFiles[] = $element; } } return($matchingFiles); } function format_filesize($size, $precision = 2) { $units = array('B','kB','MB','GB','TB','PB','EB','ZB','YB'); $step = 1024; $i = 0; while (($size / $step) > 0.9) { $size = $size / $step; $i++; } return round($size, $precision).$units[$i]; } function info_data_fichiers($chemin_format, $liste_fichiers) { $liste_fichiers_data = []; foreach ($liste_fichiers as $fichier) { // creation du chemin $recherche_fichier = $chemin_format ."/" .$fichier; // sauvegarde le chemin $toto [] = $recherche_fichier; // Récupérer les informations sur le fichier à partir du chemin $taille = filesize($recherche_fichier); // Taille en octets $fichier_creation = filectime($recherche_fichier); // Timestamp de la création $taille_format = format_filesize($taille, $precision = 2); // Ajouter les informations au tableau $liste_fichiers_data[] = [ 'nom' => $fichier, 'taille' => $taille_format, 'date_creation' => date('d-m-Y H:i:s', $fichier_creation), // Formater la date ]; } // non utiliser // je retournes un tableau qui contient les 2 tableaux //$transfert = []; //$transfert[] = $toto; //$transfert[] = $liste_fichiers_data; //return( $transfert); return( $liste_fichiers_data); } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Module gestion des versions</title> <link rel="icon" type="image/x-icon" href="version.png"> <!-- Lien vers Bootstrap CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"> <style> button { padding: 8px 16px; background-color: #007BFF; color: white; border: none; cursor: pointer; font-size: 14px; } button:hover { background-color: #0056b3; } .center_bouton { display: flex; justify-content: center; align-items: center; height: 50px; /*border: 3px solid green; */ } </style> <script> // Fonction pour afficher la modale avec l'ID du fichier function showModal(fileId) { const validateButton = document.getElementById('validateDownload'); validateButton.dataset.fileId = fileId; // Stocker l'ID du fichier dans le bouton const modal = new bootstrap.Modal(document.getElementById('actionModal')); modal.show(); } // Fonction pour valider et fermer la modale function validateDownload() { const validateButton = document.getElementById('validateDownload'); const fileId = validateButton.dataset.fileId; const modal = bootstrap.Modal.getInstance(document.getElementById('actionModal')); // Récupérer la modale modal.hide(); // Fermer la modale //window.location.href = "?download=" + fileId; // Rediriger pour télécharger le fichier /* $page_reference = isset($_GET['source']) ? htmlspecialchars($_GET['source']) : ''; $fichier = isset($_GET['fichier']) ? htmlspecialchars($_GET['fichier']) : ''; $chemin = isset($_GET['path']) ? htmlspecialchars($_GET['path']) : ''; */ const valeur1 = "<?php echo urlencode($page_reference); ?>"; const valeur2 = "<?php echo urlencode($fichier); ?>"; const valeur3 = "<?php echo urlencode($chemin_format); ?>"; let url = "?download=" + encodeURIComponent(fileId) + "¶m1=" + valeur1 + "¶m2=" + valeur2 + "¶m3=" + valeur3; window.location.href = url; // Rediriger pour télécharger le fichier // window.location.href = "?download=" + fileId; // Rediriger pour télécharger le fichier } // Fonction pour revenir à la page source function goBack() { window.location.href = "<?php echo htmlspecialchars($page_reference); ?>"; } </script> </head> <body> <div class="container mt-5"> <h1 class="text-center mb-4">Liste des versions disponibles</h1> <!-- Tableau --> <table class="table table-striped table-hover table-bordered"> <thead class="table-dark"> <tr> <th>Nom</th> <th>Taille</th> <th>Heure</th> <th>Action</th> </tr> </thead> <tbody> <?php foreach ($liste_fichiers_donnees as $index => $row): $blase = $row['nom']; ?> <tr> <td><?= htmlspecialchars($row['nom']) ?></td> <td><?= htmlspecialchars($row['taille']) ?></td> <td><?= htmlspecialchars($row['date_creation']) ?></td> <td> <!-- Bouton pour ouvrir la modale --> <button onclick="showModal(<?= $index ?>)" class="btn btn-primary btn-sm"> Télécharger </button> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> <div class="center_bouton"> <button onclick="goBack()">Retour à l'explorateur</button> </div> <!-- Fenêtre modale Bootstrap --> <div class="modal fade" id="actionModal" tabindex="-1" aria-labelledby="actionModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="actionModalLabel">Confirmer le téléchargement</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> Voulez-vous télécharger ce fichier ? </div> <div class="modal-footer"> <button id="validateDownload" onclick="validateDownload()" class="btn btn-success">Valider</button> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Annuler</button> </div> </div> </div> </div> <!-- Lien vers Bootstrap JS --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> </body> </html>