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