'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:



$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; */ ?>