[ Index ]
 

Code source de Joomla 1.0.13

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

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

   1  <?php
   2  /**
   3  * @version $Id: pcltrace.lib.php 49 2005-09-15 02:55:27Z rhuk $
   4  * @package Joomla
   5  */
   6  
   7  // no direct access
   8  defined( '_VALID_MOS' ) or die( 'Restricted access' );
   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  // Fran�ais :
  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 distribu�e qu'avec l'application
  19  //    et la librairie PhpZip.
  20  //    Une version ind�pendante 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� cr��e de fa�on non professionnelle.
  32  //    Son usage est au risque et p�ril de celui qui l'utilise, en aucun cas l'auteur
  33  //    de ce code ne pourra �tre tenu pour responsable des �ventuels d�gats qu'il pourrait
  34  //    engendrer.
  35  //    Il est entendu cependant que l'auteur a r�alis� ce code par plaisir et n'y a
  36  //    cach� aucun virus, ni malveillance.
  37  //    Cette libairie est distribu�e 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
  47  if (!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 = 1;
  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>&nbsp</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>&nbsp</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  ?>


Généré le : Wed Nov 21 14:43:32 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics