changes.ctp
2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?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;
*/
?>