[ Index ]

PHP Cross Reference of Joomla 1.5.26 DE

title

Body

[close]

/administrator/includes/pcl/ -> pcltrace.lib.php (source)

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


Generated: Wed Mar 28 15:54:07 2012 Cross-referenced by PHPXref 0.7.1