File "gestion_version04.php"
Full Path: /home/analogde/www/Administratif/FTP/Monsta-FTP-master/gestion_version04.php
File size: 6.72 KB
MIME-type: text/x-php
Charset: utf-8
<?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>";
if( is_dir($chemin) )
{
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
{
$kkkkk = 555;
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);
}
}
return($increment_nom_version);
}
else
{
return("erreur");
}
}
/************************************************************************************************/
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);
}
*/
?>