From 45bb6f5fd49cc5f86107176cf34f1b097698ed72 Mon Sep 17 00:00:00 2001
From: Bart Visscher <bartv@thisnet.nl>
Date: Sun, 12 Feb 2012 20:38:06 +0100
Subject: [PATCH] OC_Response: add redirect function

---
 apps/contacts/thumbnail.php |  6 ++----
 lib/response.php            | 21 ++++++++++++++++++++-
 2 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/apps/contacts/thumbnail.php b/apps/contacts/thumbnail.php
index d7043b75f0..9c68e0789b 100644
--- a/apps/contacts/thumbnail.php
+++ b/apps/contacts/thumbnail.php
@@ -30,10 +30,8 @@ function getStandardImage(){
 	$date = new DateTime('now');
 	$date->add(new DateInterval('P10D'));
 	header('Expires: '.$date->format(DateTime::RFC2822));
-	header('Cache-Control: cache');
-	header('Pragma: cache');
-	header("HTTP/1.1 307 Temporary Redirect");
-	header('Location: '.OC_Helper::imagePath('contacts', 'person.png'));
+	OC_Response::enableCaching();
+	OC_Response::redirect(OC_Helper::imagePath('contacts', 'person.png'));
 }
 
 if(!function_exists('imagecreatefromjpeg')) {
diff --git a/lib/response.php b/lib/response.php
index c254ddd10e..5f095a0aff 100644
--- a/lib/response.php
+++ b/lib/response.php
@@ -7,7 +7,9 @@
  */
 
 class OC_Response {
+	const STATUS_FOUND = 304;
 	const STATUS_NOT_MODIFIED = 304;
+	const STATUS_TEMPORARY_REDIRECT = 307;
 
 	static public function enableCaching() {
 		header('Cache-Control: cache');
@@ -15,12 +17,29 @@ class OC_Response {
 	}
 
 	static public function setStatus($status) {
+		$protocol = $_SERVER['SERVER_PROTOCOL'];
 		switch($status) {
 			case self::STATUS_NOT_MODIFIED:
 				$status = $status . ' Not Modified';
 				break;
+			case self::STATUS_TEMPORARY_REDIRECT:
+				if ($protocol == 'HTTP/1.1') {
+					$status = $status . ' Temporary Redirect';
+					break;
+				} else {
+					$status = self::STATUS_FOUND;
+					// fallthrough
+				}
+			case self::STATUS_FOUND;
+				$status = $status . ' Found';
+				break;
 		}
-		header($_SERVER["SERVER_PROTOCOL"].' '.$status);
+		header($protocol.' '.$status);
+	}
+
+	static public function redirect($location) {
+		self::setStatus(self::STATUS_TEMPORARY_REDIRECT);
+		header('Location: '.$location);
 	}
 
 	static public function setETagHeader($etag) {
-- 
GitLab