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); 
}


?>