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

?>