﻿<?php
//**************************************************************************************************
// In: log-2020-MM.txt                                                                             *
// Out:                                                                                            *
// Epuration du fichier de logging                                      Out-log-2020-MM.txt        *
// Reconstruction histo mensuelle: On + Off                             histo-log-2020-MM.txt      *
// Reconstruction histo mensuelle sans les IP non comptabilisés         histoOn-log-2020-MM.txt    *
//**************************************************************************************************
// Start output buffering
ob_start();                     // début de l'enregistrement de l'ouput du script php
@session_start();

$caller     = $_SESSION['caller'] ;
$year       = $_SESSION['year'];
$mois       = $_SESSION['mois'];
$datafolder = $_SESSION['datafolder'];
$statfolder = $_SESSION['statfolder'];
$pathlogIn  = $_SESSION['pathlogIn'] ;
$pathlogOut = $_SESSION['pathlogOut'] ;

//echo '*******Checkfile****************'.$pathlogOut . '======='.$_SESSION['pathlogOut'] .'<br>';

$stack = $_SESSION['stack'];
$stack = $stack . $caller . ' / ' . 'checkfile' . ' - ';  $_SESSION['stack'] = $stack;

$caller =  "checkfile"; $_SESSION['caller'] = $caller;

if ($mois != '') {
    echo '<b>Validation file:</b> ' . $pathlogIn .'<br>';
    if (file_exists($pathlogOut)) { @unlink($pathlogOut); }          // Delete du fichier temporaire épuré

// Ouverture des fichiers
    // 'r' 	Ouvre en lecture seule, et place le pointeur de fichier au début du fichier.
    $handleIn = fopen($pathlogIn, "r");      // In
        if ( !$handleIn ) { echo $php_errormsg .'<br>';  }

    // 'a' 	Ouvre en écriture seule ; place le pointeur de fichier à la fin du fichier.
    // Si le fichier n'existe pas, on tente de le créer.
    $handleOut = @fopen($pathlogOut, "a");    // Out
        if ( !$handleOut ) { echo '38-Checkfile: '. $php_errormsg .'<br>';  }

//**************************************************************************************************
// Epuration du fichier de logging
//**************************************************************************************************
        $in = 0 ;  $out = 0;             // Compteurs de ligne
        $addate = 0; $adcr= 0;
        while (($buffer = fgets($handleIn, 4096)) !== false) {            // boucle jusqu'au dernier enregistrement: EOF
            $in++;                                                        // Incrémentation compteur en entrée

            $buffer = str_replace("\r","", $buffer);                  // Supprime séquence: CRCRLF
            $buffer = str_replace("\n","", $buffer);                  // Deuxieme lame séquence: CRLF
            $buffer = trim($buffer);                                      // ligne décalée

            // Détection enregistrement non disjoint pas de CR, on recherche si la date existe en plusieurs exemplaire
            if (strlen($buffer) >= 80) {
                $date   = substr($buffer, 0, 5);          // Extraction date debut enregistrement: 2020-MM
                $nbdate = substr_count($buffer, $date);   // recherche nombre de $date dans l'enregistrement

                $txt = 'Cet enregistrement renferme '.$nbdate. ' fois la date?. Il est splité en ==>';
                $addate += $nbdate -1;
                echo $buffer. '<br>' . $txt.'<br>';

                if ($nbdate > 1) {
                    // echo '88-before:  '.$buffer.'<br>' ;
                    $buffer = str_replace($date, PHP_EOL.$date, $buffer);
                    $buffer = substr($buffer, 2);   // Elimination du pemier CRLF devant premiere date.
                    $display =   str_replace(PHP_EOL, '<br>', $buffer);   // mise en forme pour affichage: test dev
                   echo $display.'<br><br>' ;
                }
            //    echo 'Out: ' . $buffer. '<br>';

                //$out++;
            }

            // On supprime les enregistrements de longueur < 2
            if (strlen($buffer) >10)  {
                $out++;
                fwrite($handleOut, trim($buffer). PHP_EOL);
            }else{
                $delrec++;  // comptage des enregistrements éliminés
            }


        }   // end of while
    }           // end of if mois

        if (!feof($handleIn)) {                                       // teste si sortie à EOF
            echo  "Exit avant la fin de fichier\n".'<br>';
        }
        echo '<br>';
        echo '<span style="color:black;">Fin de fichier. </span><br> ';
        fclose($handleIn);
        fclose($handleOut);
        echo 'Fichier modifié en : ' . $pathlogOut . '<br>' ;

        echo '<br><span style="font-weight:bold; color:black;">Nb rec In: ' .
            $in . ' - out: ' . $out .
            ' - Adcr: ' . $adcr . ' - Addate: ' . $addate . ' - Rec del: ' . $delrec .
            '<br> Bilan out = ' . ($in + $adcr + $addate - $delrec). ' - ( checking: ' . ($out + $addate + $adcr) . ' )'.
            '</span><br> ';

    // saving captured output to file
    $_SESSION['display']  = ob_get_contents();
    // On modifie l'information : Status
    header('Status: 301 Moved Permanently', false, 301);
    // On effectue ensuite la redirection
    header('Location: Toolslog.php');
?>
