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