From 1e0a2a9387a6affad61fd94146862d9571df6dd8 Mon Sep 17 00:00:00 2001
From: alvaro <alvaro@alia.(none)>
Date: Fri, 29 Jun 2012 17:21:42 -0700
Subject: [PATCH] Possible to create pages for different http status (e.g.,
 404)

TODO: Apply Haanga to it
---
 classes/HTTPStatus.php | 56 +++++++++++++++++++++++++++++++++---------
 common.inc.php         |  9 ++++---
 2 files changed, 49 insertions(+), 16 deletions(-)

diff --git a/classes/HTTPStatus.php b/classes/HTTPStatus.php
index 705a9a4b..12e3de29 100644
--- a/classes/HTTPStatus.php
+++ b/classes/HTTPStatus.php
@@ -3,37 +3,69 @@
 class HTTPStatus{
   
   public static function send303($uri, $ext){
+    global $conf;
+    $file = $conf['home'].$conf['httpStatus']['directory']."/303.template";
+    if(file_exists($file)){
+      $content = file_get_contents($file);
+    }else{
+      $content = $uri."\n\n";
+    }
   	header("HTTP/1.0 303 See Other");
   	header("Location: ".$uri);
   	header("Content-type: ".$ext);
-  	echo $uri."\n\n";
+  	echo $content;
   	exit(0);
   }
 
-  public static function send401($msg){
+  public static function send401($uri){
+    global $conf;
+    $file = $conf['home'].$conf['httpStatus']['directory']."/401.template";
+    if(file_exists($file)){
+      $content = file_get_contents($file);
+    }else{
+      $content = $uri."\n\n";
+    }
   	header("HTTP/1.0 401 Forbidden");
-  	echo $msg;
+  	echo $content;
   	exit(0);
   }
   
   public static function send404($uri){
-  	header("HTTP/1.0 404 Not Found");
-  	echo "LODSPeaKr could not find ".$uri." or information about it.\nNo URIs in the triple store, or services configured with that URI\n";
+    global $conf;
+    $file = $conf['home'].$conf['httpStatus']['directory']."/404.template";
+    if(file_exists($file)){
+      $content = file_get_contents($file);
+    }else{
+      $content = "LODSPeaKr could not find ".$uri." or information about it.\nNo URIs in the triple store, or services configured with that URI\n";
+    }  	
+    header("HTTP/1.0 404 Not Found");
+  	echo $content;
   	exit(0);
   }
   
   public static function send406($uri){
-  	header("HTTP/1.0 406 Not Acceptable");
-  	echo "LODSPeaKr can't find a representation suitable for the content type you accept\n\n";
+    global $conf;
+    $file = $conf['home'].$conf['httpStatus']['directory']."/406.template";
+    if(file_exists($file)){
+      $content = file_get_contents($file);
+    }else{
+      $content = "LODSPeaKr can't find a representation suitable for the content type you accept for $uri\n\n";
+    }  	
+    header("HTTP/1.0 406 Not Acceptable");
+  	echo $content;
   	exit(0);
   }
   
-  public static function send500($msg = null){
+  public static function send500($uri){
+    global $conf;
+    $file = $conf['home'].$conf['httpStatus']['directory']."/406.template";
+    if(file_exists($file)){
+      $content = file_get_contents($file);
+    }else{
+      $content = "An internal error ocurred. Please try later\n\n";
+    }  
   	header("HTTP/1.0 500 Internal Server Error");
-  	echo "An internal error ocurred. Please try later\n\n";
-  	if($msg != null){
-  	  echo $msg;
-  	}
+  	echo $content;
   	exit(0);
   }
 }
diff --git a/common.inc.php b/common.inc.php
index 4cb0b1d2..d3018a43 100644
--- a/common.inc.php
+++ b/common.inc.php
@@ -9,6 +9,7 @@ $conf['endpoint']['dbpedia'] = 'http://dbpedia.org/sparql';
 $conf['endpoint']['logd'] = 'http://logd.tw.rpi.edu/sparql';
 
 $conf['metadata']['db']['location'] = 'meta/db.sqlite';
+$conf['httpStatus']['directory'] = 'components/status';
 
 include_once('namespaces.php');
 
@@ -33,10 +34,10 @@ $conf['http_accept']['json'] = array('application/json', 'application/x-javascri
 $conf['http_accept']['nt']   = array('text/plain');
 
 
-$conf['service']['prefix'] = 'services';
-
-$conf['type']['prefix'] = 'types';
-$conf['uri']['prefix'] = 'uris';
+$conf['service']['prefix']      = 'services';
+$conf['type']['prefix']         = 'types';
+$conf['uri']['prefix']          = 'uris';
+$conf['redirect']['prefix']     = 'redirect';
 
 //Frontpage when user goes to http://example.org/
 $conf['root'] = 'index.html';
-- 
GitLab