123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454 |
- <?
- // --------------------------------------------------------------------------------
- // PhpConcept Library (PCL) Trace 1.0
- // --------------------------------------------------------------------------------
- // License GNU/GPL - Vincent Blavet - Janvier 2001
- // http://www.phpconcept.net & http://phpconcept.free.fr
- // --------------------------------------------------------------------------------
- // Français :
- // La description de l'usage de la librairie PCL Trace 1.0 n'est pas encore
- // disponible. Celle-ci n'est pour le moment distribuée qu'avec l'application
- // et la librairie PhpZip.
- // Une version indépendante sera bientot disponible sur http://www.phpconcept.net
- //
- // English :
- // The PCL Trace 1.0 library description is not available yet. This library is
- // released only with PhpZip application and library.
- // An independant release will be soon available on http://www.phpconcept.net
- //
- // --------------------------------------------------------------------------------
- //
- // * Avertissement :
- //
- // Cette librairie a été créée de façon non professionnelle.
- // Son usage est au risque et péril de celui qui l'utilise, en aucun cas l'auteur
- // de ce code ne pourra être tenu pour responsable des éventuels dégats qu'il pourrait
- // engendrer.
- // Il est entendu cependant que l'auteur a réalisé ce code par plaisir et n'y a
- // caché aucun virus, ni malveillance.
- // Cette libairie est distribuée sous la license GNU/GPL (http://www.gnu.org)
- //
- // * Auteur :
- //
- // Ce code a été écrit par Vincent Blavet (vincent@blavet.net) sur son temps
- // de loisir.
- //
- // --------------------------------------------------------------------------------
- // ----- Look for double include
- if (!defined("PCLTRACE_LIB"))
- {
- define( "PCLTRACE_LIB", 1 );
- // ----- Version
- $g_pcl_trace_version = "1.0";
- // ----- Internal variables
- // These values must be change by PclTrace library functions
- $g_pcl_trace_mode = "memory";
- $g_pcl_trace_filename = "trace.txt";
- $g_pcl_trace_name = array();
- $g_pcl_trace_index = 0;
- $g_pcl_trace_level = 0;
- //$g_pcl_trace_entries = array();
- // --------------------------------------------------------------------------------
- // Function : TrOn($p_level, $p_mode, $p_filename)
- // Description :
- // Parameters :
- // $p_level : Trace level
- // $p_mode : Mode of trace displaying :
- // 'normal' : messages are displayed at function call
- // 'memory' : messages are memorized in a table and can be display by
- // TrDisplay() function. (default)
- // 'log' : messages are writed in the file $p_filename
- // --------------------------------------------------------------------------------
- function TrOn($p_level=1, $p_mode="memory", $p_filename="trace.txt")
- {
- global $g_pcl_trace_level;
- global $g_pcl_trace_mode;
- global $g_pcl_trace_filename;
- global $g_pcl_trace_name;
- global $g_pcl_trace_index;
- global $g_pcl_trace_entries;
- // ----- Enable trace mode
- $g_pcl_trace_level = $p_level;
- // ----- Memorize mode and filename
- switch ($p_mode) {
- case "normal" :
- case "memory" :
- case "log" :
- $g_pcl_trace_mode = $p_mode;
- break;
- default :
- $g_pcl_trace_mode = "logged";
- }
- // ----- Memorize filename
- $g_pcl_trace_filename = $p_filename;
- }
- // --------------------------------------------------------------------------------
- // --------------------------------------------------------------------------------
- // Function : IsTrOn()
- // Description :
- // Return value :
- // The trace level (0 for disable).
- // --------------------------------------------------------------------------------
- function IsTrOn()
- {
- global $g_pcl_trace_level;
- return($g_pcl_trace_level);
- }
- // --------------------------------------------------------------------------------
- // --------------------------------------------------------------------------------
- // Function : TrOff()
- // Description :
- // Parameters :
- // --------------------------------------------------------------------------------
- function TrOff()
- {
- global $g_pcl_trace_level;
- global $g_pcl_trace_mode;
- global $g_pcl_trace_filename;
- global $g_pcl_trace_name;
- global $g_pcl_trace_index;
- // ----- Clean
- $g_pcl_trace_mode = "memory";
- unset($g_pcl_trace_entries);
- unset($g_pcl_trace_name);
- unset($g_pcl_trace_index);
- // ----- Switch off trace
- $g_pcl_trace_level = 0;
- }
- // --------------------------------------------------------------------------------
- // --------------------------------------------------------------------------------
- // Function : TrFctStart()
- // Description :
- // Just a trace function for debbugging purpose before I use a better tool !!!!
- // Start and stop of this function is by $g_pcl_trace_level global variable.
- // Parameters :
- // $p_level : Level of trace required.
- // --------------------------------------------------------------------------------
- function TrFctStart($p_file, $p_line, $p_name, $p_param="", $p_message="")
- {
- global $g_pcl_trace_level;
- global $g_pcl_trace_mode;
- global $g_pcl_trace_filename;
- global $g_pcl_trace_name;
- global $g_pcl_trace_index;
- global $g_pcl_trace_entries;
- // ----- Look for disabled trace
- if ($g_pcl_trace_level < 1)
- return;
- // ----- Add the function name in the list
- if (!isset($g_pcl_trace_name))
- $g_pcl_trace_name = $p_name;
- else
- $g_pcl_trace_name .= ",".$p_name;
- // ----- Update the function entry
- $i = sizeof($g_pcl_trace_entries);
- $g_pcl_trace_entries[$i][name] = $p_name;
- $g_pcl_trace_entries[$i][param] = $p_param;
- $g_pcl_trace_entries[$i][message] = "";
- $g_pcl_trace_entries[$i][file] = $p_file;
- $g_pcl_trace_entries[$i][line] = $p_line;
- $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index;
- $g_pcl_trace_entries[$i][type] = "1"; // means start of function
- // ----- Update the message entry
- if ($p_message != "")
- {
- $i = sizeof($g_pcl_trace_entries);
- $g_pcl_trace_entries[$i][name] = "";
- $g_pcl_trace_entries[$i][param] = "";
- $g_pcl_trace_entries[$i][message] = $p_message;
- $g_pcl_trace_entries[$i][file] = $p_file;
- $g_pcl_trace_entries[$i][line] = $p_line;
- $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index;
- $g_pcl_trace_entries[$i][type] = "3"; // means message
- }
- // ----- Action depending on mode
- PclTraceAction($g_pcl_trace_entries[$i]);
- // ----- Increment the index
- $g_pcl_trace_index++;
- }
- // --------------------------------------------------------------------------------
- // --------------------------------------------------------------------------------
- // Function : TrFctEnd()
- // Description :
- // Just a trace function for debbugging purpose before I use a better tool !!!!
- // Start and stop of this function is by $g_pcl_trace_level global variable.
- // Parameters :
- // $p_level : Level of trace required.
- // --------------------------------------------------------------------------------
- function TrFctEnd($p_file, $p_line, $p_return=1, $p_message="")
- {
- global $g_pcl_trace_level;
- global $g_pcl_trace_mode;
- global $g_pcl_trace_filename;
- global $g_pcl_trace_name;
- global $g_pcl_trace_index;
- global $g_pcl_trace_entries;
- // ----- Look for disabled trace
- if ($g_pcl_trace_level < 1)
- return;
- // ----- Extract the function name in the list
- // ----- Remove the function name in the list
- if (!($v_name = strrchr($g_pcl_trace_name, ",")))
- {
- $v_name = $g_pcl_trace_name;
- $g_pcl_trace_name = "";
- }
- else
- {
- $g_pcl_trace_name = substr($g_pcl_trace_name, 0, strlen($g_pcl_trace_name)-strlen($v_name));
- $v_name = substr($v_name, -strlen($v_name)+1);
- }
- // ----- Decrement the index
- $g_pcl_trace_index--;
- // ----- Update the message entry
- if ($p_message != "")
- {
- $i = sizeof($g_pcl_trace_entries);
- $g_pcl_trace_entries[$i][name] = "";
- $g_pcl_trace_entries[$i][param] = "";
- $g_pcl_trace_entries[$i][message] = $p_message;
- $g_pcl_trace_entries[$i][file] = $p_file;
- $g_pcl_trace_entries[$i][line] = $p_line;
- $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index;
- $g_pcl_trace_entries[$i][type] = "3"; // means message
- }
- // ----- Update the function entry
- $i = sizeof($g_pcl_trace_entries);
- $g_pcl_trace_entries[$i][name] = $v_name;
- $g_pcl_trace_entries[$i][param] = $p_return;
- $g_pcl_trace_entries[$i][message] = "";
- $g_pcl_trace_entries[$i][file] = $p_file;
- $g_pcl_trace_entries[$i][line] = $p_line;
- $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index;
- $g_pcl_trace_entries[$i][type] = "2"; // means end of function
- // ----- Action depending on mode
- PclTraceAction($g_pcl_trace_entries[$i]);
- }
- // --------------------------------------------------------------------------------
- // --------------------------------------------------------------------------------
- // Function : TrFctMessage()
- // Description :
- // Parameters :
- // --------------------------------------------------------------------------------
- function TrFctMessage($p_file, $p_line, $p_level, $p_message="")
- {
- global $g_pcl_trace_level;
- global $g_pcl_trace_mode;
- global $g_pcl_trace_filename;
- global $g_pcl_trace_name;
- global $g_pcl_trace_index;
- global $g_pcl_trace_entries;
- // ----- Look for disabled trace
- if ($g_pcl_trace_level < $p_level)
- return;
- // ----- Update the entry
- $i = sizeof($g_pcl_trace_entries);
- $g_pcl_trace_entries[$i][name] = "";
- $g_pcl_trace_entries[$i][param] = "";
- $g_pcl_trace_entries[$i][message] = $p_message;
- $g_pcl_trace_entries[$i][file] = $p_file;
- $g_pcl_trace_entries[$i][line] = $p_line;
- $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index;
- $g_pcl_trace_entries[$i][type] = "3"; // means message of function
- // ----- Action depending on mode
- PclTraceAction($g_pcl_trace_entries[$i]);
- }
- // --------------------------------------------------------------------------------
- // --------------------------------------------------------------------------------
- // Function : TrMessage()
- // Description :
- // Parameters :
- // --------------------------------------------------------------------------------
- function TrMessage($p_file, $p_line, $p_level, $p_message="")
- {
- global $g_pcl_trace_level;
- global $g_pcl_trace_mode;
- global $g_pcl_trace_filename;
- global $g_pcl_trace_name;
- global $g_pcl_trace_index;
- global $g_pcl_trace_entries;
- // ----- Look for disabled trace
- if ($g_pcl_trace_level < $p_level)
- return;
- // ----- Update the entry
- $i = sizeof($g_pcl_trace_entries);
- $g_pcl_trace_entries[$i][name] = "";
- $g_pcl_trace_entries[$i][param] = "";
- $g_pcl_trace_entries[$i][message] = $p_message;
- $g_pcl_trace_entries[$i][file] = $p_file;
- $g_pcl_trace_entries[$i][line] = $p_line;
- $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index;
- $g_pcl_trace_entries[$i][type] = "4"; // means simple message
- // ----- Action depending on mode
- PclTraceAction($g_pcl_trace_entries[$i]);
- }
- // --------------------------------------------------------------------------------
- // --------------------------------------------------------------------------------
- // Function : TrDisplay()
- // Description :
- // Parameters :
- // --------------------------------------------------------------------------------
- function TrDisplay()
- {
- global $g_pcl_trace_level;
- global $g_pcl_trace_mode;
- global $g_pcl_trace_filename;
- global $g_pcl_trace_name;
- global $g_pcl_trace_index;
- global $g_pcl_trace_entries;
- // ----- Look for disabled trace
- if (($g_pcl_trace_level <= 0) || ($g_pcl_trace_mode != "memory"))
- return;
- $v_font = "\"Verdana, Arial, Helvetica, sans-serif\"";
- // ----- Trace Header
- echo "<table width=100% border=0 cellspacing=0 cellpadding=0>";
- echo "<tr bgcolor=#0000CC>";
- echo "<td bgcolor=#0000CC width=1>";
- echo "</td>";
- echo "<td><div align=center><font size=3 color=#FFFFFF face=$v_font>Trace</font></div></td>";
- echo "</tr>";
- echo "<tr>";
- echo "<td bgcolor=#0000CC width=1>";
- echo "</td>";
- echo "<td>";
- // ----- Content header
- echo "<table width=100% border=0 cellspacing=0 cellpadding=0>";
- // ----- Display
- $v_again=0;
- for ($i=0; $i<sizeof($g_pcl_trace_entries); $i++)
- {
- // ---- Row header
- echo "<tr>";
- echo "<td><table width=100% border=0 cellspacing=0 cellpadding=0><tr>";
- $n = ($g_pcl_trace_entries[$i][index]+1)*10;
- echo "<td width=".$n."><table width=100% border=0 cellspacing=0 cellpadding=0><tr>";
- for ($j=0; $j<=$g_pcl_trace_entries[$i][index]; $j++)
- {
- if ($j==$g_pcl_trace_entries[$i][index])
- {
- if (($g_pcl_trace_entries[$i][type] == 1) || ($g_pcl_trace_entries[$i][type] == 2))
- echo "<td width=10><div align=center><font size=2 face=$v_font>+</font></div></td>";
- }
- else
- echo "<td width=10><div align=center><font size=2 face=$v_font>|</font></div></td>";
- }
- //echo "<td> </td>";
- echo "</tr></table></td>";
- echo "<td width=2></td>";
- switch ($g_pcl_trace_entries[$i][type]) {
- case 1:
- echo "<td><font size=2 face=$v_font>".$g_pcl_trace_entries[$i][name]."(".$g_pcl_trace_entries[$i][param].")</font></td>";
- break;
- case 2:
- echo "<td><font size=2 face=$v_font>".$g_pcl_trace_entries[$i][name]."()=".$g_pcl_trace_entries[$i][param]."</font></td>";
- break;
- case 3:
- case 4:
- echo "<td><table width=100% border=0 cellspacing=0 cellpadding=0><td width=20></td><td>";
- echo "<font size=2 face=$v_font>".$g_pcl_trace_entries[$i][message]."</font>";
- echo "</td></table></td>";
- break;
- default:
- echo "<td><font size=2 face=$v_font>".$g_pcl_trace_entries[$i][name]."(".$g_pcl_trace_entries[$i][param].")</font></td>";
- }
- echo "</tr></table></td>";
- echo "<td width=5></td>";
- echo "<td><font size=1 face=$v_font>".basename($g_pcl_trace_entries[$i][file])."</font></td>";
- echo "<td width=5></td>";
- echo "<td><font size=1 face=$v_font>".$g_pcl_trace_entries[$i][line]."</font></td>";
- echo "</tr>";
- }
- // ----- Content footer
- echo "</table>";
- // ----- Trace footer
- echo "</td>";
- echo "<td bgcolor=#0000CC width=1>";
- echo "</td>";
- echo "</tr>";
- echo "<tr bgcolor=#0000CC>";
- echo "<td bgcolor=#0000CC width=1>";
- echo "</td>";
- echo "<td><div align=center><font color=#FFFFFF face=$v_font> </font></div></td>";
- echo "</tr>";
- echo "</table>";
- }
- // --------------------------------------------------------------------------------
- // --------------------------------------------------------------------------------
- // Function : PclTraceAction()
- // Description :
- // Parameters :
- // --------------------------------------------------------------------------------
- function PclTraceAction($p_entry)
- {
- global $g_pcl_trace_level;
- global $g_pcl_trace_mode;
- global $g_pcl_trace_filename;
- global $g_pcl_trace_name;
- global $g_pcl_trace_index;
- global $g_pcl_trace_entries;
- if ($g_pcl_trace_mode == "normal")
- {
- for ($i=0; $i<$p_entry[index]; $i++)
- echo "---";
- if ($p_entry[type] == 1)
- echo "<b>".$p_entry[name]."</b>(".$p_entry[param].") : ".$p_entry[message]." [".$p_entry[file].", ".$p_entry[line]."]<br>";
- else if ($p_entry[type] == 2)
- echo "<b>".$p_entry[name]."</b>()=".$p_entry[param]." : ".$p_entry[message]." [".$p_entry[file].", ".$p_entry[line]."]<br>";
- else
- echo $p_entry[message]." [".$p_entry[file].", ".$p_entry[line]."]<br>";
- }
- }
- // --------------------------------------------------------------------------------
- // ----- End of double include look
- }
- ?>
|