Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
PERSO
/
tmp
:
gestion_version04.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /************************************************************************************************/ function gestionVersion($fichier, $chemin) { $recherche = $chemin ."/" .$fichier; $liste_fichier_repertoire = []; $liste_fichier_repertoire = listeFichiersRepertoire($chemin); //echo "<pre>"; //print_r($liste_fichier_repertoire); //echo "</pre>"; $myfile = fopen("GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGENERATION.txt", "w") or die("Unable to open file!"); if( is_dir($chemin) ) { echo " ---- " .$recherche ."<br>"; if( !file_exists($recherche) ) { // on va créer la fichier initial $increment_nom_version = $fichier; generateRandomTextFile($increment_nom_version); echo "Nouvelle version : " .$increment_nom_version ."<br>"; $txt = " Initial " . $increment_nom_version ."\n"; fwrite($myfile, $txt); } else { list($nom, $ext) = Fichier_separation_nom_extension($fichier); $fichiersFiltres = array_filter($liste_fichier_repertoire, function($fichier) use ($nom) { return strpos($fichier, $nom) !== false; }); $liste_base_commune = []; foreach ($fichiersFiltres as $fichier) { $liste_base_commune[] = $fichier; } $pathInfo = pathinfo($fichier); $baseName = $pathInfo['filename']; $extension = $pathInfo['extension']; if(count($liste_base_commune) == 1) { $elementUnique = reset($liste_base_commune); if( $elementUnique === $fichier) { $increment_nom_version = $baseName ."_v1" ."." .$extension; $txt = " Version 1 " . $increment_nom_version ."\n"; fwrite($myfile, $txt); //echo "Nouvelle version : " .$increment_nom_version ."<br>"; generateRandomTextFile($increment_nom_version); } } else { // Afficher le résultat //echo "<pre>"; //print_r($liste_base_commune); //echo "</pre>"; $sousChaine = "_v"; $tableauFiltre = array_filter($liste_base_commune, function($valeur) use ($sousChaine) { return strpos($valeur, $sousChaine) !== false; // Vérifie si "_v" est dans la chaîne }); // Réinitialiser les clés (optionnel) $tableauFiltre = array_values($tableauFiltre); // Afficher le tableau filtré //echo "Chaînes contenant '_v' :\n"; //print_r($tableauFiltre); list($nom, $valeur_max_version) = detection_derniere_version($tableauFiltre); $nouvel_indice_version = $valeur_max_version + 1; // Supprimer l'entier après "_v" $sansEntier = preg_replace('/_v\d+/', '_v', $nom); $pathInfo = pathinfo($sansEntier); $baseName = $pathInfo['filename']; $extension = $pathInfo['extension']; $increment_nom_version = $baseName .$nouvel_indice_version ."." .$extension; $txt = " Version XXX " . $increment_nom_version ."\n"; fwrite($myfile, $txt); //echo "Nouvelle version : " .$increment_nom_version ."<br>"; generateRandomTextFile($increment_nom_version); } } } fclose($myfile); } /************************************************************************************************/ function detection_derniere_version($tableau) { // Initialiser les variables pour garder la chaîne et la valeur maximale $chaineMax = null; $valeurMax = -1; // Parcourir chaque chaîne foreach ($tableau as $chaine) { // Extraire l'entier apres "_v" (si existant) if (preg_match('/_v(\d+)/', $chaine, $matches)) { $valeur = (int) $matches[1]; // Convertir la correspondance en entier // Vérifier si c'est la plus grande valeur if ($valeur > $valeurMax) { $valeurMax = $valeur; $chaineMax = $chaine; } } } // Afficher la chaine avec la valeur maximale //echo "La chaîne avec la plus grande valeur est : $chaineMax (valeur : $valeurMax)"; return [$chaineMax, $valeurMax]; } /************************************************************************************************/ function Fichier_separation_nom_extension($fichier) { $pathInfo = pathinfo($fichier); $base = $pathInfo['filename']; $extension = $pathInfo['extension']; //echo "Nom du fichier : $baseName\n"; //echo "Extension : $extension\n"; return [$base, $extension]; } /************************************************************************************************/ function listeFichiersRepertoire($repertoire) { $liste_fichier_repertoire = []; if (is_dir($repertoire)) { $fichiers = scandir($repertoire); foreach ($fichiers as $fichier) { if ($fichier !== '.' && $fichier !== '..') { $liste_fichier_repertoire[] = $fichier; } } } return($liste_fichier_repertoire); } /************************************************************************************************/ function generateRandomTextFile($fileName) { $minSizeKb = 1; // entre 1ko $maxSizeKb = 5; // et 5Ko // Genere une taille aleatoire entre les limites specifiees (en octets) $fileSize = rand($minSizeKb * 1024, $maxSizeKb * 1024); // Caracteres possibles pour le contenu aléatoire $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $charactersLength = strlen($characters); // maintenant on insere un contenu aléatoire $content = ''; for ($i = 0; $i < $fileSize; $i++) { $content .= $characters[rand(0, $charactersLength - 1)]; } // ecrire le contenu dans un fichier file_put_contents($fileName, $content); } /************************************************************************************************/ //$fichier = "capture_IC.txt"; $chemin = "/home/analogde/www/2024_PHP/2024_PHP_05_01_2025/FTP/Monsta-FTP-master/tmp"; $fichier = "capture_IC616.jpg"; //$chemin = "/home/analogde//www/Document_workarea/patrice/plouf"; gestionVersion($fichier, $chemin); // boucle pour créer 20 version /* for ($i = 0; $i < 20; $i++) { insertFileVersion($fichier, $chemin); } */ ?>