changes.ctp 2.89 KB
<?php
// parameters passed by controller
?>
<h2>
	<!-- 
	<i class="icon-print"></i> 
	 -->
	<center>CHANGEMENTS FAITS SUR LE LOGICIEL</center>
</h2>

<p>
<u><b>Légende</b></u>:
<ul>
	<li>En <b style='color:green'>vert</b>, les changements importants et visibles</li>
	<li>En <b style='color:orange'>orange</b>, les changements importants mais internes (non visibles, souvent techniques)</li>
	<li>En <b style='color:red'>rouge</b>, les corrections de bug (bugfixes)</li>
</ul>
</p>
<br>
<br>
<br>

	
	

<?php

// On lit le fichier /WWWROOT/../CHANGES.txt
const EMPTY_LINE = "\n"; // Attention, '\n' ne marche pas... seulement "\n"
const NEW_SECTION = "-------\n";
/*
const IMPORTANT1 = '- (e)';
const IMPORTANT2 = '- (i)';
const IMPORTANT3 = '- (b)';
*/
const IMPORTANT = [
    '- (e)' => 'green',
    '- (i)' => 'orange',
    '- (b)' => 'red'
];

$wwwroot_dir = new Cake\Filesystem\Folder(WWW_ROOT);
$fname = 'CHANGES.txt';
$fpath = $wwwroot_dir->pwd() . DS . '..' . DS . $fname;
$nblines_to_read = 5000;

$f = fopen($fpath, "r") or die("Le fichier /$fname n'existe pas... !");

// On zappe jqa début d'une première section
$line = '';
while ($line != NEW_SECTION) $line = fgets($f);

while(!feof($f)) {
    // Traitement d'une section : on lit jqa ligne vide
    $line = fgets($f);
    echo "<b>$line</b><br>";
    //if ($line == NEW_SECTION) echo "OUI";
    //while (!feof($f) && $line!=NEW_SECTION) {
    while (true) {
        $line = fgets($f);
        if (feof($f) || $line==NEW_SECTION) break;
        foreach (array_keys(IMPORTANT) as $code) {
            $pos = strpos($line, $code);
            if ($pos) break;
        }
        if ($pos) {
            $color = IMPORTANT[$code];
            echo "<b style='color:$color'> - ".substr($line,$pos+strlen($code))."</b>";
        }
        else echo $line; 
        echo "<br>";
    }
}
    
fclose($f);


/* Autre methode de lecture, avec iterateur

// On va direct à la fin du fichier
try {
    $f = new SplFileObject($fpath, "r"); 
} catch (Exception $e) {
    echo("Le fichier /$fname n'existe pas...");
    return;
}
$f->seek(PHP_INT_MAX);
$last_line = $f->key();

// Lire TOUT le fichier
//$lines = new LimitIterator($f, 0, $last_line);
// Lire seulement les $nblines_to_read dernières lignes
//$line_num_from = max(0,$last_line-$nblines_to_read);
$line_num_from = 0;
$lines = new LimitIterator($f, $line_num_from);
//$lines = new LimitIterator($f, $last_line-$nblines_to_read, $last_line);
//print_r(iterator_to_array($lines));

// Inversion des lignes pour affichage anti-chrono
//$lines_reversed = array_reverse(iterator_to_array($lines));
$lines = iterator_to_array($lines);
foreach ($lines as $line) {
    echo $line.'<br>';
    //if (mb_strpos($line, "$level: ") !== FALSE) echo $line.'<br><br>';
    //if (mb_strpos($line, 'Info: ') !== FALSE) echo $line.'<br><br>';
    //if (mb_strpos($line, '/materiels/edit/') !== FALSE) echo $line.'<br><br>';
}

// Close file
$f=null;

*/

?>