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 // --------------------------------------------------------------------------------
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
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
19 // --------------------------------------------------------------------------------
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
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)
33 // Ce code a été écrit par Vincent Blavet (vincent@blavet.net) sur son temps
36 // --------------------------------------------------------------------------------
38 // ----- Look for double include
39 if (!defined("PCLTRACE_LIB"))
41 define( "PCLTRACE_LIB", 1 );
44 $g_pcl_trace_version = "1.0";
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();
56 // --------------------------------------------------------------------------------
57 // Function : TrOn($p_level, $p_mode, $p_filename)
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")
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;
76 // ----- Enable trace mode
77 $g_pcl_trace_level = $p_level;
79 // ----- Memorize mode and filename
84 $g_pcl_trace_mode = $p_mode;
87 $g_pcl_trace_mode = "logged";
90 // ----- Memorize filename
91 $g_pcl_trace_filename = $p_filename;
93 // --------------------------------------------------------------------------------
95 // --------------------------------------------------------------------------------
96 // Function : IsTrOn()
99 // The trace level (0 for disable).
100 // --------------------------------------------------------------------------------
103 global $g_pcl_trace_level;
105 return($g_pcl_trace_level);
107 // --------------------------------------------------------------------------------
109 // --------------------------------------------------------------------------------
110 // Function : TrOff()
113 // --------------------------------------------------------------------------------
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;
123 $g_pcl_trace_mode = "memory";
124 unset($g_pcl_trace_entries);
125 unset($g_pcl_trace_name);
126 unset($g_pcl_trace_index);
128 // ----- Switch off trace
129 $g_pcl_trace_level = 0;
131 // --------------------------------------------------------------------------------
134 // --------------------------------------------------------------------------------
135 // Function : TrFctStart()
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.
140 // $p_level : Level of trace required.
141 // --------------------------------------------------------------------------------
142 function TrFctStart($p_file, $p_line, $p_name, $p_param="", $p_message="")
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;
151 // ----- Look for disabled trace
152 if ($g_pcl_trace_level < 1)
155 // ----- Add the function name in the list
156 if (!isset($g_pcl_trace_name))
157 $g_pcl_trace_name = $p_name;
159 $g_pcl_trace_name .= ",".$p_name;
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
171 // ----- Update the message entry
172 if ($p_message != "")
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
184 // ----- Action depending on mode
185 PclTraceAction($g_pcl_trace_entries[$i]);
187 // ----- Increment the index
188 $g_pcl_trace_index++
;
190 // --------------------------------------------------------------------------------
192 // --------------------------------------------------------------------------------
193 // Function : TrFctEnd()
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.
198 // $p_level : Level of trace required.
199 // --------------------------------------------------------------------------------
200 function TrFctEnd($p_file, $p_line, $p_return=1, $p_message="")
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;
209 // ----- Look for disabled trace
210 if ($g_pcl_trace_level < 1)
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, ",")))
217 $v_name = $g_pcl_trace_name;
218 $g_pcl_trace_name = "";
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);
226 // ----- Decrement the index
227 $g_pcl_trace_index--;
229 // ----- Update the message entry
230 if ($p_message != "")
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
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
252 // ----- Action depending on mode
253 PclTraceAction($g_pcl_trace_entries[$i]);
255 // --------------------------------------------------------------------------------
257 // --------------------------------------------------------------------------------
258 // Function : TrFctMessage()
261 // --------------------------------------------------------------------------------
262 function TrFctMessage($p_file, $p_line, $p_level, $p_message="")
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;
271 // ----- Look for disabled trace
272 if ($g_pcl_trace_level < $p_level)
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
285 // ----- Action depending on mode
286 PclTraceAction($g_pcl_trace_entries[$i]);
288 // --------------------------------------------------------------------------------
290 // --------------------------------------------------------------------------------
291 // Function : TrMessage()
294 // --------------------------------------------------------------------------------
295 function TrMessage($p_file, $p_line, $p_level, $p_message="")
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;
304 // ----- Look for disabled trace
305 if ($g_pcl_trace_level < $p_level)
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
318 // ----- Action depending on mode
319 PclTraceAction($g_pcl_trace_entries[$i]);
321 // --------------------------------------------------------------------------------
324 // --------------------------------------------------------------------------------
325 // Function : TrDisplay()
328 // --------------------------------------------------------------------------------
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;
338 // ----- Look for disabled trace
339 if (($g_pcl_trace_level <= 0) ||
($g_pcl_trace_mode != "memory"))
342 $v_font = "\"Verdana, Arial, Helvetica, sans-serif\"";
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>";
349 echo "<td><div align=center><font size=3 color=#FFFFFF face=$v_font>Trace</font></div></td>";
352 echo "<td bgcolor=#0000CC width=1>";
356 // ----- Content header
357 echo "<table width=100% border=0 cellspacing=0 cellpadding=0>";
361 for ($i=0; $i<sizeof($g_pcl_trace_entries); $i++
)
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>";
369 for ($j=0; $j<=$g_pcl_trace_entries[$i][index
]; $j++
)
371 if ($j==$g_pcl_trace_entries[$i][index
])
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>";
377 echo "<td width=10><div align=center><font size=2 face=$v_font>|</font></div></td>";
379 //echo "<td> </td>";
380 echo "</tr></table></td>";
382 echo "<td width=2></td>";
383 switch ($g_pcl_trace_entries[$i][type
]) {
385 echo "<td><font size=2 face=$v_font>".$g_pcl_trace_entries[$i][name
]."(".$g_pcl_trace_entries[$i][param
].")</font></td>";
388 echo "<td><font size=2 face=$v_font>".$g_pcl_trace_entries[$i][name
]."()=".$g_pcl_trace_entries[$i][param
]."</font></td>";
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>";
397 echo "<td><font size=2 face=$v_font>".$g_pcl_trace_entries[$i][name
]."(".$g_pcl_trace_entries[$i][param
].")</font></td>";
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>";
407 // ----- Content footer
410 // ----- Trace footer
412 echo "<td bgcolor=#0000CC width=1>";
415 echo "<tr bgcolor=#0000CC>";
416 echo "<td bgcolor=#0000CC width=1>";
418 echo "<td><div align=center><font color=#FFFFFF face=$v_font> </font></div></td>";
422 // --------------------------------------------------------------------------------
424 // --------------------------------------------------------------------------------
425 // Function : PclTraceAction()
428 // --------------------------------------------------------------------------------
429 function PclTraceAction($p_entry)
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;
438 if ($g_pcl_trace_mode == "normal")
440 for ($i=0; $i<$p_entry[index
]; $i++
)
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>";
447 echo $p_entry[message
]." [".$p_entry[file
].", ".$p_entry[line
]."]<br>";
450 // --------------------------------------------------------------------------------
452 // ----- End of double include look