00001 <?php 00002 require_once TM_PATH . 'constants.php'; 00003 require_once TM_PATH . 'juelich/web/JuelichErrorLog.php'; 00004 00014 class JuelichError { 00015 00016 var $log; 00018 function JuelichError() { 00019 $this->log = new JuelichErrorLog; 00020 } 00021 00033 function printError ($class, $debug_info = '') { 00034 $httpCodes = array( 00035 '404' => '404 Not Found', 00036 '500' => '500 Internal Server Error', 00037 '503' => '503 Service Unavailable'); 00038 $classHead = ''; 00039 $httpCode = ''; 00040 $httpExtra = ''; 00041 switch ($class) { 00042 case 1: 00043 $classHead = 'Keine Verbindung zur Datenbank.'; 00044 $httpCode = '503'; 00045 $httpExtra = 'Retry-After: 60'; 00046 break; 00047 case 2: 00048 $classHead = 'SQL-Statement falsch.'; 00049 $httpCode = '500'; 00050 break; 00051 case 3: 00052 $classHead = 'Datenbank-Zugriffsfehler.'; 00053 $httpCode = '500'; 00054 break; 00055 case 4: 00056 $classHead = 'Applikations-Fehler.'; 00057 $httpCode = '500'; 00058 break; 00059 case 5: 00060 $classHead = 'Seite unbekannt.'; 00061 $httpCode = '404'; 00062 break; 00063 case 6: 00064 $classHead = 'Fehler in der Adminstration'; 00065 $httpCode = '000'; 00066 default: 00067 $classHead = 'Unbekannter Fehler.'; 00068 $httpCode = '500'; 00069 break; 00070 } 00071 $this->log->logError($httpCode, 00072 $classHead, 00073 $debug_info); 00074 00075 if (JUELICH_DEBUG || $class == 6) { 00076 echo "<p>Fehler Nr.: $class<br>" 00077 . "$classHead<br>" 00078 . nl2br($debug_info) 00079 . "</p>\n"; 00080 } 00081 else { 00082 $m = $httpCodes[$httpCode]; 00083 header("HTTP/1.0 $m"); 00084 if (!empty($httpExtra)) { 00085 header($httpExtra); 00086 } 00087 echo $this->getErrorDocument($httpCode); 00088 } 00089 return; 00090 } 00091 00099 function getErrorDocument($code) { 00100 $heading = array( 00101 '500' => array(1 => 'Serverfehler!', 00102 'Erreur du serveur!', 00103 'Server error!'), 00104 '503' => array(1 => 'Zugriff nicht möglich!', 00105 'Service inaccessible!', 00106 'Service unavailable!'), 00107 '404' => array(1 => 'Objekt nicht gefunden!', 00108 'Objet non trouvé!', 00109 'Object not found!') 00110 ); 00111 00112 $extra = array( 00113 '500' => array(1 => 'Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.', 00114 'Le serveur a èté victime d\'une erreur interne et n\'a pas été capable de faire aboutir votre requête.', 00115 'The server encountered an internal error and was unable to complete your request.'), 00116 '503' => array(1 => 'Der Server ist derzeit nicht in der Lage die Anfrage zu bearbeiten. Entweder ist der Server derzeit überlastet oder wegen Wartungsarbeiten nicht verfügbar. Bitte versuchen Sie es später wieder.', 00117 'En raison de travaux de maintenance ou de problèmes de capacité le serveur n\'est pas en mesure de répondre à votre requête pour l\'instant. Veuillez réessayer plus tard.', 00118 'The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.'), 00119 '404' => array(1 => 'Der angeforderte URL konnte auf dem Server nicht gefunden werden.', 00120 'L\'URL requise n\'a pu etre trouvée sur ce serveur.', 00121 'The requested URL was not found on this server.') 00122 ); 00123 $contact = array(1 => 'Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den <a href="mailto:%s">Webmaster</a> hierüber.', 00124 'Si vous pensez qu\'il s\'agit d\'une erreur du serveur, veuillez contacter le <a href="mailto:%s">gestionnaire du site</a>.', 00125 'If you think this is a server error, please contact the <a href="mailto:%s">webmaster</a>.'); 00126 00127 $l10n = getDataInstance()->getAppData('l10n'); 00128 $h = $heading[$code][$l10n]; 00129 $e = $extra[$code][$l10n]; 00130 $c = sprintf($contact[$l10n], $_SERVER['SERVER_ADMIN']); 00131 $t = strftime('%a %b %d %T %Y %Z'); 00132 $s = $_SERVER['SERVER_NAME']; 00133 00134 00135 return "<html> 00136 <head> 00137 <title>$h</title> 00138 </head> 00139 <body> 00140 <h1>$h</h1> 00141 <p>$e</p> 00142 <p>$c</p> 00143 <h2>Error $code</h2> 00144 <p> 00145 <adress> 00146 <a href=\"/\">$s</a><br> 00147 $t 00148 </adress> 00149 </body> 00150 </html> 00151 "; 00152 } 00153 00154 } 00155 00156 ?>