Subversion Repositories personal-webbase

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. <?php
  2.  
  3. if (!defined('WBLEGAL')) die('Kann nicht ohne Personal WebBase ausgef&uuml;hrt werden.');
  4.  
  5. // TODO: text-wrap mit css funktioniert nicht
  6.  
  7. // TODO: Adresse konfigurierbar machen
  8. // "Es wird standardgemäß für jede Webseite eine W3C Markup Validation durchgeführt.
  9. // ist das PEAR Package 'Services_W3C_HTMLValidator' (http://pear.php.net/package/Services_W3C_HTMLValidator)
  10. // sowie eine lokale Installation des W3C-Validators (http://validator.w3.org/) installiert,
  11. // wird die Validation direkt über die API (http://validator.w3.org/docs/api.html) durchgeführt.
  12. // Ansonsten wird das Fragment zu folgender externen Seite gepostet und das Ergebnis geparsed. [Hier Adresse eingebbar machen]
  13. // Warnung: Die Fragmentdaten enthalten alle Daten, die übertragen wurden inklusive Daten Ihrer Benutzer."
  14.  
  15. //define('URL_TO_VALIDATOR', 'http://validator.w3.org/');
  16. define('URL_TO_VALIDATOR', 'https://www.personal-webbase.de/w3c-markup-validator/');
  17.  
  18. // TODO: W3C Check auch komplett deaktivierbar machen
  19. $w3c_check_enabled = true;
  20.  
  21. if (isset($configuration['common_debugger']['debug']) && ($configuration['common_debugger']['debug']))
  22. {
  23.         if ($w3c_check_enabled) {
  24.                 if (file_exists('modules/'.$m2.'/includes/w3c_fragment_checker.class.php')) {
  25.                         include 'modules/'.$m2.'/includes/w3c_fragment_checker.class.php';
  26.                 }
  27.         }
  28.  
  29.         // Puffer der Seite auslesen
  30.         $buffered_output = ob_get_contents();
  31.         @ob_end_clean();
  32.  
  33.         // Alle definierten Variablen
  34.         $dbg_def_vars = get_defined_vars();
  35.         $dbg_var_list = '';
  36.         foreach ($dbg_def_vars as $dbg_def_var_key => $dbg_def_var_val) {
  37.                 $dbg_var_list .= '$'.$dbg_def_var_key."\r\n";
  38.         }
  39.         unset($dbg_def_var_val);
  40.         unset($dbg_def_var_key);
  41.         unset($dbg_def_vars);
  42.  
  43.         // Alle definierten Konstanten
  44.         $dbg_def_consts = get_defined_constants();
  45.         $dbg_const_list = '';
  46.         foreach ($dbg_def_consts as $dbg_def_const_key => $dbg_def_const_val) {
  47.                 $dbg_const_list .= $dbg_def_const_key."\r\n";
  48.         }
  49.         unset($dbg_def_const_val);
  50.         unset($dbg_def_const_key);
  51.         unset($dbg_def_consts);
  52.  
  53.         // Alle definierten Benutzerfunktionen
  54.         $dbg_def_functs = get_defined_functions();
  55.         $dbg_user_funct_list = '';
  56.         foreach ($dbg_def_functs['user'] as $dbg_def_user_funct_key => $dbg_def_user_funct_val) {
  57.                 $dbg_user_funct_list .= $dbg_def_user_funct_val."()\r\n";
  58.         }
  59.         unset($dbg_def_user_funct_val);
  60.         unset($dbg_def_user_funct_key);
  61.         unset($dbg_def_functs);
  62.  
  63.         // Alle deklarierten Klassen
  64.         $dbg_def_class = get_declared_classes();
  65.         $dbg_class_list = '';
  66.         foreach ($dbg_def_class as $dbg_def_class_key => $dbg_def_class_val) {
  67.                 $dbg_class_list .= $dbg_def_class_val."\r\n";
  68.         }
  69.         unset($dbg_def_class_val);
  70.         unset($dbg_def_class_key);
  71.         unset($dbg_def_class);
  72.  
  73.         // Alle deklarierten Interfaces
  74.         $dbg_def_interfaces = get_declared_interfaces();
  75.         $dbg_interfaces_list = '';
  76.         foreach ($dbg_def_interfaces as $dbg_def_interfaces_key => $dbg_def_interfaces_val) {
  77.                 $dbg_interfaces_list .= $dbg_def_interfaces_val."\r\n";
  78.         }
  79.         unset($dbg_def_interfaces_val);
  80.         unset($dbg_def_interfaces_key);
  81.         unset($dbg_def_interfaces);
  82.  
  83.         // Sessiondaten Dump
  84.         ob_start();
  85.         print_r($_SESSION);
  86.         $session_content .= ob_get_contents();
  87.         @ob_end_clean();
  88.  
  89.         // Seite automatisch auf W3C-Konformität prüfen
  90.         if ($w3c_check_enabled) {
  91.                 $dbg_w3c_start_time = getmicrotime();
  92.                 $dbg_w3c_check_result = w3c_fragment_checker::auto_perform_w3c_check($buffered_output, add_trailing_path_delimiter(URL_TO_VALIDATOR));
  93.                 if (is_null($dbg_w3c_check_result)) {
  94.                         $dbg_w3c_check_result_text = '<span class="warning"><b>Fehler bei W3C-Pr&uuml;fung!</b></span>';
  95.                 } else if ($dbg_w3c_check_result) {
  96.                         $dbg_w3c_check_result_text = '<span class="green"><b>Seite ist W3C-Konform!</b></span>';
  97.                 } else {
  98.                         $dbg_w3c_check_result_text = '<span class="red"><b>Seite ist nicht W3C-Konform!</b></span>';
  99.                 }
  100.                 $dbg_w3c_end_time = getmicrotime();
  101.                 unset($dbg_w3c_check_result);
  102.                 $dbg_w3c_time = $dbg_w3c_end_time - $dbg_w3c_start_time;
  103.                 unset($dbg_w3c_end_time);
  104.                 unset($dbg_w3c_start_time);
  105.         } else {
  106.                 $dbg_w3c_check_result_text = '<span class="grey"><b>W3C-Pr&uuml;fung ist abgeschaltet!</b></span>';
  107.                 $dbg_w3c_time = 0;
  108.         }
  109.  
  110.         // Zeitberechnungen
  111.         $time_end = getmicrotime();
  112.         $time  = round($time_end - $time_start + $dbg_w3c_time, 4);
  113.         $time2 = round($mysql_time, 4);
  114.         $time3 = round($xml_time, 4);
  115.         $time5 = round($dbg_w3c_time, 4);
  116.         $time4 = $time - $time2 - $time3 - $time5;
  117.         $time_analyze = "Seite in $time Sekunden generiert ($mysql_count MySQL-Anfragen: $time2; $xml_count XML-Anfragen: $time3; W3C-Anfrage: $time5; Rest: $time4)";
  118.         unset($time);
  119.         unset($time2);
  120.         unset($time3);
  121.         unset($time4);
  122.         unset($time5);
  123.  
  124.         // TODO: Status für dieses Toggle merken ( http://www.traum-projekt.com/forum/101-javascript/78788-div-aufklappen-zuklappen-status-merken.html )
  125.         // TODO: Ein- und Ausklappen anderer Text...
  126.         // IDEE: Togglefunktion ins Framework nehmen?
  127.  
  128.         $debugging = '<script language="JavaScript" type="text/javascript">
  129.         <!--
  130.         function toggleDebug() {
  131.                 var id = "pwb_debug_mode";
  132.                 if(document.getElementById(id).style.display == "none")
  133.                 {
  134.                         document.getElementById(id).style.display = "block";
  135.                 }
  136.                 else
  137.                 {
  138.                         document.getElementById(id).style.display = "none";
  139.                 }
  140.         }
  141.         // -->
  142.         </script>
  143.  
  144.         <div id="pwb_debug_mode" style="display:none"><hr><center><span class="red"><font size="+1"><b>Debug-Modus</b></font></span>
  145.  
  146.         <p>'.$dbg_w3c_check_result_text.'</p>
  147.  
  148.         <form method="post" enctype="multipart/form-data" action="'.add_trailing_path_delimiter(URL_TO_VALIDATOR).'check" target="_blank">
  149.         <input type="hidden" name="fragment" value="'.htmlentities($buffered_output).'">
  150.         <input type="submit" value="Ergebnis anzeigen" class="button" onmouseover="this.className=\'button_act\';" onmouseout="this.className=\'button\';">
  151.         </form>
  152.  
  153.         <p><b>MySQL-Transkript</b></p>
  154.  
  155.         <textarea cols="100" rows="10" style="text-wrap:none">'.$sql_transkript.'</textarea>
  156.  
  157.         <p><b>Session-Inhalt (Name: '.session_name().', ID: '.session_id().')</b></p>
  158.  
  159.         <textarea cols="100" rows="10" style="text-wrap:none">'.$session_content.'</textarea>
  160.  
  161.         <p><b>Definierte Variablen</b></p>
  162.  
  163.         <textarea cols="100" rows="10" style="text-wrap:none">'.$dbg_var_list.'</textarea>
  164.  
  165.         <p><b>Definierte Konstanten</b></p>
  166.  
  167.         <textarea cols="100" rows="10" style="text-wrap:none">'.$dbg_const_list.'</textarea>
  168.  
  169.         <p><b>Definierte Funktionen</b></p>
  170.  
  171.         <textarea cols="100" rows="10" style="text-wrap:none">'.$dbg_user_funct_list.'</textarea>
  172.  
  173.         <p><b>Deklarierte Klassen</b></p>
  174.  
  175.         <textarea cols="100" rows="10" style="text-wrap:none">'.$dbg_class_list.'</textarea>
  176.  
  177.         <p><b>Deklarierte Interfaces</b></p>
  178.  
  179.         <textarea cols="100" rows="10" style="text-wrap:none">'.$dbg_interfaces_list.'</textarea>
  180.  
  181.         <p>'.$time_analyze.'</p></center><hr></div>
  182.  
  183.         <p align="center">[ <a href="javascript:toggleDebug()">Debug-Modus anzeigen/verstecken</a> ]</p>';
  184.  
  185.         echo str_replace('</body>', $debugging.'</body>', $buffered_output);
  186.  
  187.         unset($debugging);
  188.         unset($buffered_output);
  189. }
  190.  
  191. ?>