[SPIP] +spip v3.0.17
[lhc/web/clavette_www.git] / www / plugins-dist / svp / lib / pcltar / pcltrace.lib.php
1 <?
2 // --------------------------------------------------------------------------------
3 // PhpConcept Library (PCL) Trace 1.0
4 // --------------------------------------------------------------------------------
5 // License GNU/GPL - Vincent Blavet - Janvier 2001
6 // http://www.phpconcept.net & http://phpconcept.free.fr
7 // --------------------------------------------------------------------------------
8 // Français :
9 // La description de l'usage de la librairie PCL Trace 1.0 n'est pas encore
10 // disponible. Celle-ci n'est pour le moment distribuée qu'avec l'application
11 // et la librairie PhpZip.
12 // Une version indépendante sera bientot disponible sur http://www.phpconcept.net
13 //
14 // English :
15 // The PCL Trace 1.0 library description is not available yet. This library is
16 // released only with PhpZip application and library.
17 // An independant release will be soon available on http://www.phpconcept.net
18 //
19 // --------------------------------------------------------------------------------
20 //
21 // * Avertissement :
22 //
23 // Cette librairie a été créée de façon non professionnelle.
24 // Son usage est au risque et péril de celui qui l'utilise, en aucun cas l'auteur
25 // de ce code ne pourra être tenu pour responsable des éventuels dégats qu'il pourrait
26 // engendrer.
27 // Il est entendu cependant que l'auteur a réalisé ce code par plaisir et n'y a
28 // caché aucun virus, ni malveillance.
29 // Cette libairie est distribuée sous la license GNU/GPL (http://www.gnu.org)
30 //
31 // * Auteur :
32 //
33 // Ce code a été écrit par Vincent Blavet (vincent@blavet.net) sur son temps
34 // de loisir.
35 //
36 // --------------------------------------------------------------------------------
37
38 // ----- Look for double include
39 if (!defined("PCLTRACE_LIB"))
40 {
41 define( "PCLTRACE_LIB", 1 );
42
43 // ----- Version
44 $g_pcl_trace_version = "1.0";
45
46 // ----- Internal variables
47 // These values must be change by PclTrace library functions
48 $g_pcl_trace_mode = "memory";
49 $g_pcl_trace_filename = "trace.txt";
50 $g_pcl_trace_name = array();
51 $g_pcl_trace_index = 0;
52 $g_pcl_trace_level = 0;
53 //$g_pcl_trace_entries = array();
54
55
56 // --------------------------------------------------------------------------------
57 // Function : TrOn($p_level, $p_mode, $p_filename)
58 // Description :
59 // Parameters :
60 // $p_level : Trace level
61 // $p_mode : Mode of trace displaying :
62 // 'normal' : messages are displayed at function call
63 // 'memory' : messages are memorized in a table and can be display by
64 // TrDisplay() function. (default)
65 // 'log' : messages are writed in the file $p_filename
66 // --------------------------------------------------------------------------------
67 function TrOn($p_level=1, $p_mode="memory", $p_filename="trace.txt")
68 {
69 global $g_pcl_trace_level;
70 global $g_pcl_trace_mode;
71 global $g_pcl_trace_filename;
72 global $g_pcl_trace_name;
73 global $g_pcl_trace_index;
74 global $g_pcl_trace_entries;
75
76 // ----- Enable trace mode
77 $g_pcl_trace_level = $p_level;
78
79 // ----- Memorize mode and filename
80 switch ($p_mode) {
81 case "normal" :
82 case "memory" :
83 case "log" :
84 $g_pcl_trace_mode = $p_mode;
85 break;
86 default :
87 $g_pcl_trace_mode = "logged";
88 }
89
90 // ----- Memorize filename
91 $g_pcl_trace_filename = $p_filename;
92 }
93 // --------------------------------------------------------------------------------
94
95 // --------------------------------------------------------------------------------
96 // Function : IsTrOn()
97 // Description :
98 // Return value :
99 // The trace level (0 for disable).
100 // --------------------------------------------------------------------------------
101 function IsTrOn()
102 {
103 global $g_pcl_trace_level;
104
105 return($g_pcl_trace_level);
106 }
107 // --------------------------------------------------------------------------------
108
109 // --------------------------------------------------------------------------------
110 // Function : TrOff()
111 // Description :
112 // Parameters :
113 // --------------------------------------------------------------------------------
114 function TrOff()
115 {
116 global $g_pcl_trace_level;
117 global $g_pcl_trace_mode;
118 global $g_pcl_trace_filename;
119 global $g_pcl_trace_name;
120 global $g_pcl_trace_index;
121
122 // ----- Clean
123 $g_pcl_trace_mode = "memory";
124 unset($g_pcl_trace_entries);
125 unset($g_pcl_trace_name);
126 unset($g_pcl_trace_index);
127
128 // ----- Switch off trace
129 $g_pcl_trace_level = 0;
130 }
131 // --------------------------------------------------------------------------------
132
133
134 // --------------------------------------------------------------------------------
135 // Function : TrFctStart()
136 // Description :
137 // Just a trace function for debbugging purpose before I use a better tool !!!!
138 // Start and stop of this function is by $g_pcl_trace_level global variable.
139 // Parameters :
140 // $p_level : Level of trace required.
141 // --------------------------------------------------------------------------------
142 function TrFctStart($p_file, $p_line, $p_name, $p_param="", $p_message="")
143 {
144 global $g_pcl_trace_level;
145 global $g_pcl_trace_mode;
146 global $g_pcl_trace_filename;
147 global $g_pcl_trace_name;
148 global $g_pcl_trace_index;
149 global $g_pcl_trace_entries;
150
151 // ----- Look for disabled trace
152 if ($g_pcl_trace_level < 1)
153 return;
154
155 // ----- Add the function name in the list
156 if (!isset($g_pcl_trace_name))
157 $g_pcl_trace_name = $p_name;
158 else
159 $g_pcl_trace_name .= ",".$p_name;
160
161 // ----- Update the function entry
162 $i = sizeof($g_pcl_trace_entries);
163 $g_pcl_trace_entries[$i][name] = $p_name;
164 $g_pcl_trace_entries[$i][param] = $p_param;
165 $g_pcl_trace_entries[$i][message] = "";
166 $g_pcl_trace_entries[$i][file] = $p_file;
167 $g_pcl_trace_entries[$i][line] = $p_line;
168 $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index;
169 $g_pcl_trace_entries[$i][type] = "1"; // means start of function
170
171 // ----- Update the message entry
172 if ($p_message != "")
173 {
174 $i = sizeof($g_pcl_trace_entries);
175 $g_pcl_trace_entries[$i][name] = "";
176 $g_pcl_trace_entries[$i][param] = "";
177 $g_pcl_trace_entries[$i][message] = $p_message;
178 $g_pcl_trace_entries[$i][file] = $p_file;
179 $g_pcl_trace_entries[$i][line] = $p_line;
180 $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index;
181 $g_pcl_trace_entries[$i][type] = "3"; // means message
182 }
183
184 // ----- Action depending on mode
185 PclTraceAction($g_pcl_trace_entries[$i]);
186
187 // ----- Increment the index
188 $g_pcl_trace_index++;
189 }
190 // --------------------------------------------------------------------------------
191
192 // --------------------------------------------------------------------------------
193 // Function : TrFctEnd()
194 // Description :
195 // Just a trace function for debbugging purpose before I use a better tool !!!!
196 // Start and stop of this function is by $g_pcl_trace_level global variable.
197 // Parameters :
198 // $p_level : Level of trace required.
199 // --------------------------------------------------------------------------------
200 function TrFctEnd($p_file, $p_line, $p_return=1, $p_message="")
201 {
202 global $g_pcl_trace_level;
203 global $g_pcl_trace_mode;
204 global $g_pcl_trace_filename;
205 global $g_pcl_trace_name;
206 global $g_pcl_trace_index;
207 global $g_pcl_trace_entries;
208
209 // ----- Look for disabled trace
210 if ($g_pcl_trace_level < 1)
211 return;
212
213 // ----- Extract the function name in the list
214 // ----- Remove the function name in the list
215 if (!($v_name = strrchr($g_pcl_trace_name, ",")))
216 {
217 $v_name = $g_pcl_trace_name;
218 $g_pcl_trace_name = "";
219 }
220 else
221 {
222 $g_pcl_trace_name = substr($g_pcl_trace_name, 0, strlen($g_pcl_trace_name)-strlen($v_name));
223 $v_name = substr($v_name, -strlen($v_name)+1);
224 }
225
226 // ----- Decrement the index
227 $g_pcl_trace_index--;
228
229 // ----- Update the message entry
230 if ($p_message != "")
231 {
232 $i = sizeof($g_pcl_trace_entries);
233 $g_pcl_trace_entries[$i][name] = "";
234 $g_pcl_trace_entries[$i][param] = "";
235 $g_pcl_trace_entries[$i][message] = $p_message;
236 $g_pcl_trace_entries[$i][file] = $p_file;
237 $g_pcl_trace_entries[$i][line] = $p_line;
238 $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index;
239 $g_pcl_trace_entries[$i][type] = "3"; // means message
240 }
241
242 // ----- Update the function entry
243 $i = sizeof($g_pcl_trace_entries);
244 $g_pcl_trace_entries[$i][name] = $v_name;
245 $g_pcl_trace_entries[$i][param] = $p_return;
246 $g_pcl_trace_entries[$i][message] = "";
247 $g_pcl_trace_entries[$i][file] = $p_file;
248 $g_pcl_trace_entries[$i][line] = $p_line;
249 $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index;
250 $g_pcl_trace_entries[$i][type] = "2"; // means end of function
251
252 // ----- Action depending on mode
253 PclTraceAction($g_pcl_trace_entries[$i]);
254 }
255 // --------------------------------------------------------------------------------
256
257 // --------------------------------------------------------------------------------
258 // Function : TrFctMessage()
259 // Description :
260 // Parameters :
261 // --------------------------------------------------------------------------------
262 function TrFctMessage($p_file, $p_line, $p_level, $p_message="")
263 {
264 global $g_pcl_trace_level;
265 global $g_pcl_trace_mode;
266 global $g_pcl_trace_filename;
267 global $g_pcl_trace_name;
268 global $g_pcl_trace_index;
269 global $g_pcl_trace_entries;
270
271 // ----- Look for disabled trace
272 if ($g_pcl_trace_level < $p_level)
273 return;
274
275 // ----- Update the entry
276 $i = sizeof($g_pcl_trace_entries);
277 $g_pcl_trace_entries[$i][name] = "";
278 $g_pcl_trace_entries[$i][param] = "";
279 $g_pcl_trace_entries[$i][message] = $p_message;
280 $g_pcl_trace_entries[$i][file] = $p_file;
281 $g_pcl_trace_entries[$i][line] = $p_line;
282 $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index;
283 $g_pcl_trace_entries[$i][type] = "3"; // means message of function
284
285 // ----- Action depending on mode
286 PclTraceAction($g_pcl_trace_entries[$i]);
287 }
288 // --------------------------------------------------------------------------------
289
290 // --------------------------------------------------------------------------------
291 // Function : TrMessage()
292 // Description :
293 // Parameters :
294 // --------------------------------------------------------------------------------
295 function TrMessage($p_file, $p_line, $p_level, $p_message="")
296 {
297 global $g_pcl_trace_level;
298 global $g_pcl_trace_mode;
299 global $g_pcl_trace_filename;
300 global $g_pcl_trace_name;
301 global $g_pcl_trace_index;
302 global $g_pcl_trace_entries;
303
304 // ----- Look for disabled trace
305 if ($g_pcl_trace_level < $p_level)
306 return;
307
308 // ----- Update the entry
309 $i = sizeof($g_pcl_trace_entries);
310 $g_pcl_trace_entries[$i][name] = "";
311 $g_pcl_trace_entries[$i][param] = "";
312 $g_pcl_trace_entries[$i][message] = $p_message;
313 $g_pcl_trace_entries[$i][file] = $p_file;
314 $g_pcl_trace_entries[$i][line] = $p_line;
315 $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index;
316 $g_pcl_trace_entries[$i][type] = "4"; // means simple message
317
318 // ----- Action depending on mode
319 PclTraceAction($g_pcl_trace_entries[$i]);
320 }
321 // --------------------------------------------------------------------------------
322
323
324 // --------------------------------------------------------------------------------
325 // Function : TrDisplay()
326 // Description :
327 // Parameters :
328 // --------------------------------------------------------------------------------
329 function TrDisplay()
330 {
331 global $g_pcl_trace_level;
332 global $g_pcl_trace_mode;
333 global $g_pcl_trace_filename;
334 global $g_pcl_trace_name;
335 global $g_pcl_trace_index;
336 global $g_pcl_trace_entries;
337
338 // ----- Look for disabled trace
339 if (($g_pcl_trace_level <= 0) || ($g_pcl_trace_mode != "memory"))
340 return;
341
342 $v_font = "\"Verdana, Arial, Helvetica, sans-serif\"";
343
344 // ----- Trace Header
345 echo "<table width=100% border=0 cellspacing=0 cellpadding=0>";
346 echo "<tr bgcolor=#0000CC>";
347 echo "<td bgcolor=#0000CC width=1>";
348 echo "</td>";
349 echo "<td><div align=center><font size=3 color=#FFFFFF face=$v_font>Trace</font></div></td>";
350 echo "</tr>";
351 echo "<tr>";
352 echo "<td bgcolor=#0000CC width=1>";
353 echo "</td>";
354 echo "<td>";
355
356 // ----- Content header
357 echo "<table width=100% border=0 cellspacing=0 cellpadding=0>";
358
359 // ----- Display
360 $v_again=0;
361 for ($i=0; $i<sizeof($g_pcl_trace_entries); $i++)
362 {
363 // ---- Row header
364 echo "<tr>";
365 echo "<td><table width=100% border=0 cellspacing=0 cellpadding=0><tr>";
366 $n = ($g_pcl_trace_entries[$i][index]+1)*10;
367 echo "<td width=".$n."><table width=100% border=0 cellspacing=0 cellpadding=0><tr>";
368
369 for ($j=0; $j<=$g_pcl_trace_entries[$i][index]; $j++)
370 {
371 if ($j==$g_pcl_trace_entries[$i][index])
372 {
373 if (($g_pcl_trace_entries[$i][type] == 1) || ($g_pcl_trace_entries[$i][type] == 2))
374 echo "<td width=10><div align=center><font size=2 face=$v_font>+</font></div></td>";
375 }
376 else
377 echo "<td width=10><div align=center><font size=2 face=$v_font>|</font></div></td>";
378 }
379 //echo "<td>&nbsp</td>";
380 echo "</tr></table></td>";
381
382 echo "<td width=2></td>";
383 switch ($g_pcl_trace_entries[$i][type]) {
384 case 1:
385 echo "<td><font size=2 face=$v_font>".$g_pcl_trace_entries[$i][name]."(".$g_pcl_trace_entries[$i][param].")</font></td>";
386 break;
387 case 2:
388 echo "<td><font size=2 face=$v_font>".$g_pcl_trace_entries[$i][name]."()=".$g_pcl_trace_entries[$i][param]."</font></td>";
389 break;
390 case 3:
391 case 4:
392 echo "<td><table width=100% border=0 cellspacing=0 cellpadding=0><td width=20></td><td>";
393 echo "<font size=2 face=$v_font>".$g_pcl_trace_entries[$i][message]."</font>";
394 echo "</td></table></td>";
395 break;
396 default:
397 echo "<td><font size=2 face=$v_font>".$g_pcl_trace_entries[$i][name]."(".$g_pcl_trace_entries[$i][param].")</font></td>";
398 }
399 echo "</tr></table></td>";
400 echo "<td width=5></td>";
401 echo "<td><font size=1 face=$v_font>".basename($g_pcl_trace_entries[$i][file])."</font></td>";
402 echo "<td width=5></td>";
403 echo "<td><font size=1 face=$v_font>".$g_pcl_trace_entries[$i][line]."</font></td>";
404 echo "</tr>";
405 }
406
407 // ----- Content footer
408 echo "</table>";
409
410 // ----- Trace footer
411 echo "</td>";
412 echo "<td bgcolor=#0000CC width=1>";
413 echo "</td>";
414 echo "</tr>";
415 echo "<tr bgcolor=#0000CC>";
416 echo "<td bgcolor=#0000CC width=1>";
417 echo "</td>";
418 echo "<td><div align=center><font color=#FFFFFF face=$v_font>&nbsp</font></div></td>";
419 echo "</tr>";
420 echo "</table>";
421 }
422 // --------------------------------------------------------------------------------
423
424 // --------------------------------------------------------------------------------
425 // Function : PclTraceAction()
426 // Description :
427 // Parameters :
428 // --------------------------------------------------------------------------------
429 function PclTraceAction($p_entry)
430 {
431 global $g_pcl_trace_level;
432 global $g_pcl_trace_mode;
433 global $g_pcl_trace_filename;
434 global $g_pcl_trace_name;
435 global $g_pcl_trace_index;
436 global $g_pcl_trace_entries;
437
438 if ($g_pcl_trace_mode == "normal")
439 {
440 for ($i=0; $i<$p_entry[index]; $i++)
441 echo "---";
442 if ($p_entry[type] == 1)
443 echo "<b>".$p_entry[name]."</b>(".$p_entry[param].") : ".$p_entry[message]." [".$p_entry[file].", ".$p_entry[line]."]<br>";
444 else if ($p_entry[type] == 2)
445 echo "<b>".$p_entry[name]."</b>()=".$p_entry[param]." : ".$p_entry[message]." [".$p_entry[file].", ".$p_entry[line]."]<br>";
446 else
447 echo $p_entry[message]." [".$p_entry[file].", ".$p_entry[line]."]<br>";
448 }
449 }
450 // --------------------------------------------------------------------------------
451
452 // ----- End of double include look
453 }
454 ?>