[ Index ]

PHP Cross Reference of Mambo 4.6.5

[ Variables ]     [ Functions ]     [ Classes ]     [ Constants ]     [ Statistics ]

title

Body

[close]

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

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