PageRenderTime 50ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/e107_handlers/pcltrace.lib.php

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