'green',
//'- (i)' => 'orange',
'- (i)' => 'black',
'- (b)' => 'red'
];
function is_new_section($line) {
return strpos($line, NEW_SECTION) === 0;
}
$wwwroot_dir = new Cake\Filesystem\Folder(WWW_ROOT);
//$fname = 'CHANGES.txt';
$fname = 'CHANGELOG';
$fpath = $wwwroot_dir->pwd() . DS . '..' . DS . $fname;
$nblines_to_read = 5000;
$f = fopen($fpath, "r") or die("Le fichier /$fname n'existe pas... !");
?>
CHANGEMENTS FAITS SUR LE LOGICIEL
';
echo "LES GRANDS CHANGEMENTS (NEWS)
";
echo '';
// On zappe jqa la première section
$line = ''; while ($line != NEW_BLOCK) $line = fgets($f);
while(!feof($f)) {
if (is_new_section($line)) break;
// Traitement d'une section : on lit jqa ligne vide
$title = fgets($f);
echo "$title
";
//if ($line == NEW_BLOCK) echo "OUI";
//while (!feof($f) && $line!=NEW_BLOCK) {
// Afficher chaque ligne du bloc
while (true) {
$line = fgets($f);
if ( feof($f) || is_new_section($line) || $line==NEW_BLOCK ) break;
echo $line;
echo "
";
}
}
echo '
';
// 3) Lecture et affichage section CHANGES (changements plus détaillés)
echo '';
echo "TOUS LES CHANGEMENTS
";
echo '';
echo "Liste encore plus détaillée des évolutions : GITLAB";
echo '
';
echo '
';
?>
Légende:
- En rouge, les corrections de bug (bugfixes)
- En vert, les changements visibles
- En noir (normal), les changements internes (non visibles, souvent techniques)
$title
";
//if ($line == NEW_BLOCK) echo "OUI";
//while (!feof($f) && $line!=NEW_BLOCK) {
// Afficher chaque ligne du bloc
while (true) {
$line = fgets($f);
if ( feof($f) || is_new_section($line) || $line==NEW_BLOCK ) break;
if (feof($f) || $line==NEW_BLOCK) break;
foreach (array_keys(IMPORTANT) as $code) {
$pos = strpos($line, $code);
if ($pos) break;
}
if ($pos) {
$color = IMPORTANT[$code];
//echo " - ".substr($line,$pos+strlen($code))."";
echo " - ".substr($line,$pos+strlen($code))."";
}
else echo $line;
echo "
";
}
}
// END
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.'
';
//if (mb_strpos($line, "$level: ") !== FALSE) echo $line.'
';
//if (mb_strpos($line, 'Info: ') !== FALSE) echo $line.'
';
//if (mb_strpos($line, '/materiels/edit/') !== FALSE) echo $line.'
';
}
// Close file
$f=null;
*/
?>