File "debug_version01.php"
Full Path: /home/analogde/www/PERSO/tmp/debug_version01.php
File size: 5.42 KB
MIME-type: text/x-php
Charset: utf-8
<?php
function insertFileVersion($fichier, $chemin) //, &$fileList)
{
$recherche = $chemin ."/" .$fichier;
$liste_fichier_repertoire = [];
$liste_fichier_repertoire = listeFichiersRepertoire($chemin);
//echo "<pre>";
//print_r($liste_fichier_repertoire);
//echo "</pre>";
if( is_dir($chemin) )
{
if( !file_exists($recherche) )
{
// on va créer la fichier initial
generateRandomTextFile($fichier);
echo "Nouvelle version : " .$fichier ."<br>";
}
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;
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;
echo "Nouvelle version : " .$increment_nom_version ."<br>";
generateRandomTextFile($increment_nom_version);
}
}
}
}
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 après "_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 chaîne 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
// Générer une taille aléatoire entre les limites spécifiées (en octets)
$fileSize = rand($minSizeKb * 1024, $maxSizeKb * 1024);
// Caractères possibles pour le contenu aléatoire
$characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$charactersLength = strlen($characters);
// Générer un contenu aléatoire
$content = '';
for ($i = 0; $i < $fileSize; $i++)
{
$content .= $characters[rand(0, $charactersLength - 1)];
}
// Écrire le contenu dans un fichier
file_put_contents($fileName, $content);
}
$fichier = "capture_IC.txt";
$chemin = "/home/analogde/www/2024_PHP/2024_PHP_02_01_2025/FTP/Monsta-FTP-master/tmp";
// boucle pour créer 20 version
for ($i = 0; $i < 20; $i++)
{
insertFileVersion($fichier, $chemin);
}
?>