/administrator/includes/pcl/pcltrace.lib.php
PHP | 459 lines | 264 code | 51 blank | 144 comment | 31 complexity | 57d0053cb7e3d5faa3165a340d204d42 MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0
- <?php
- /**
- * @version $Id: pcltrace.lib.php 10381 2008-06-01 03:35:53Z pasamio $
- * @package Joomla
- */
- // --------------------------------------------------------------------------------
- // 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 = 1;
- //$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
- }
- ?>