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 ?>