Guest User

Untitled

a guest
Feb 1st, 2012
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 151.54 KB | None | 0 0
  1. [0]  =>    
  2. [1]  =>     <span style="color: #000">&lt;?php
  3.  
  4. [2]  =>    
  5.  
  6. [3]  =>     </span><span style="color: #998; font-style: italic">/**
  7.  
  8. [4]  =>     &nbsp;*&nbsp;This&nbsp;file&nbsp;is&nbsp;part&nbsp;of&nbsp;the&nbsp;Nette&nbsp;Framework&nbsp;(http://nette.org)
  9.  
  10. [5]  =>     &nbsp;*
  11.  
  12. [6]  =>     &nbsp;*&nbsp;Copyright&nbsp;(c)&nbsp;2004&nbsp;David&nbsp;Grudl&nbsp;(http://davidgrudl.com)
  13.  
  14. [7]  =>     &nbsp;*
  15.  
  16. [8]  =>     &nbsp;*&nbsp;For&nbsp;the&nbsp;full&nbsp;copyright&nbsp;and&nbsp;license&nbsp;information,&nbsp;please&nbsp;view
  17.  
  18. [9]  =>     &nbsp;*&nbsp;the&nbsp;file&nbsp;license.txt&nbsp;that&nbsp;was&nbsp;distributed&nbsp;with&nbsp;this&nbsp;source&nbsp;code.
  19.  
  20. [10]     =>     &nbsp;*/
  21.  
  22. [11]     =>    
  23.  
  24. [12]     =>     </span><span style="color: #D24; font-weight: bold">namespace&nbsp;</span><span style="color: #000">Nette</span><span style="color: #D24; font-weight: bold">\</span><span style="color: #000">Diagnostics</span><span style="color: #D24; font-weight: bold">;
  25.  
  26. [13]     =>    
  27.  
  28. [14]     =>     use&nbsp;</span><span style="color: #000">Nette</span><span style="color: #D24; font-weight: bold">;
  29.  
  30. [15]     =>    
  31.  
  32. [16]     =>    
  33.  
  34. [17]     =>    
  35.  
  36. [18]     =>     </span><span style="color: #998; font-style: italic">/**
  37.  
  38. [19]     =>     &nbsp;*&nbsp;Debugger:&nbsp;displays&nbsp;and&nbsp;logs&nbsp;errors.
  39.  
  40. [20]     =>     &nbsp;*
  41.  
  42. [21]     =>     &nbsp;*&nbsp;Behavior&nbsp;is&nbsp;determined&nbsp;by&nbsp;two&nbsp;factors:&nbsp;mode&nbsp;&amp;&nbsp;output
  43.  
  44. [22]     =>     &nbsp;*&nbsp;-&nbsp;modes:&nbsp;production&nbsp;/&nbsp;development
  45.  
  46. [23]     =>     &nbsp;*&nbsp;-&nbsp;output:&nbsp;HTML&nbsp;/&nbsp;AJAX&nbsp;/&nbsp;CLI&nbsp;/&nbsp;other&nbsp;(e.g.&nbsp;XML)
  47.  
  48. [24]     =>     &nbsp;*
  49.  
  50. [25]     =>     &nbsp;*&nbsp;@author&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;David&nbsp;Grudl
  51.  
  52. [26]     =>     &nbsp;*/
  53.  
  54. [27]     =>     </span><span style="color: #D24; font-weight: bold">final&nbsp;class&nbsp;</span><span style="color: #000">Debugger
  55.  
  56. [28]     =>     </span><span style="color: #D24; font-weight: bold">{
  57.  
  58. [29]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;bool&nbsp;in&nbsp;production&nbsp;mode&nbsp;is&nbsp;suppressed&nbsp;any&nbsp;debugging&nbsp;output&nbsp;*/
  59.  
  60. [30]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$productionMode</span><span style="color: #D24; font-weight: bold">;
  61.  
  62. [31]     =>    
  63.  
  64. [32]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;bool&nbsp;in&nbsp;console&nbsp;mode&nbsp;is&nbsp;omitted&nbsp;HTML&nbsp;output&nbsp;*/
  65.  
  66. [33]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$consoleMode</span><span style="color: #D24; font-weight: bold">;
  67.  
  68. [34]     =>    
  69.  
  70. [35]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;int&nbsp;timestamp&nbsp;with&nbsp;microseconds&nbsp;of&nbsp;the&nbsp;start&nbsp;of&nbsp;the&nbsp;request&nbsp;*/
  71.  
  72. [36]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$time</span><span style="color: #D24; font-weight: bold">;
  73.  
  74. [37]     =>    
  75.  
  76. [38]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;bool&nbsp;is&nbsp;AJAX&nbsp;request&nbsp;detected?&nbsp;*/
  77.  
  78. [39]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">private&nbsp;static&nbsp;</span><span style="color: #000">$ajaxDetected</span><span style="color: #D24; font-weight: bold">;
  79.  
  80. [40]     =>    
  81.  
  82. [41]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;string&nbsp;&nbsp;requested&nbsp;URI&nbsp;or&nbsp;command&nbsp;line&nbsp;*/
  83.  
  84. [42]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$source</span><span style="color: #D24; font-weight: bold">;
  85.  
  86. [43]     =>    
  87.  
  88. [44]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;string&nbsp;URL&nbsp;pattern&nbsp;mask&nbsp;to&nbsp;open&nbsp;editor&nbsp;*/
  89.  
  90. [45]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$editor&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #080">'editor://open/?file=%file&amp;line=%line'</span><span style="color: #D24; font-weight: bold">;
  91.  
  92. [46]     =>    
  93.  
  94. [47]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;string&nbsp;command&nbsp;to&nbsp;open&nbsp;browser&nbsp;(use&nbsp;'start&nbsp;""'&nbsp;in&nbsp;Windows)&nbsp;*/
  95.  
  96. [48]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$browser</span><span style="color: #D24; font-weight: bold">;
  97.  
  98. [49]     =>    
  99.  
  100. [50]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/*********************&nbsp;Debugger::dump()&nbsp;****************d*g**/
  101.  
  102. [51]     =>    
  103.  
  104. [52]     =>     &nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;@var&nbsp;int&nbsp;&nbsp;how&nbsp;many&nbsp;nested&nbsp;levels&nbsp;of&nbsp;array/object&nbsp;properties&nbsp;display&nbsp;{@link&nbsp;Debugger::dump()}&nbsp;*/
  105.  
  106. [53]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$maxDepth&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">3</span><span style="color: #D24; font-weight: bold">;
  107.  
  108. [54]     =>    
  109.  
  110. [55]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;int&nbsp;&nbsp;how&nbsp;long&nbsp;strings&nbsp;display&nbsp;{@link&nbsp;Debugger::dump()}&nbsp;*/
  111.  
  112. [56]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$maxLen&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">150</span><span style="color: #D24; font-weight: bold">;
  113.  
  114. [57]     =>    
  115.  
  116. [58]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;bool&nbsp;display&nbsp;location?&nbsp;{@link&nbsp;Debugger::dump()}&nbsp;*/
  117.  
  118. [59]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$showLocation&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">;
  119.  
  120. [60]     =>    
  121.  
  122. [61]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/*********************&nbsp;errors&nbsp;and&nbsp;exceptions&nbsp;reporting&nbsp;****************d*g**/
  123.  
  124. [62]     =>    
  125.  
  126. [63]     =>     &nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;server&nbsp;modes&nbsp;{@link&nbsp;Debugger::enable()}&nbsp;*/
  127.  
  128. [64]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">const&nbsp;</span><span style="color: #000">DEVELOPMENT&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">,
  129.  
  130. [65]     =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">PRODUCTION&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">TRUE</span><span style="color: #D24; font-weight: bold">,
  131.  
  132. [66]     =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">DETECT&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">NULL</span><span style="color: #D24; font-weight: bold">;
  133.  
  134. [67]     =>    
  135.  
  136. [68]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;BlueScreen&nbsp;*/
  137.  
  138. [69]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$blueScreen</span><span style="color: #D24; font-weight: bold">;
  139.  
  140. [70]     =>    
  141.  
  142. [71]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;bool|int&nbsp;determines&nbsp;whether&nbsp;any&nbsp;error&nbsp;will&nbsp;cause&nbsp;immediate&nbsp;death;&nbsp;if&nbsp;integer&nbsp;that&nbsp;it's&nbsp;matched&nbsp;against&nbsp;error&nbsp;severity&nbsp;*/
  143.  
  144. [72]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$strictMode&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">;&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;$immediateDeath
  145.  
  146. [73]     =>    
  147.  
  148. [74]     =>     &nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;@var&nbsp;bool&nbsp;disables&nbsp;the&nbsp;@&nbsp;(shut-up)&nbsp;operator&nbsp;so&nbsp;that&nbsp;notices&nbsp;and&nbsp;warnings&nbsp;are&nbsp;no&nbsp;longer&nbsp;hidden&nbsp;*/
  149.  
  150. [75]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$scream&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">;
  151.  
  152. [76]     =>    
  153.  
  154. [77]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;array&nbsp;of&nbsp;callbacks&nbsp;specifies&nbsp;the&nbsp;functions&nbsp;that&nbsp;are&nbsp;automatically&nbsp;called&nbsp;after&nbsp;fatal&nbsp;error&nbsp;*/
  155.  
  156. [78]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$onFatalError&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;array();
  157.  
  158. [79]     =>    
  159.  
  160. [80]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;bool&nbsp;{@link&nbsp;Debugger::enable()}&nbsp;*/
  161.  
  162. [81]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">private&nbsp;static&nbsp;</span><span style="color: #000">$enabled&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">;
  163.  
  164. [82]     =>    
  165.  
  166. [83]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;mixed&nbsp;{@link&nbsp;Debugger::tryError()}&nbsp;FALSE&nbsp;means&nbsp;catching&nbsp;is&nbsp;disabled&nbsp;*/
  167.  
  168. [84]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">private&nbsp;static&nbsp;</span><span style="color: #000">$lastError&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">;
  169.  
  170. [85]     =>    
  171.  
  172. [86]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/*********************&nbsp;logging&nbsp;****************d*g**/
  173.  
  174. [87]     =>    
  175.  
  176. [88]     =>     &nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;@var&nbsp;Logger&nbsp;*/
  177.  
  178. [89]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$logger</span><span style="color: #D24; font-weight: bold">;
  179.  
  180. [90]     =>    
  181.  
  182. [91]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;FireLogger&nbsp;*/
  183.  
  184. [92]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$fireLogger</span><span style="color: #D24; font-weight: bold">;
  185.  
  186. [93]     =>    
  187.  
  188. [94]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;string&nbsp;name&nbsp;of&nbsp;the&nbsp;directory&nbsp;where&nbsp;errors&nbsp;should&nbsp;be&nbsp;logged;&nbsp;FALSE&nbsp;means&nbsp;that&nbsp;logging&nbsp;is&nbsp;disabled&nbsp;*/
  189.  
  190. [95]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$logDirectory</span><span style="color: #D24; font-weight: bold">;
  191.  
  192. [96]     =>    
  193.  
  194. [97]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;string&nbsp;email&nbsp;to&nbsp;sent&nbsp;error&nbsp;notifications&nbsp;*/
  195.  
  196. [98]     =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$email</span><span style="color: #D24; font-weight: bold">;
  197.  
  198. [99]     =>    
  199.  
  200. [100]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@deprecated&nbsp;*/
  201.  
  202. [101]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$mailer</span><span style="color: #D24; font-weight: bold">;
  203.  
  204. [102]    =>    
  205.  
  206. [103]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@deprecated&nbsp;*/
  207.  
  208. [104]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$emailSnooze</span><span style="color: #D24; font-weight: bold">;
  209.  
  210. [105]    =>    
  211.  
  212. [106]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/*********************&nbsp;debug&nbsp;bar&nbsp;****************d*g**/
  213.  
  214. [107]    =>    
  215.  
  216. [108]    =>     &nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;@var&nbsp;Bar&nbsp;*/
  217.  
  218. [109]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;</span><span style="color: #000">$bar</span><span style="color: #D24; font-weight: bold">;
  219.  
  220. [110]    =>    
  221.  
  222. [111]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;DefaultBarPanel&nbsp;*/
  223.  
  224. [112]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">private&nbsp;static&nbsp;</span><span style="color: #000">$errorPanel</span><span style="color: #D24; font-weight: bold">;
  225.  
  226. [113]    =>    
  227.  
  228. [114]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@var&nbsp;DefaultBarPanel&nbsp;*/
  229.  
  230. [115]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">private&nbsp;static&nbsp;</span><span style="color: #000">$dumpPanel</span><span style="color: #D24; font-weight: bold">;
  231.  
  232. [116]    =>    
  233.  
  234. [117]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/*********************&nbsp;Firebug&nbsp;extension&nbsp;****************d*g**/
  235.  
  236. [118]    =>    
  237.  
  238. [119]    =>     &nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;{@link&nbsp;Debugger::log()}&nbsp;and&nbsp;{@link&nbsp;Debugger::fireLog()}&nbsp;*/
  239.  
  240. [120]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">const&nbsp;</span><span style="color: #000">DEBUG&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #080">'debug'</span><span style="color: #D24; font-weight: bold">,
  241.  
  242. [121]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">INFO&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #080">'info'</span><span style="color: #D24; font-weight: bold">,
  243.  
  244. [122]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">WARNING&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #080">'warning'</span><span style="color: #D24; font-weight: bold">,
  245.  
  246. [123]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">ERROR&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #080">'error'</span><span style="color: #D24; font-weight: bold">,
  247.  
  248. [124]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">CRITICAL&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #080">'critical'</span><span style="color: #D24; font-weight: bold">;
  249.  
  250. [125]    =>    
  251.  
  252. [126]    =>    
  253.  
  254. [127]    =>    
  255.  
  256. [128]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**
  257.  
  258. [129]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Static&nbsp;class&nbsp;-&nbsp;cannot&nbsp;be&nbsp;instantiated.
  259.  
  260. [130]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
  261.  
  262. [131]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">final&nbsp;public&nbsp;function&nbsp;</span><span style="color: #000">__construct</span><span style="color: #D24; font-weight: bold">()
  263.  
  264. [132]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  265.  
  266. [133]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;</span><span style="color: #000">Nette</span><span style="color: #D24; font-weight: bold">\</span><span style="color: #000">StaticClassException</span><span style="color: #D24; font-weight: bold">;
  267.  
  268. [134]    =>     &nbsp;&nbsp;&nbsp;&nbsp;}
  269.  
  270. [135]    =>    
  271.  
  272. [136]    =>    
  273.  
  274. [137]    =>    
  275.  
  276. [138]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**
  277.  
  278. [139]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Static&nbsp;class&nbsp;constructor.
  279.  
  280. [140]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@internal
  281.  
  282. [141]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
  283.  
  284. [142]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;function&nbsp;</span><span style="color: #000">_init</span><span style="color: #D24; font-weight: bold">()
  285.  
  286. [143]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  287.  
  288. [144]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$time&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">microtime</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">TRUE</span><span style="color: #D24; font-weight: bold">);
  289.  
  290. [145]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$consoleMode&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">PHP_SAPI&nbsp;</span><span style="color: #D24; font-weight: bold">===&nbsp;</span><span style="color: #080">'cli'</span><span style="color: #D24; font-weight: bold">;
  291.  
  292. [146]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$productionMode&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">DETECT</span><span style="color: #D24; font-weight: bold">;
  293.  
  294. [147]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$consoleMode</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  295.  
  296. [148]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$source&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;empty(</span><span style="color: #000">$_SERVER</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'argv'</span><span style="color: #D24; font-weight: bold">])&nbsp;?&nbsp;</span><span style="color: #080">'cli'&nbsp;</span><span style="color: #D24; font-weight: bold">:&nbsp;</span><span style="color: #080">'cli:&nbsp;'&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">implode</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'&nbsp;'</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$_SERVER</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'argv'</span><span style="color: #D24; font-weight: bold">]);
  297.  
  298. [149]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{
  299.  
  300. [150]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$ajaxDetected&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;isset(</span><span style="color: #000">$_SERVER</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'HTTP_X_REQUESTED_WITH'</span><span style="color: #D24; font-weight: bold">])&nbsp;&amp;&amp;&nbsp;</span><span style="color: #000">$_SERVER</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'HTTP_X_REQUESTED_WITH'</span><span style="color: #D24; font-weight: bold">]&nbsp;===&nbsp;</span><span style="color: #080">'XMLHttpRequest'</span><span style="color: #D24; font-weight: bold">;
  301.  
  302. [151]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(isset(</span><span style="color: #000">$_SERVER</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'REQUEST_URI'</span><span style="color: #D24; font-weight: bold">]))&nbsp;{
  303.  
  304. [152]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$source&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;(isset(</span><span style="color: #000">$_SERVER</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'HTTPS'</span><span style="color: #D24; font-weight: bold">])&nbsp;&amp;&amp;&nbsp;</span><span style="color: #000">strcasecmp</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$_SERVER</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'HTTPS'</span><span style="color: #D24; font-weight: bold">],&nbsp;</span><span style="color: #080">'off'</span><span style="color: #D24; font-weight: bold">)&nbsp;?&nbsp;</span><span style="color: #080">'https://'&nbsp;</span><span style="color: #D24; font-weight: bold">:&nbsp;</span><span style="color: #080">'http://'</span><span style="color: #D24; font-weight: bold">)
  305.  
  306. [153]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&nbsp;(isset(</span><span style="color: #000">$_SERVER</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'HTTP_HOST'</span><span style="color: #D24; font-weight: bold">])&nbsp;?&nbsp;</span><span style="color: #000">$_SERVER</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'HTTP_HOST'</span><span style="color: #D24; font-weight: bold">]&nbsp;:&nbsp;(isset(</span><span style="color: #000">$_SERVER</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'SERVER_NAME'</span><span style="color: #D24; font-weight: bold">])&nbsp;?&nbsp;</span><span style="color: #000">$_SERVER</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'SERVER_NAME'</span><span style="color: #D24; font-weight: bold">]&nbsp;:&nbsp;</span><span style="color: #080">''</span><span style="color: #D24; font-weight: bold">))
  307.  
  308. [154]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&nbsp;</span><span style="color: #000">$_SERVER</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'REQUEST_URI'</span><span style="color: #D24; font-weight: bold">];
  309.  
  310. [155]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  311.  
  312. [156]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  313.  
  314. [157]    =>    
  315.  
  316. [158]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logger&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;new&nbsp;</span><span style="color: #000">Logger</span><span style="color: #D24; font-weight: bold">;
  317.  
  318. [159]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logDirectory&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;&amp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logger</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">directory</span><span style="color: #D24; font-weight: bold">;
  319.  
  320. [160]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$email&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;&amp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logger</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">email</span><span style="color: #D24; font-weight: bold">;
  321.  
  322. [161]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$mailer&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;&amp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logger</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">mailer</span><span style="color: #D24; font-weight: bold">;
  323.  
  324. [162]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$emailSnooze&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;&amp;&nbsp;</span><span style="color: #000">Logger</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$emailSnooze</span><span style="color: #D24; font-weight: bold">;
  325.  
  326. [163]    =>    
  327.  
  328. [164]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$fireLogger&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;new&nbsp;</span><span style="color: #000">FireLogger</span><span style="color: #D24; font-weight: bold">;
  329.  
  330. [165]    =>    
  331.  
  332. [166]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$blueScreen&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;new&nbsp;</span><span style="color: #000">BlueScreen</span><span style="color: #D24; font-weight: bold">;
  333.  
  334. [167]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$blueScreen</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">addPanel</span><span style="color: #D24; font-weight: bold">(function(</span><span style="color: #000">$e</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  335.  
  336. [168]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">$e&nbsp;</span><span style="color: #D24; font-weight: bold">instanceof&nbsp;</span><span style="color: #000">Nette</span><span style="color: #D24; font-weight: bold">\</span><span style="color: #000">Templating</span><span style="color: #D24; font-weight: bold">\</span><span style="color: #000">FilterException</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  337.  
  338. [169]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;array(
  339.  
  340. [170]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #080">'tab'&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #080">'Template'</span><span style="color: #D24; font-weight: bold">,
  341.  
  342. [171]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #080">'panel'&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #080">'&lt;p&gt;&lt;b&gt;File:&lt;/b&gt;&nbsp;'&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">Helpers</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">editorLink</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$e</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">sourceFile</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$e</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">sourceLine</span><span style="color: #D24; font-weight: bold">)
  343.  
  344. [172]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&nbsp;</span><span style="color: #080">'&amp;nbsp;&nbsp;&lt;b&gt;Line:&lt;/b&gt;&nbsp;'&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;(</span><span style="color: #000">$e</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">sourceLine&nbsp;</span><span style="color: #D24; font-weight: bold">?&nbsp;</span><span style="color: #000">$e</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">sourceLine&nbsp;</span><span style="color: #D24; font-weight: bold">:&nbsp;</span><span style="color: #080">'n/a'</span><span style="color: #D24; font-weight: bold">)&nbsp;.&nbsp;</span><span style="color: #080">'&lt;/p&gt;'
  345.  
  346. [173]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;(</span><span style="color: #000">$e</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">sourceLine&nbsp;</span><span style="color: #D24; font-weight: bold">?&nbsp;</span><span style="color: #080">'&lt;pre&gt;'&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">BlueScreen</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">highlightFile</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$e</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">sourceFile</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$e</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">sourceLine</span><span style="color: #D24; font-weight: bold">)&nbsp;.&nbsp;</span><span style="color: #080">'&lt;/pre&gt;'&nbsp;</span><span style="color: #D24; font-weight: bold">:&nbsp;</span><span style="color: #080">''</span><span style="color: #D24; font-weight: bold">)
  347.  
  348. [174]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
  349.  
  350. [175]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;(</span><span style="color: #000">$e&nbsp;</span><span style="color: #D24; font-weight: bold">instanceof&nbsp;</span><span style="color: #000">Nette</span><span style="color: #D24; font-weight: bold">\</span><span style="color: #000">Utils</span><span style="color: #D24; font-weight: bold">\</span><span style="color: #000">NeonException&nbsp;</span><span style="color: #D24; font-weight: bold">&amp;&amp;&nbsp;</span><span style="color: #000">preg_match</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'#line&nbsp;(\d+)#'</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$e</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">getMessage</span><span style="color: #D24; font-weight: bold">(),&nbsp;</span><span style="color: #000">$m</span><span style="color: #D24; font-weight: bold">))&nbsp;{
  351.  
  352. [176]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">$item&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">Helpers</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">findTrace</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$e</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">getTrace</span><span style="color: #D24; font-weight: bold">(),&nbsp;</span><span style="color: #080">'Nette\Config\Adapters\NeonAdapter::load'</span><span style="color: #D24; font-weight: bold">))&nbsp;{
  353.  
  354. [177]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;array(
  355.  
  356. [178]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #080">'tab'&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #080">'NEON'</span><span style="color: #D24; font-weight: bold">,
  357.  
  358. [179]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #080">'panel'&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #080">'&lt;p&gt;&lt;b&gt;File:&lt;/b&gt;&nbsp;'&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">Helpers</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">editorLink</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$item</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'args'</span><span style="color: #D24; font-weight: bold">][</span><span style="color: #000">0</span><span style="color: #D24; font-weight: bold">],&nbsp;</span><span style="color: #000">$m</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">1</span><span style="color: #D24; font-weight: bold">])&nbsp;.&nbsp;</span><span style="color: #080">'&amp;nbsp;&nbsp;&lt;b&gt;Line:&lt;/b&gt;&nbsp;'&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">$m</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">1</span><span style="color: #D24; font-weight: bold">]&nbsp;.&nbsp;</span><span style="color: #080">'&lt;/p&gt;'
  359.  
  360. [180]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #080">'&lt;pre&gt;'&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">BlueScreen</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">highlightFile</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$item</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'args'</span><span style="color: #D24; font-weight: bold">][</span><span style="color: #000">0</span><span style="color: #D24; font-weight: bold">],&nbsp;</span><span style="color: #000">$m</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">1</span><span style="color: #D24; font-weight: bold">])&nbsp;.&nbsp;</span><span style="color: #080">'&lt;/pre&gt;'
  361.  
  362. [181]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">);
  363.  
  364. [182]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;(</span><span style="color: #000">$item&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">Helpers</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">findTrace</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$e</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">getTrace</span><span style="color: #D24; font-weight: bold">(),&nbsp;</span><span style="color: #080">'Nette\Utils\Neon::decode'</span><span style="color: #D24; font-weight: bold">))&nbsp;{
  365.  
  366. [183]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;array(
  367.  
  368. [184]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #080">'tab'&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #080">'NEON'</span><span style="color: #D24; font-weight: bold">,
  369.  
  370. [185]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #080">'panel'&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #080">'&lt;pre&gt;'&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">BlueScreen</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">highlightFile</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$item</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'args'</span><span style="color: #D24; font-weight: bold">][</span><span style="color: #000">0</span><span style="color: #D24; font-weight: bold">],&nbsp;</span><span style="color: #000">$m</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">1</span><span style="color: #D24; font-weight: bold">])&nbsp;.&nbsp;</span><span style="color: #080">'&lt;/pre&gt;'
  371.  
  372. [186]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">);
  373.  
  374. [187]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  375.  
  376. [188]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  377.  
  378. [189]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});
  379.  
  380. [190]    =>    
  381.  
  382. [191]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$bar&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;new&nbsp;</span><span style="color: #000">Bar</span><span style="color: #D24; font-weight: bold">;
  383.  
  384. [192]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$bar</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">addPanel</span><span style="color: #D24; font-weight: bold">(new&nbsp;</span><span style="color: #000">DefaultBarPanel</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'time'</span><span style="color: #D24; font-weight: bold">));
  385.  
  386. [193]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$bar</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">addPanel</span><span style="color: #D24; font-weight: bold">(new&nbsp;</span><span style="color: #000">DefaultBarPanel</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'memory'</span><span style="color: #D24; font-weight: bold">));
  387.  
  388. [194]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$bar</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">addPanel</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$errorPanel&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;new&nbsp;</span><span style="color: #000">DefaultBarPanel</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'errors'</span><span style="color: #D24; font-weight: bold">));&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;filled&nbsp;by&nbsp;_errorHandler()
  389.  
  390. [195]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$bar</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">addPanel</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$dumpPanel&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;new&nbsp;</span><span style="color: #000">DefaultBarPanel</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'dumps'</span><span style="color: #D24; font-weight: bold">));&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;filled&nbsp;by&nbsp;barDump()
  391.  
  392. [196]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">}
  393.  
  394. [197]    =>    
  395.  
  396. [198]    =>    
  397.  
  398. [199]    =>    
  399.  
  400. [200]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/*********************&nbsp;errors&nbsp;and&nbsp;exceptions&nbsp;reporting&nbsp;****************d*g**/
  401.  
  402. [201]    =>    
  403.  
  404. [202]    =>    
  405.  
  406. [203]    =>    
  407.  
  408. [204]    =>     &nbsp;&nbsp;&nbsp;&nbsp;/**
  409.  
  410. [205]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Enables&nbsp;displaying&nbsp;or&nbsp;logging&nbsp;errors&nbsp;and&nbsp;exceptions.
  411.  
  412. [206]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;mixed&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;production,&nbsp;development&nbsp;mode,&nbsp;autodetection&nbsp;or&nbsp;IP&nbsp;address(es)&nbsp;whitelist.
  413.  
  414. [207]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error&nbsp;log&nbsp;directory;&nbsp;enables&nbsp;logging&nbsp;in&nbsp;production&nbsp;mode,&nbsp;FALSE&nbsp;means&nbsp;that&nbsp;logging&nbsp;is&nbsp;disabled
  415.  
  416. [208]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;administrator&nbsp;email;&nbsp;enables&nbsp;email&nbsp;sending&nbsp;in&nbsp;production&nbsp;mode
  417.  
  418. [209]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void
  419.  
  420. [210]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
  421.  
  422. [211]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;function&nbsp;</span><span style="color: #000">enable</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$mode&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">NULL</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$logDirectory&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">NULL</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$email&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">NULL</span><span style="color: #D24; font-weight: bold">)
  423.  
  424. [212]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  425.  
  426. [213]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">error_reporting</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">E_ALL&nbsp;</span><span style="color: #D24; font-weight: bold">|&nbsp;</span><span style="color: #000">E_STRICT</span><span style="color: #D24; font-weight: bold">);
  427.  
  428. [214]    =>    
  429.  
  430. [215]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;production/development&nbsp;mode&nbsp;detection
  431.  
  432. [216]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">if&nbsp;(</span><span style="color: #000">is_bool</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$mode</span><span style="color: #D24; font-weight: bold">))&nbsp;{
  433.  
  434. [217]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$productionMode&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">$mode</span><span style="color: #D24; font-weight: bold">;
  435.  
  436. [218]    =>    
  437.  
  438. [219]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;(</span><span style="color: #000">$mode&nbsp;</span><span style="color: #D24; font-weight: bold">!==&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">DETECT&nbsp;</span><span style="color: #D24; font-weight: bold">||&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$productionMode&nbsp;</span><span style="color: #D24; font-weight: bold">===&nbsp;</span><span style="color: #000">NULL</span><span style="color: #D24; font-weight: bold">)&nbsp;{&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;IP&nbsp;addresses&nbsp;or&nbsp;computer&nbsp;names&nbsp;whitelist&nbsp;detection
  439.  
  440. [220]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$mode&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">is_string</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$mode</span><span style="color: #D24; font-weight: bold">)&nbsp;?&nbsp;</span><span style="color: #000">preg_split</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'#[,\s]+#'</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$mode</span><span style="color: #D24; font-weight: bold">)&nbsp;:&nbsp;array(</span><span style="color: #000">$mode</span><span style="color: #D24; font-weight: bold">);
  441.  
  442. [221]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$mode</span><span style="color: #D24; font-weight: bold">[]&nbsp;=&nbsp;</span><span style="color: #080">'127.0.0.1'</span><span style="color: #D24; font-weight: bold">;
  443.  
  444. [222]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$mode</span><span style="color: #D24; font-weight: bold">[]&nbsp;=&nbsp;</span><span style="color: #080">'::1'</span><span style="color: #D24; font-weight: bold">;
  445.  
  446. [223]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$productionMode&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;!</span><span style="color: #000">in_array</span><span style="color: #D24; font-weight: bold">(isset(</span><span style="color: #000">$_SERVER</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'REMOTE_ADDR'</span><span style="color: #D24; font-weight: bold">])&nbsp;?&nbsp;</span><span style="color: #000">$_SERVER</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'REMOTE_ADDR'</span><span style="color: #D24; font-weight: bold">]&nbsp;:&nbsp;</span><span style="color: #000">php_uname</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'n'</span><span style="color: #D24; font-weight: bold">),&nbsp;</span><span style="color: #000">$mode</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">TRUE</span><span style="color: #D24; font-weight: bold">);
  447.  
  448. [224]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  449.  
  450. [225]    =>    
  451.  
  452. [226]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;logging&nbsp;configuration
  453.  
  454. [227]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">if&nbsp;(</span><span style="color: #000">is_string</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$logDirectory</span><span style="color: #D24; font-weight: bold">))&nbsp;{
  455.  
  456. [228]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logDirectory&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">realpath</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$logDirectory</span><span style="color: #D24; font-weight: bold">);
  457.  
  458. [229]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logDirectory&nbsp;</span><span style="color: #D24; font-weight: bold">===&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  459.  
  460. [230]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;</span><span style="color: #000">Nette</span><span style="color: #D24; font-weight: bold">\</span><span style="color: #000">DirectoryNotFoundException</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">"Directory&nbsp;'</span><span style="color: #000">$logDirectory</span><span style="color: #080">'&nbsp;is&nbsp;not&nbsp;found."</span><span style="color: #D24; font-weight: bold">);
  461.  
  462. [231]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  463.  
  464. [232]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;(</span><span style="color: #000">$logDirectory&nbsp;</span><span style="color: #D24; font-weight: bold">===&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  465.  
  466. [233]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logDirectory&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">;
  467.  
  468. [234]    =>    
  469.  
  470. [235]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logDirectory&nbsp;</span><span style="color: #D24; font-weight: bold">===&nbsp;</span><span style="color: #000">NULL</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  471.  
  472. [236]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logDirectory&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">defined</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'APP_DIR'</span><span style="color: #D24; font-weight: bold">)&nbsp;?&nbsp;</span><span style="color: #000">APP_DIR&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #080">'/../log'&nbsp;</span><span style="color: #D24; font-weight: bold">:&nbsp;</span><span style="color: #000">getcwd</span><span style="color: #D24; font-weight: bold">()&nbsp;.&nbsp;</span><span style="color: #080">'/log'</span><span style="color: #D24; font-weight: bold">;
  473.  
  474. [237]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  475.  
  476. [238]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logDirectory</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  477.  
  478. [239]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">ini_set</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'error_log'</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logDirectory&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #080">'/php_error.log'</span><span style="color: #D24; font-weight: bold">);
  479.  
  480. [240]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  481.  
  482. [241]    =>    
  483.  
  484. [242]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;php&nbsp;configuration
  485.  
  486. [243]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">if&nbsp;(</span><span style="color: #000">function_exists</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'ini_set'</span><span style="color: #D24; font-weight: bold">))&nbsp;{
  487.  
  488. [244]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">ini_set</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'display_errors'</span><span style="color: #D24; font-weight: bold">,&nbsp;!</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$productionMode</span><span style="color: #D24; font-weight: bold">);&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;or&nbsp;'stderr'
  489.  
  490. [245]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">ini_set</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'html_errors'</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">);
  491.  
  492. [246]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">ini_set</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'log_errors'</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">);
  493.  
  494. [247]    =>    
  495.  
  496. [248]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;(</span><span style="color: #000">ini_get</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'display_errors'</span><span style="color: #D24; font-weight: bold">)&nbsp;!=&nbsp;!</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$productionMode&nbsp;</span><span style="color: #D24; font-weight: bold">&amp;&amp;&nbsp;</span><span style="color: #000">ini_get</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'display_errors'</span><span style="color: #D24; font-weight: bold">)&nbsp;!==&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$productionMode&nbsp;</span><span style="color: #D24; font-weight: bold">?&nbsp;</span><span style="color: #080">'stderr'&nbsp;</span><span style="color: #D24; font-weight: bold">:&nbsp;</span><span style="color: #080">'stdout'</span><span style="color: #D24; font-weight: bold">))&nbsp;{&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;intentionally&nbsp;==
  497.  
  498. [249]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">throw&nbsp;new&nbsp;</span><span style="color: #000">Nette</span><span style="color: #D24; font-weight: bold">\</span><span style="color: #000">NotSupportedException</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'Function&nbsp;ini_set()&nbsp;must&nbsp;be&nbsp;enabled.'</span><span style="color: #D24; font-weight: bold">);
  499.  
  500. [250]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  501.  
  502. [251]    =>    
  503.  
  504. [252]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">$email</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  505.  
  506. [253]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #000">is_string</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$email</span><span style="color: #D24; font-weight: bold">))&nbsp;{
  507.  
  508. [254]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;</span><span style="color: #000">Nette</span><span style="color: #D24; font-weight: bold">\</span><span style="color: #000">InvalidArgumentException</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'Email&nbsp;address&nbsp;must&nbsp;be&nbsp;a&nbsp;string.'</span><span style="color: #D24; font-weight: bold">);
  509.  
  510. [255]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  511.  
  512. [256]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$email&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">$email</span><span style="color: #D24; font-weight: bold">;
  513.  
  514. [257]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  515.  
  516. [258]    =>    
  517.  
  518. [259]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #000">defined</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'E_DEPRECATED'</span><span style="color: #D24; font-weight: bold">))&nbsp;{
  519.  
  520. [260]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">define</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'E_DEPRECATED'</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">8192</span><span style="color: #D24; font-weight: bold">);
  521.  
  522. [261]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  523.  
  524. [262]    =>    
  525.  
  526. [263]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #000">defined</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'E_USER_DEPRECATED'</span><span style="color: #D24; font-weight: bold">))&nbsp;{
  527.  
  528. [264]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">define</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'E_USER_DEPRECATED'</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">16384</span><span style="color: #D24; font-weight: bold">);
  529.  
  530. [265]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  531.  
  532. [266]    =>    
  533.  
  534. [267]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$enabled</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  535.  
  536. [268]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">register_shutdown_function</span><span style="color: #D24; font-weight: bold">(array(</span><span style="color: #000">__CLASS__</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #080">'_shutdownHandler'</span><span style="color: #D24; font-weight: bold">));
  537.  
  538. [269]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">set_exception_handler</span><span style="color: #D24; font-weight: bold">(array(</span><span style="color: #000">__CLASS__</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #080">'_exceptionHandler'</span><span style="color: #D24; font-weight: bold">));
  539.  
  540. [270]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">set_error_handler</span><span style="color: #D24; font-weight: bold">(array(</span><span style="color: #000">__CLASS__</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #080">'_errorHandler'</span><span style="color: #D24; font-weight: bold">));
  541.  
  542. [271]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$enabled&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">TRUE</span><span style="color: #D24; font-weight: bold">;
  543.  
  544. [272]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  545.  
  546. [273]    =>     &nbsp;&nbsp;&nbsp;&nbsp;}
  547.  
  548. [274]    =>    
  549.  
  550. [275]    =>    
  551.  
  552. [276]    =>    
  553.  
  554. [277]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**
  555.  
  556. [278]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Is&nbsp;Debug&nbsp;enabled?
  557.  
  558. [279]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;bool
  559.  
  560. [280]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
  561.  
  562. [281]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;function&nbsp;</span><span style="color: #000">isEnabled</span><span style="color: #D24; font-weight: bold">()
  563.  
  564. [282]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  565.  
  566. [283]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$enabled</span><span style="color: #D24; font-weight: bold">;
  567.  
  568. [284]    =>     &nbsp;&nbsp;&nbsp;&nbsp;}
  569.  
  570. [285]    =>    
  571.  
  572. [286]    =>    
  573.  
  574. [287]    =>    
  575.  
  576. [288]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**
  577.  
  578. [289]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Logs&nbsp;message&nbsp;or&nbsp;exception&nbsp;to&nbsp;file&nbsp;(if&nbsp;not&nbsp;disabled)&nbsp;and&nbsp;sends&nbsp;email&nbsp;notification&nbsp;(if&nbsp;enabled).
  579.  
  580. [290]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;string|Exception
  581.  
  582. [291]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;int&nbsp;&nbsp;one&nbsp;of&nbsp;constant&nbsp;Debugger::INFO,&nbsp;WARNING,&nbsp;ERROR&nbsp;(sends&nbsp;email),&nbsp;CRITICAL&nbsp;(sends&nbsp;email)
  583.  
  584. [292]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;string&nbsp;logged&nbsp;error&nbsp;filename
  585.  
  586. [293]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
  587.  
  588. [294]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;function&nbsp;</span><span style="color: #000">log</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$message</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$priority&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">INFO</span><span style="color: #D24; font-weight: bold">)
  589.  
  590. [295]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  591.  
  592. [296]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logDirectory&nbsp;</span><span style="color: #D24; font-weight: bold">===&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  593.  
  594. [297]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
  595.  
  596. [298]    =>    
  597.  
  598. [299]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;(!</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logDirectory</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  599.  
  600. [300]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;</span><span style="color: #000">Nette</span><span style="color: #D24; font-weight: bold">\</span><span style="color: #000">InvalidStateException</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'Logging&nbsp;directory&nbsp;is&nbsp;not&nbsp;specified&nbsp;in&nbsp;Nette\Diagnostics\Debugger::$logDirectory.'</span><span style="color: #D24; font-weight: bold">);
  601.  
  602. [301]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  603.  
  604. [302]    =>    
  605.  
  606. [303]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">$message&nbsp;</span><span style="color: #D24; font-weight: bold">instanceof&nbsp;\</span><span style="color: #000">Exception</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  607.  
  608. [304]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$exception&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">$message</span><span style="color: #D24; font-weight: bold">;
  609.  
  610. [305]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$message&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;(</span><span style="color: #000">$message&nbsp;</span><span style="color: #D24; font-weight: bold">instanceof&nbsp;</span><span style="color: #000">Nette</span><span style="color: #D24; font-weight: bold">\</span><span style="color: #000">FatalErrorException
  611.  
  612. [306]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">?&nbsp;</span><span style="color: #080">'Fatal&nbsp;error:&nbsp;'&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">$exception</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">getMessage</span><span style="color: #D24; font-weight: bold">()
  613.  
  614. [307]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</span><span style="color: #000">get_class</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$exception</span><span style="color: #D24; font-weight: bold">)&nbsp;.&nbsp;</span><span style="color: #080">":&nbsp;"&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">$exception</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">getMessage</span><span style="color: #D24; font-weight: bold">())
  615.  
  616. [308]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&nbsp;</span><span style="color: #080">"&nbsp;in&nbsp;"&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">$exception</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">getFile</span><span style="color: #D24; font-weight: bold">()&nbsp;.&nbsp;</span><span style="color: #080">":"&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">$exception</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">getLine</span><span style="color: #D24; font-weight: bold">();
  617.  
  618. [309]    =>    
  619.  
  620. [310]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$hash&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">md5</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$exception&nbsp;</span><span style="color: #D24; font-weight: bold">);
  621.  
  622. [311]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$exceptionFilename&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #080">"exception-"&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;@</span><span style="color: #000">date</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'Y-m-d-H-i-s'</span><span style="color: #D24; font-weight: bold">)&nbsp;.&nbsp;</span><span style="color: #080">"-</span><span style="color: #000">$hash</span><span style="color: #080">.html"</span><span style="color: #D24; font-weight: bold">;
  623.  
  624. [312]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(new&nbsp;\</span><span style="color: #000">DirectoryIterator</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logDirectory</span><span style="color: #D24; font-weight: bold">)&nbsp;as&nbsp;</span><span style="color: #000">$entry</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  625.  
  626. [313]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">strpos</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$entry</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$hash</span><span style="color: #D24; font-weight: bold">))&nbsp;{
  627.  
  628. [314]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$exceptionFilename&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">$entry</span><span style="color: #D24; font-weight: bold">;
  629.  
  630. [315]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$saved&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">TRUE</span><span style="color: #D24; font-weight: bold">;
  631.  
  632. [316]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
  633.  
  634. [317]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  635.  
  636. [318]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  637.  
  638. [319]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  639.  
  640. [320]    =>    
  641.  
  642. [321]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logger</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">log</span><span style="color: #D24; font-weight: bold">(array(
  643.  
  644. [322]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@</span><span style="color: #000">date</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'[Y-m-d&nbsp;H-i-s]'</span><span style="color: #D24; font-weight: bold">),
  645.  
  646. [323]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$message</span><span style="color: #D24; font-weight: bold">,
  647.  
  648. [324]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$source&nbsp;</span><span style="color: #D24; font-weight: bold">?&nbsp;</span><span style="color: #080">'&nbsp;@&nbsp;&nbsp;'&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$source&nbsp;</span><span style="color: #D24; font-weight: bold">:&nbsp;</span><span style="color: #000">NULL</span><span style="color: #D24; font-weight: bold">,
  649.  
  650. [325]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!empty(</span><span style="color: #000">$exceptionFilename</span><span style="color: #D24; font-weight: bold">)&nbsp;?&nbsp;</span><span style="color: #080">'&nbsp;@@&nbsp;&nbsp;'&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">$exceptionFilename&nbsp;</span><span style="color: #D24; font-weight: bold">:&nbsp;</span><span style="color: #000">NULL
  651.  
  652. [326]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">),&nbsp;</span><span style="color: #000">$priority</span><span style="color: #D24; font-weight: bold">);
  653.  
  654. [327]    =>    
  655.  
  656. [328]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!empty(</span><span style="color: #000">$exceptionFilename</span><span style="color: #D24; font-weight: bold">))&nbsp;{
  657.  
  658. [329]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$exceptionFilename&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$logDirectory&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #080">'/'&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">$exceptionFilename</span><span style="color: #D24; font-weight: bold">;
  659.  
  660. [330]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(empty(</span><span style="color: #000">$saved</span><span style="color: #D24; font-weight: bold">)&nbsp;&amp;&amp;&nbsp;</span><span style="color: #000">$logHandle&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;@</span><span style="color: #000">fopen</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$exceptionFilename</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #080">'w'</span><span style="color: #D24; font-weight: bold">))&nbsp;{
  661.  
  662. [331]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">ob_start</span><span style="color: #D24; font-weight: bold">();&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;double&nbsp;buffer&nbsp;prevents&nbsp;sending&nbsp;HTTP&nbsp;headers&nbsp;in&nbsp;some&nbsp;PHP
  663.  
  664. [332]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">ob_start</span><span style="color: #D24; font-weight: bold">(function(</span><span style="color: #000">$buffer</span><span style="color: #D24; font-weight: bold">)&nbsp;use&nbsp;(</span><span style="color: #000">$logHandle</span><span style="color: #D24; font-weight: bold">)&nbsp;{&nbsp;</span><span style="color: #000">fwrite</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$logHandle</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$buffer</span><span style="color: #D24; font-weight: bold">);&nbsp;},&nbsp;</span><span style="color: #000">4096</span><span style="color: #D24; font-weight: bold">);
  665.  
  666. [333]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$blueScreen</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">render</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$exception</span><span style="color: #D24; font-weight: bold">);
  667.  
  668. [334]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">ob_end_flush</span><span style="color: #D24; font-weight: bold">();
  669.  
  670. [335]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">ob_end_clean</span><span style="color: #D24; font-weight: bold">();
  671.  
  672. [336]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">fclose</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$logHandle</span><span style="color: #D24; font-weight: bold">);
  673.  
  674. [337]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  675.  
  676. [338]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000">strtr</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$exceptionFilename</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #080">'\\/'</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">DIRECTORY_SEPARATOR&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">DIRECTORY_SEPARATOR</span><span style="color: #D24; font-weight: bold">);
  677.  
  678. [339]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  679.  
  680. [340]    =>     &nbsp;&nbsp;&nbsp;&nbsp;}
  681.  
  682. [341]    =>    
  683.  
  684. [342]    =>    
  685.  
  686. [343]    =>    
  687.  
  688. [344]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**
  689.  
  690. [345]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Shutdown&nbsp;handler&nbsp;to&nbsp;catch&nbsp;fatal&nbsp;errors&nbsp;and&nbsp;execute&nbsp;of&nbsp;the&nbsp;planned&nbsp;activities.
  691.  
  692. [346]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void
  693.  
  694. [347]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@internal
  695.  
  696. [348]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
  697.  
  698. [349]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;function&nbsp;</span><span style="color: #000">_shutdownHandler</span><span style="color: #D24; font-weight: bold">()
  699.  
  700. [350]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  701.  
  702. [351]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$enabled</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  703.  
  704. [352]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
  705.  
  706. [353]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  707.  
  708. [354]    =>    
  709.  
  710. [355]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;fatal&nbsp;error&nbsp;handler
  711.  
  712. [356]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">static&nbsp;</span><span style="color: #000">$types&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;array(
  713.  
  714. [357]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">E_ERROR&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #000">1</span><span style="color: #D24; font-weight: bold">,
  715.  
  716. [358]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">E_CORE_ERROR&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #000">1</span><span style="color: #D24; font-weight: bold">,
  717.  
  718. [359]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">E_COMPILE_ERROR&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #000">1</span><span style="color: #D24; font-weight: bold">,
  719.  
  720. [360]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">E_PARSE&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #000">1</span><span style="color: #D24; font-weight: bold">,
  721.  
  722. [361]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
  723.  
  724. [362]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$error&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">error_get_last</span><span style="color: #D24; font-weight: bold">();
  725.  
  726. [363]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(isset(</span><span style="color: #000">$types</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$error</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'type'</span><span style="color: #D24; font-weight: bold">]]))&nbsp;{
  727.  
  728. [364]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">_exceptionHandler</span><span style="color: #D24; font-weight: bold">(new&nbsp;</span><span style="color: #000">Nette</span><span style="color: #D24; font-weight: bold">\</span><span style="color: #000">FatalErrorException</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$error</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'message'</span><span style="color: #D24; font-weight: bold">],&nbsp;</span><span style="color: #000">0</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$error</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'type'</span><span style="color: #D24; font-weight: bold">],&nbsp;</span><span style="color: #000">$error</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'file'</span><span style="color: #D24; font-weight: bold">],&nbsp;</span><span style="color: #000">$error</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'line'</span><span style="color: #D24; font-weight: bold">],&nbsp;</span><span style="color: #000">NULL</span><span style="color: #D24; font-weight: bold">));
  729.  
  730. [365]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  731.  
  732. [366]    =>    
  733.  
  734. [367]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;debug&nbsp;bar&nbsp;(require&nbsp;HTML&nbsp;&amp;&nbsp;development&nbsp;mode)
  735.  
  736. [368]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">if&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$bar&nbsp;</span><span style="color: #D24; font-weight: bold">&amp;&amp;&nbsp;!</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$productionMode&nbsp;</span><span style="color: #D24; font-weight: bold">&amp;&amp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">isHtmlMode</span><span style="color: #D24; font-weight: bold">())&nbsp;{
  737.  
  738. [369]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$bar</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">render</span><span style="color: #D24; font-weight: bold">();
  739.  
  740. [370]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  741.  
  742. [371]    =>     &nbsp;&nbsp;&nbsp;&nbsp;}
  743.  
  744. [372]    =>    
  745.  
  746. [373]    =>    
  747.  
  748. [374]    =>    
  749.  
  750. [375]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**
  751.  
  752. [376]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Handler&nbsp;to&nbsp;catch&nbsp;uncaught&nbsp;exception.
  753.  
  754. [377]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;\Exception
  755.  
  756. [378]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void
  757.  
  758. [379]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@internal
  759.  
  760. [380]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
  761.  
  762. [381]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;function&nbsp;</span><span style="color: #000">_exceptionHandler</span><span style="color: #D24; font-weight: bold">(\</span><span style="color: #000">Exception&nbsp;$exception</span><span style="color: #D24; font-weight: bold">)
  763.  
  764. [382]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  765.  
  766. [383]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #000">headers_sent</span><span style="color: #D24; font-weight: bold">())&nbsp;{&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;for&nbsp;PHP&nbsp;&lt;&nbsp;5.2.4
  767.  
  768. [384]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$protocol&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;isset(</span><span style="color: #000">$_SERVER</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'SERVER_PROTOCOL'</span><span style="color: #D24; font-weight: bold">])&nbsp;?&nbsp;</span><span style="color: #000">$_SERVER</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">'SERVER_PROTOCOL'</span><span style="color: #D24; font-weight: bold">]&nbsp;:&nbsp;</span><span style="color: #080">'HTTP/1.1'</span><span style="color: #D24; font-weight: bold">;
  769.  
  770. [385]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">header</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$protocol&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #080">'&nbsp;500'</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">TRUE</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">500</span><span style="color: #D24; font-weight: bold">);
  771.  
  772. [386]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  773.  
  774. [387]    =>    
  775.  
  776. [388]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{
  777.  
  778. [389]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$productionMode</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  779.  
  780. [390]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{
  781.  
  782. [391]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">log</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$exception</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">ERROR</span><span style="color: #D24; font-weight: bold">);
  783.  
  784. [392]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(\</span><span style="color: #000">Exception&nbsp;$e</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  785.  
  786. [393]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #080">'FATAL&nbsp;ERROR:&nbsp;unable&nbsp;to&nbsp;log&nbsp;error'</span><span style="color: #D24; font-weight: bold">;
  787.  
  788. [394]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  789.  
  790. [395]    =>    
  791.  
  792. [396]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$consoleMode</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  793.  
  794. [397]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #080">"ERROR:&nbsp;the&nbsp;server&nbsp;encountered&nbsp;an&nbsp;internal&nbsp;error&nbsp;and&nbsp;was&nbsp;unable&nbsp;to&nbsp;complete&nbsp;your&nbsp;request.\n"</span><span style="color: #D24; font-weight: bold">;
  795.  
  796. [398]    =>    
  797.  
  798. [399]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">isHtmlMode</span><span style="color: #D24; font-weight: bold">())&nbsp;{
  799.  
  800. [400]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;require&nbsp;</span><span style="color: #000">__DIR__&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #080">'/templates/error.phtml'</span><span style="color: #D24; font-weight: bold">;
  801.  
  802. [401]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  803.  
  804. [402]    =>    
  805.  
  806. [403]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{
  807.  
  808. [404]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$consoleMode</span><span style="color: #D24; font-weight: bold">)&nbsp;{&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;dump&nbsp;to&nbsp;console
  809.  
  810. [405]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">echo&nbsp;</span><span style="color: #080">"</span><span style="color: #000">$exception</span><span style="color: #080">\n"</span><span style="color: #D24; font-weight: bold">;
  811.  
  812. [406]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">$file&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">log</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$exception</span><span style="color: #D24; font-weight: bold">))&nbsp;{
  813.  
  814. [407]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #080">"(stored&nbsp;in&nbsp;</span><span style="color: #000">$file</span><span style="color: #080">)\n"</span><span style="color: #D24; font-weight: bold">;
  815.  
  816. [408]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$browser</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  817.  
  818. [409]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">exec</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$browser&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #080">'&nbsp;'&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">escapeshellarg</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$file</span><span style="color: #D24; font-weight: bold">));
  819.  
  820. [410]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  821.  
  822. [411]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  823.  
  824. [412]    =>    
  825.  
  826. [413]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">isHtmlMode</span><span style="color: #D24; font-weight: bold">())&nbsp;{&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;dump&nbsp;to&nbsp;browser
  827.  
  828. [414]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$blueScreen</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">render</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$exception</span><span style="color: #D24; font-weight: bold">);
  829.  
  830. [415]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$bar</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  831.  
  832. [416]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$bar</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">render</span><span style="color: #D24; font-weight: bold">();
  833.  
  834. [417]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  835.  
  836. [418]    =>    
  837.  
  838. [419]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;(!</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">fireLog</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$exception</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">ERROR</span><span style="color: #D24; font-weight: bold">))&nbsp;{&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;AJAX&nbsp;or&nbsp;non-HTML&nbsp;mode
  839.  
  840. [420]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$file&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">log</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$exception</span><span style="color: #D24; font-weight: bold">);
  841.  
  842. [421]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #000">headers_sent</span><span style="color: #D24; font-weight: bold">())&nbsp;{
  843.  
  844. [422]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">header</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">"X-Nette-Error-Log:&nbsp;</span><span style="color: #000">$file</span><span style="color: #080">"</span><span style="color: #D24; font-weight: bold">);
  845.  
  846. [423]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  847.  
  848. [424]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  849.  
  850. [425]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  851.  
  852. [426]    =>    
  853.  
  854. [427]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$onFatalError&nbsp;</span><span style="color: #D24; font-weight: bold">as&nbsp;</span><span style="color: #000">$handler</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  855.  
  856. [428]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">call_user_func</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$handler</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$exception</span><span style="color: #D24; font-weight: bold">);
  857.  
  858. [429]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  859.  
  860. [430]    =>    
  861.  
  862. [431]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(\</span><span style="color: #000">Exception&nbsp;$e</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  863.  
  864. [432]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$productionMode</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  865.  
  866. [433]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">isHtmlMode</span><span style="color: #D24; font-weight: bold">()&nbsp;?&nbsp;</span><span style="color: #080">'&lt;meta&nbsp;name=robots&nbsp;content=noindex&gt;FATAL&nbsp;ERROR'&nbsp;</span><span style="color: #D24; font-weight: bold">:&nbsp;</span><span style="color: #080">'FATAL&nbsp;ERROR'</span><span style="color: #D24; font-weight: bold">;
  867.  
  868. [434]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{
  869.  
  870. [435]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #080">"FATAL&nbsp;ERROR:&nbsp;thrown&nbsp;"</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">get_class</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$e</span><span style="color: #D24; font-weight: bold">),&nbsp;</span><span style="color: #080">':&nbsp;'</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$e</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">getMessage</span><span style="color: #D24; font-weight: bold">(),
  871.  
  872. [436]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #080">"\nwhile&nbsp;processing&nbsp;"</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">get_class</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$exception</span><span style="color: #D24; font-weight: bold">),&nbsp;</span><span style="color: #080">':&nbsp;'</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$exception</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">getMessage</span><span style="color: #D24; font-weight: bold">(),&nbsp;</span><span style="color: #080">"\n"</span><span style="color: #D24; font-weight: bold">;
  873.  
  874. [437]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  875.  
  876. [438]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  877.  
  878. [439]    =>    
  879.  
  880. [440]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$enabled&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">;&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;un-register&nbsp;shutdown&nbsp;function
  881.  
  882. [441]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">exit(</span><span style="color: #000">255</span><span style="color: #D24; font-weight: bold">);
  883.  
  884. [442]    =>     &nbsp;&nbsp;&nbsp;&nbsp;}
  885.  
  886. [443]    =>    
  887.  
  888. [444]    =>    
  889.  
  890. [445]    =>    
  891.  
  892. [446]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**
  893.  
  894. [447]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Handler&nbsp;to&nbsp;catch&nbsp;warnings&nbsp;and&nbsp;notices.
  895.  
  896. [448]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;level&nbsp;of&nbsp;the&nbsp;error&nbsp;raised
  897.  
  898. [449]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;string&nbsp;error&nbsp;message
  899.  
  900. [450]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;string&nbsp;file&nbsp;that&nbsp;the&nbsp;error&nbsp;was&nbsp;raised&nbsp;in
  901.  
  902. [451]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;line&nbsp;number&nbsp;the&nbsp;error&nbsp;was&nbsp;raised&nbsp;at
  903.  
  904. [452]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;array&nbsp;&nbsp;an&nbsp;array&nbsp;of&nbsp;variables&nbsp;that&nbsp;existed&nbsp;in&nbsp;the&nbsp;scope&nbsp;the&nbsp;error&nbsp;was&nbsp;triggered&nbsp;in
  905.  
  906. [453]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;bool&nbsp;&nbsp;&nbsp;FALSE&nbsp;to&nbsp;call&nbsp;normal&nbsp;error&nbsp;handler,&nbsp;NULL&nbsp;otherwise
  907.  
  908. [454]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;Nette\FatalErrorException
  909.  
  910. [455]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@internal
  911.  
  912. [456]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
  913.  
  914. [457]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;function&nbsp;</span><span style="color: #000">_errorHandler</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$severity</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$message</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$file</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$line</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$context</span><span style="color: #D24; font-weight: bold">)
  915.  
  916. [458]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  917.  
  918. [459]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$scream</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  919.  
  920. [460]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">error_reporting</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">E_ALL&nbsp;</span><span style="color: #D24; font-weight: bold">|&nbsp;</span><span style="color: #000">E_STRICT</span><span style="color: #D24; font-weight: bold">);
  921.  
  922. [461]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  923.  
  924. [462]    =>    
  925.  
  926. [463]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$lastError&nbsp;</span><span style="color: #D24; font-weight: bold">!==&nbsp;</span><span style="color: #000">FALSE&nbsp;</span><span style="color: #D24; font-weight: bold">&amp;&amp;&nbsp;(</span><span style="color: #000">$severity&nbsp;</span><span style="color: #D24; font-weight: bold">&amp;&nbsp;</span><span style="color: #000">error_reporting</span><span style="color: #D24; font-weight: bold">())&nbsp;===&nbsp;</span><span style="color: #000">$severity</span><span style="color: #D24; font-weight: bold">)&nbsp;{&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;tryError&nbsp;mode
  927.  
  928. [464]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$lastError&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;new&nbsp;\</span><span style="color: #000">ErrorException</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$message</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">0</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$severity</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$file</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$line</span><span style="color: #D24; font-weight: bold">);
  929.  
  930. [465]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000">NULL</span><span style="color: #D24; font-weight: bold">;
  931.  
  932. [466]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  933.  
  934. [467]    =>    
  935.  
  936. [468]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">$severity&nbsp;</span><span style="color: #D24; font-weight: bold">===&nbsp;</span><span style="color: #000">E_RECOVERABLE_ERROR&nbsp;</span><span style="color: #D24; font-weight: bold">||&nbsp;</span><span style="color: #000">$severity&nbsp;</span><span style="color: #D24; font-weight: bold">===&nbsp;</span><span style="color: #000">E_USER_ERROR</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  937.  
  938. [469]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;</span><span style="color: #000">Nette</span><span style="color: #D24; font-weight: bold">\</span><span style="color: #000">FatalErrorException</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$message</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">0</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$severity</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$file</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$line</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$context</span><span style="color: #D24; font-weight: bold">);
  939.  
  940. [470]    =>    
  941.  
  942. [471]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;((</span><span style="color: #000">$severity&nbsp;</span><span style="color: #D24; font-weight: bold">&amp;&nbsp;</span><span style="color: #000">error_reporting</span><span style="color: #D24; font-weight: bold">())&nbsp;!==&nbsp;</span><span style="color: #000">$severity</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  943.  
  944. [472]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">;&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;calls&nbsp;normal&nbsp;error&nbsp;handler&nbsp;to&nbsp;fill-in&nbsp;error_get_last()
  945.  
  946. [473]    =>    
  947.  
  948. [474]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">}&nbsp;elseif&nbsp;(!</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$productionMode&nbsp;</span><span style="color: #D24; font-weight: bold">&amp;&amp;&nbsp;(</span><span style="color: #000">is_bool</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$strictMode</span><span style="color: #D24; font-weight: bold">)&nbsp;?&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$strictMode&nbsp;</span><span style="color: #D24; font-weight: bold">:&nbsp;((</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$strictMode&nbsp;</span><span style="color: #D24; font-weight: bold">&amp;&nbsp;</span><span style="color: #000">$severity</span><span style="color: #D24; font-weight: bold">)&nbsp;===&nbsp;</span><span style="color: #000">$severity</span><span style="color: #D24; font-weight: bold">)))&nbsp;{
  949.  
  950. [475]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">_exceptionHandler</span><span style="color: #D24; font-weight: bold">(new&nbsp;</span><span style="color: #000">Nette</span><span style="color: #D24; font-weight: bold">\</span><span style="color: #000">FatalErrorException</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$message</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">0</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$severity</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$file</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$line</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$context</span><span style="color: #D24; font-weight: bold">));
  951.  
  952. [476]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  953.  
  954. [477]    =>    
  955.  
  956. [478]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;</span><span style="color: #000">$types&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;array(
  957.  
  958. [479]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">E_WARNING&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #080">'Warning'</span><span style="color: #D24; font-weight: bold">,
  959.  
  960. [480]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">E_COMPILE_WARNING&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #080">'Warning'</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;currently&nbsp;unable&nbsp;to&nbsp;handle
  961.  
  962. [481]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">E_USER_WARNING&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #080">'Warning'</span><span style="color: #D24; font-weight: bold">,
  963.  
  964. [482]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">E_NOTICE&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #080">'Notice'</span><span style="color: #D24; font-weight: bold">,
  965.  
  966. [483]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">E_USER_NOTICE&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #080">'Notice'</span><span style="color: #D24; font-weight: bold">,
  967.  
  968. [484]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">E_STRICT&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #080">'Strict&nbsp;standards'</span><span style="color: #D24; font-weight: bold">,
  969.  
  970. [485]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">E_DEPRECATED&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #080">'Deprecated'</span><span style="color: #D24; font-weight: bold">,
  971.  
  972. [486]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">E_USER_DEPRECATED&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #080">'Deprecated'</span><span style="color: #D24; font-weight: bold">,
  973.  
  974. [487]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
  975.  
  976. [488]    =>    
  977.  
  978. [489]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$message&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #080">'PHP&nbsp;'&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;(isset(</span><span style="color: #000">$types</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$severity</span><span style="color: #D24; font-weight: bold">])&nbsp;?&nbsp;</span><span style="color: #000">$types</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$severity</span><span style="color: #D24; font-weight: bold">]&nbsp;:&nbsp;</span><span style="color: #080">'Unknown&nbsp;error'</span><span style="color: #D24; font-weight: bold">)&nbsp;.&nbsp;</span><span style="color: #080">":&nbsp;</span><span style="color: #000">$message</span><span style="color: #080">"</span><span style="color: #D24; font-weight: bold">;
  979.  
  980. [490]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$count&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;&amp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$errorPanel</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">data</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #080">"</span><span style="color: #000">$message</span><span style="color: #080">|</span><span style="color: #000">$file</span><span style="color: #080">|</span><span style="color: #000">$line</span><span style="color: #080">"</span><span style="color: #D24; font-weight: bold">];
  981.  
  982. [491]    =>    
  983.  
  984. [492]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">$count</span><span style="color: #D24; font-weight: bold">++)&nbsp;{&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;repeated&nbsp;error
  985.  
  986. [493]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">return&nbsp;</span><span style="color: #000">NULL</span><span style="color: #D24; font-weight: bold">;
  987.  
  988. [494]    =>    
  989.  
  990. [495]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$productionMode</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  991.  
  992. [496]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">log</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">"</span><span style="color: #000">$message</span><span style="color: #080">&nbsp;in&nbsp;</span><span style="color: #000">$file</span><span style="color: #080">:</span><span style="color: #000">$line</span><span style="color: #080">"</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">ERROR</span><span style="color: #D24; font-weight: bold">);
  993.  
  994. [497]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000">NULL</span><span style="color: #D24; font-weight: bold">;
  995.  
  996. [498]    =>    
  997.  
  998. [499]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{
  999.  
  1000. [500]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$ok&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">fireLog</span><span style="color: #D24; font-weight: bold">(new&nbsp;\</span><span style="color: #000">ErrorException</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$message</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">0</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$severity</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$file</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$line</span><span style="color: #D24; font-weight: bold">),&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">WARNING</span><span style="color: #D24; font-weight: bold">);
  1001.  
  1002. [501]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;!</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">isHtmlMode</span><span style="color: #D24; font-weight: bold">()&nbsp;||&nbsp;(!</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$bar&nbsp;</span><span style="color: #D24; font-weight: bold">&amp;&amp;&nbsp;!</span><span style="color: #000">$ok</span><span style="color: #D24; font-weight: bold">)&nbsp;?&nbsp;</span><span style="color: #000">FALSE&nbsp;</span><span style="color: #D24; font-weight: bold">:&nbsp;</span><span style="color: #000">NULL</span><span style="color: #D24; font-weight: bold">;
  1003.  
  1004. [502]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  1005.  
  1006. [503]    =>    
  1007.  
  1008. [504]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">;&nbsp;</span><span style="color: #998; font-style: italic">//&nbsp;call&nbsp;normal&nbsp;error&nbsp;handler
  1009.  
  1010. [505]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">}
  1011.  
  1012. [506]    =>    
  1013.  
  1014. [507]    =>    
  1015.  
  1016. [508]    =>    
  1017.  
  1018. [509]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**
  1019.  
  1020. [510]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Handles&nbsp;exception&nbsp;thrown&nbsp;in&nbsp;__toString().
  1021.  
  1022. [511]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;\Exception
  1023.  
  1024. [512]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void
  1025.  
  1026. [513]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
  1027.  
  1028. [514]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;function&nbsp;</span><span style="color: #000">toStringException</span><span style="color: #D24; font-weight: bold">(\</span><span style="color: #000">Exception&nbsp;$exception</span><span style="color: #D24; font-weight: bold">)
  1029.  
  1030. [515]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  1031.  
  1032. [516]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$enabled</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  1033.  
  1034. [517]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">_exceptionHandler</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$exception</span><span style="color: #D24; font-weight: bold">);
  1035.  
  1036. [518]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{
  1037.  
  1038. [519]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">trigger_error</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$exception</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">getMessage</span><span style="color: #D24; font-weight: bold">(),&nbsp;</span><span style="color: #000">E_USER_ERROR</span><span style="color: #D24; font-weight: bold">);
  1039.  
  1040. [520]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  1041.  
  1042. [521]    =>     &nbsp;&nbsp;&nbsp;&nbsp;}
  1043.  
  1044. [522]    =>    
  1045.  
  1046. [523]    =>    
  1047.  
  1048. [524]    =>    
  1049.  
  1050. [525]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**
  1051.  
  1052. [526]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Starts&nbsp;catching&nbsp;potential&nbsp;errors/warnings.
  1053.  
  1054. [527]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void
  1055.  
  1056. [528]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
  1057.  
  1058. [529]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;function&nbsp;</span><span style="color: #000">tryError</span><span style="color: #D24; font-weight: bold">()
  1059.  
  1060. [530]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  1061.  
  1062. [531]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$enabled&nbsp;</span><span style="color: #D24; font-weight: bold">&amp;&amp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$lastError&nbsp;</span><span style="color: #D24; font-weight: bold">===&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  1063.  
  1064. [532]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">set_error_handler</span><span style="color: #D24; font-weight: bold">(array(</span><span style="color: #000">__CLASS__</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #080">'_errorHandler'</span><span style="color: #D24; font-weight: bold">));
  1065.  
  1066. [533]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  1067.  
  1068. [534]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$lastError&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">NULL</span><span style="color: #D24; font-weight: bold">;
  1069.  
  1070. [535]    =>     &nbsp;&nbsp;&nbsp;&nbsp;}
  1071.  
  1072. [536]    =>    
  1073.  
  1074. [537]    =>    
  1075.  
  1076. [538]    =>    
  1077.  
  1078. [539]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**
  1079.  
  1080. [540]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Returns&nbsp;catched&nbsp;error/warning&nbsp;message.
  1081.  
  1082. [541]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;\ErrorException&nbsp;&nbsp;catched&nbsp;error
  1083.  
  1084. [542]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;bool
  1085.  
  1086. [543]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
  1087.  
  1088. [544]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;function&nbsp;</span><span style="color: #000">catchError</span><span style="color: #D24; font-weight: bold">(&amp;&nbsp;</span><span style="color: #000">$error</span><span style="color: #D24; font-weight: bold">)
  1089.  
  1090. [545]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  1091.  
  1092. [546]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$enabled&nbsp;</span><span style="color: #D24; font-weight: bold">&amp;&amp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$lastError&nbsp;</span><span style="color: #D24; font-weight: bold">!==&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  1093.  
  1094. [547]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">restore_error_handler</span><span style="color: #D24; font-weight: bold">();
  1095.  
  1096. [548]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  1097.  
  1098. [549]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$error&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$lastError</span><span style="color: #D24; font-weight: bold">;
  1099.  
  1100. [550]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$lastError&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">;
  1101.  
  1102. [551]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(bool)&nbsp;</span><span style="color: #000">$error</span><span style="color: #D24; font-weight: bold">;
  1103.  
  1104. [552]    =>     &nbsp;&nbsp;&nbsp;&nbsp;}
  1105.  
  1106. [553]    =>    
  1107.  
  1108. [554]    =>    
  1109.  
  1110. [555]    =>    
  1111.  
  1112. [556]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/*********************&nbsp;useful&nbsp;tools&nbsp;****************d*g**/
  1113.  
  1114. [557]    =>    
  1115.  
  1116. [558]    =>    
  1117.  
  1118. [559]    =>    
  1119.  
  1120. [560]    =>     &nbsp;&nbsp;&nbsp;&nbsp;/**
  1121.  
  1122. [561]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Dumps&nbsp;information&nbsp;about&nbsp;a&nbsp;variable&nbsp;in&nbsp;readable&nbsp;format.
  1123.  
  1124. [562]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;mixed&nbsp;&nbsp;variable&nbsp;to&nbsp;dump
  1125.  
  1126. [563]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;bool&nbsp;&nbsp;&nbsp;return&nbsp;output&nbsp;instead&nbsp;of&nbsp;printing&nbsp;it?&nbsp;(bypasses&nbsp;$productionMode)
  1127.  
  1128. [564]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;mixed&nbsp;&nbsp;variable&nbsp;itself&nbsp;or&nbsp;dump
  1129.  
  1130. [565]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
  1131.  
  1132. [566]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;function&nbsp;</span><span style="color: #000">dump</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$var</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$return&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">FALSE</span><span style="color: #D24; font-weight: bold">)
  1133.  
  1134. [567]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  1135.  
  1136. [568]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #000">$return&nbsp;</span><span style="color: #D24; font-weight: bold">&amp;&amp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$productionMode</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  1137.  
  1138. [569]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000">$var</span><span style="color: #D24; font-weight: bold">;
  1139.  
  1140. [570]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  1141.  
  1142. [571]    =>    
  1143.  
  1144. [572]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$output&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #080">"&lt;pre&nbsp;class=\"nette-dump\"&gt;"&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">Helpers</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">htmlDump</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$var</span><span style="color: #D24; font-weight: bold">)&nbsp;.&nbsp;</span><span style="color: #080">"&lt;/pre&gt;\n"</span><span style="color: #D24; font-weight: bold">;
  1145.  
  1146. [573]    =>    
  1147.  
  1148. [574]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #000">$return</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  1149.  
  1150. [575]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$trace&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">debug_backtrace</span><span style="color: #D24; font-weight: bold">();
  1151.  
  1152. [576]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$i&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">Helpers</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">findTrace</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$trace</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #080">'dump'</span><span style="color: #D24; font-weight: bold">)&nbsp;?&nbsp;</span><span style="color: #000">1&nbsp;</span><span style="color: #D24; font-weight: bold">:&nbsp;</span><span style="color: #000">0</span><span style="color: #D24; font-weight: bold">;
  1153.  
  1154. [577]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(isset(</span><span style="color: #000">$trace</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$i</span><span style="color: #D24; font-weight: bold">][</span><span style="color: #080">'file'</span><span style="color: #D24; font-weight: bold">],&nbsp;</span><span style="color: #000">$trace</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$i</span><span style="color: #D24; font-weight: bold">][</span><span style="color: #080">'line'</span><span style="color: #D24; font-weight: bold">])&nbsp;&amp;&amp;&nbsp;</span><span style="color: #000">is_file</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$trace</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$i</span><span style="color: #D24; font-weight: bold">][</span><span style="color: #080">'file'</span><span style="color: #D24; font-weight: bold">]))&nbsp;{
  1155.  
  1156. [578]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$lines&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">file</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$trace</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$i</span><span style="color: #D24; font-weight: bold">][</span><span style="color: #080">'file'</span><span style="color: #D24; font-weight: bold">]);
  1157.  
  1158. [579]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">preg_match</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'#dump\((.*)\)#'</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$lines</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$trace</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$i</span><span style="color: #D24; font-weight: bold">][</span><span style="color: #080">'line'</span><span style="color: #D24; font-weight: bold">]&nbsp;-&nbsp;</span><span style="color: #000">1</span><span style="color: #D24; font-weight: bold">],&nbsp;</span><span style="color: #000">$m</span><span style="color: #D24; font-weight: bold">);
  1159.  
  1160. [580]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$output&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">substr_replace</span><span style="color: #D24; font-weight: bold">(
  1161.  
  1162. [581]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$output</span><span style="color: #D24; font-weight: bold">,
  1163.  
  1164. [582]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #080">'&nbsp;title="'&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">htmlspecialchars</span><span style="color: #D24; font-weight: bold">((isset(</span><span style="color: #000">$m</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">0</span><span style="color: #D24; font-weight: bold">])&nbsp;?&nbsp;</span><span style="color: #080">"</span><span style="color: #000">$m</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">0</span><span style="color: #D24; font-weight: bold">]</span><span style="color: #080">&nbsp;\n"&nbsp;</span><span style="color: #D24; font-weight: bold">:&nbsp;</span><span style="color: #080">''</span><span style="color: #D24; font-weight: bold">)&nbsp;.&nbsp;</span><span style="color: #080">"in&nbsp;file&nbsp;</span><span style="color: #D24; font-weight: bold">{</span><span style="color: #000">$trace</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$i</span><span style="color: #D24; font-weight: bold">][</span><span style="color: #080">'file'</span><span style="color: #D24; font-weight: bold">]}</span><span style="color: #080">&nbsp;on&nbsp;line&nbsp;</span><span style="color: #D24; font-weight: bold">{</span><span style="color: #000">$trace</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$i</span><span style="color: #D24; font-weight: bold">][</span><span style="color: #080">'line'</span><span style="color: #D24; font-weight: bold">]}</span><span style="color: #080">"</span><span style="color: #D24; font-weight: bold">)&nbsp;.&nbsp;</span><span style="color: #080">'"'</span><span style="color: #D24; font-weight: bold">,
  1165.  
  1166. [583]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">4</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">0</span><span style="color: #D24; font-weight: bold">);
  1167.  
  1168. [584]    =>    
  1169.  
  1170. [585]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$showLocation</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  1171.  
  1172. [586]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$output&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">substr_replace</span><span style="color: #D24; font-weight: bold">(
  1173.  
  1174. [587]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$output</span><span style="color: #D24; font-weight: bold">,
  1175.  
  1176. [588]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #080">'&nbsp;&lt;small&gt;in&nbsp;'&nbsp;</span><span style="color: #D24; font-weight: bold">.&nbsp;</span><span style="color: #000">Helpers</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">editorLink</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$trace</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$i</span><span style="color: #D24; font-weight: bold">][</span><span style="color: #080">'file'</span><span style="color: #D24; font-weight: bold">],&nbsp;</span><span style="color: #000">$trace</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$i</span><span style="color: #D24; font-weight: bold">][</span><span style="color: #080">'line'</span><span style="color: #D24; font-weight: bold">])&nbsp;.&nbsp;</span><span style="color: #080">":</span><span style="color: #D24; font-weight: bold">{</span><span style="color: #000">$trace</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$i</span><span style="color: #D24; font-weight: bold">][</span><span style="color: #080">'line'</span><span style="color: #D24; font-weight: bold">]}</span><span style="color: #080">&lt;/small&gt;"</span><span style="color: #D24; font-weight: bold">,
  1177.  
  1178. [589]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-</span><span style="color: #000">8</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">0</span><span style="color: #D24; font-weight: bold">);
  1179.  
  1180. [590]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  1181.  
  1182. [591]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  1183.  
  1184. [592]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  1185.  
  1186. [593]    =>    
  1187.  
  1188. [594]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$consoleMode</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  1189.  
  1190. [595]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$output&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">htmlspecialchars_decode</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">strip_tags</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$output</span><span style="color: #D24; font-weight: bold">),&nbsp;</span><span style="color: #000">ENT_QUOTES</span><span style="color: #D24; font-weight: bold">);
  1191.  
  1192. [596]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  1193.  
  1194. [597]    =>    
  1195.  
  1196. [598]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #000">$return</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  1197.  
  1198. [599]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000">$output</span><span style="color: #D24; font-weight: bold">;
  1199.  
  1200. [600]    =>    
  1201.  
  1202. [601]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{
  1203.  
  1204. [602]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #000">$output</span><span style="color: #D24; font-weight: bold">;
  1205.  
  1206. [603]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000">$var</span><span style="color: #D24; font-weight: bold">;
  1207.  
  1208. [604]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  1209.  
  1210. [605]    =>     &nbsp;&nbsp;&nbsp;&nbsp;}
  1211.  
  1212. [606]    =>    
  1213.  
  1214. [607]    =>    
  1215.  
  1216. [608]    =>    
  1217.  
  1218. [609]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**
  1219.  
  1220. [610]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Starts/stops&nbsp;stopwatch.
  1221.  
  1222. [611]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;string&nbsp;&nbsp;name
  1223.  
  1224. [612]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;float&nbsp;&nbsp;&nbsp;elapsed&nbsp;seconds
  1225.  
  1226. [613]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
  1227.  
  1228. [614]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;function&nbsp;</span><span style="color: #000">timer</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$name&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">NULL</span><span style="color: #D24; font-weight: bold">)
  1229.  
  1230. [615]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  1231.  
  1232. [616]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;</span><span style="color: #000">$time&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;array();
  1233.  
  1234. [617]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$now&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">microtime</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">TRUE</span><span style="color: #D24; font-weight: bold">);
  1235.  
  1236. [618]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$delta&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;isset(</span><span style="color: #000">$time</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$name</span><span style="color: #D24; font-weight: bold">])&nbsp;?&nbsp;</span><span style="color: #000">$now&nbsp;</span><span style="color: #D24; font-weight: bold">-&nbsp;</span><span style="color: #000">$time</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$name</span><span style="color: #D24; font-weight: bold">]&nbsp;:&nbsp;</span><span style="color: #000">0</span><span style="color: #D24; font-weight: bold">;
  1237.  
  1238. [619]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$time</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$name</span><span style="color: #D24; font-weight: bold">]&nbsp;=&nbsp;</span><span style="color: #000">$now</span><span style="color: #D24; font-weight: bold">;
  1239.  
  1240. [620]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000">$delta</span><span style="color: #D24; font-weight: bold">;
  1241.  
  1242. [621]    =>     &nbsp;&nbsp;&nbsp;&nbsp;}
  1243.  
  1244. [622]    =>    
  1245.  
  1246. [623]    =>    
  1247.  
  1248. [624]    =>    
  1249.  
  1250. [625]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**
  1251.  
  1252. [626]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Dumps&nbsp;information&nbsp;about&nbsp;a&nbsp;variable&nbsp;in&nbsp;Nette&nbsp;Debug&nbsp;Bar.
  1253.  
  1254. [627]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;mixed&nbsp;&nbsp;variable&nbsp;to&nbsp;dump
  1255.  
  1256. [628]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;string&nbsp;optional&nbsp;title
  1257.  
  1258. [629]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;mixed&nbsp;&nbsp;variable&nbsp;itself
  1259.  
  1260. [630]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
  1261.  
  1262. [631]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;function&nbsp;</span><span style="color: #000">barDump</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$var</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$title&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">NULL</span><span style="color: #D24; font-weight: bold">)
  1263.  
  1264. [632]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  1265.  
  1266. [633]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$productionMode</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  1267.  
  1268. [634]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$dump&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;array();
  1269.  
  1270. [635]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;((</span><span style="color: #000">is_array</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$var</span><span style="color: #D24; font-weight: bold">)&nbsp;?&nbsp;</span><span style="color: #000">$var&nbsp;</span><span style="color: #D24; font-weight: bold">:&nbsp;array(</span><span style="color: #080">''&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #000">$var</span><span style="color: #D24; font-weight: bold">))&nbsp;as&nbsp;</span><span style="color: #000">$key&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #000">$val</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  1271.  
  1272. [636]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">$dump</span><span style="color: #D24; font-weight: bold">[</span><span style="color: #000">$key</span><span style="color: #D24; font-weight: bold">]&nbsp;=&nbsp;</span><span style="color: #000">Helpers</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">clickableDump</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$val</span><span style="color: #D24; font-weight: bold">);
  1273.  
  1274. [637]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  1275.  
  1276. [638]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$dumpPanel</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">data</span><span style="color: #D24; font-weight: bold">[]&nbsp;=&nbsp;array(</span><span style="color: #080">'title'&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #000">$title</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #080">'dump'&nbsp;</span><span style="color: #D24; font-weight: bold">=&gt;&nbsp;</span><span style="color: #000">$dump</span><span style="color: #D24; font-weight: bold">);
  1277.  
  1278. [639]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  1279.  
  1280. [640]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000">$var</span><span style="color: #D24; font-weight: bold">;
  1281.  
  1282. [641]    =>     &nbsp;&nbsp;&nbsp;&nbsp;}
  1283.  
  1284. [642]    =>    
  1285.  
  1286. [643]    =>    
  1287.  
  1288. [644]    =>    
  1289.  
  1290. [645]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**
  1291.  
  1292. [646]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Sends&nbsp;message&nbsp;to&nbsp;FireLogger&nbsp;console.
  1293.  
  1294. [647]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;mixed&nbsp;&nbsp;&nbsp;message&nbsp;to&nbsp;log
  1295.  
  1296. [648]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;bool&nbsp;&nbsp;&nbsp;&nbsp;was&nbsp;successful?
  1297.  
  1298. [649]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/
  1299.  
  1300. [650]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;function&nbsp;</span><span style="color: #000">fireLog</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$message</span><span style="color: #D24; font-weight: bold">)
  1301.  
  1302. [651]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  1303.  
  1304. [652]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$productionMode</span><span style="color: #D24; font-weight: bold">)&nbsp;{
  1305.  
  1306. [653]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$fireLogger</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">log</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$message</span><span style="color: #D24; font-weight: bold">);
  1307.  
  1308. [654]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
  1309.  
  1310. [655]    =>     &nbsp;&nbsp;&nbsp;&nbsp;}
  1311.  
  1312. [656]    =>    
  1313.  
  1314. [657]    =>    
  1315.  
  1316. [658]    =>    
  1317.  
  1318. [659]    =>     &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;function&nbsp;</span><span style="color: #000">isHtmlMode</span><span style="color: #D24; font-weight: bold">()
  1319.  
  1320. [660]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  1321.  
  1322. [661]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;!</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$ajaxDetected&nbsp;</span><span style="color: #D24; font-weight: bold">&amp;&amp;&nbsp;!</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$consoleMode
  1323.  
  1324. [662]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">&amp;&amp;&nbsp;!</span><span style="color: #000">preg_match</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">'#^Content-Type:&nbsp;(?!text/html)#im'</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">implode</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #080">"\n"</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">headers_list</span><span style="color: #D24; font-weight: bold">()));
  1325.  
  1326. [663]    =>     &nbsp;&nbsp;&nbsp;&nbsp;}
  1327.  
  1328. [664]    =>    
  1329.  
  1330. [665]    =>    
  1331.  
  1332. [666]    =>    
  1333.  
  1334. [667]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #998; font-style: italic">/**&nbsp;@deprecated&nbsp;*/
  1335.  
  1336. [668]    =>     &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #D24; font-weight: bold">public&nbsp;static&nbsp;function&nbsp;</span><span style="color: #000">addPanel</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">IBarPanel&nbsp;$panel</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$id&nbsp;</span><span style="color: #D24; font-weight: bold">=&nbsp;</span><span style="color: #000">NULL</span><span style="color: #D24; font-weight: bold">)
  1337.  
  1338. [669]    =>     &nbsp;&nbsp;&nbsp;&nbsp;{
  1339.  
  1340. [670]    =>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000">self</span><span style="color: #D24; font-weight: bold">::</span><span style="color: #000">$bar</span><span style="color: #D24; font-weight: bold">-&gt;</span><span style="color: #000">addPanel</span><span style="color: #D24; font-weight: bold">(</span><span style="color: #000">$panel</span><span style="color: #D24; font-weight: bold">,&nbsp;</span><span style="color: #000">$id</span><span style="color: #D24; font-weight: bold">);
  1341.  
  1342. [671]    =>     &nbsp;&nbsp;&nbsp;&nbsp;}
  1343.  
  1344. [672]    =>    
  1345.  
  1346. [673]    =>     }
  1347.  
  1348. [674]    =>     </span>
Advertisement
Add Comment
Please, Sign In to add comment