From f9db4249a3a7b73f6c712cfa32b029e6d09595f5 Mon Sep 17 00:00:00 2001
From: Frank Karlitschek <karlitschek@kde.org>
Date: Fri, 6 Jan 2012 17:21:24 +0100
Subject: [PATCH] add a formfactor session variable which is autodetected but
 can also manually overwritten via a get variable. currently we have:         
 * default -> the normal desktop browser interface          * mobile ->
 interface for smartphones          * tablet -> interface for tablets         
 * standalone -> the default interface but without header, footer and sidebar.
 just the application. useful to use just a specific app on the desktop in a
 standalone window. In the future we should adapt the userinterface to the
 specific formfactor.

---
 lib/base.php | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/lib/base.php b/lib/base.php
index 700236c96c..0954e3615b 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -70,6 +70,31 @@ class OC{
 		}
 	}
 
+	/**
+	 * autodetects the formfactor of the used device
+	 * default -> the normal desktop browser interface
+	 * mobile -> interface for smartphones
+	 * tablet -> interface for tablets
+	 * standalone -> the default interface but without header, footer and sidebar. just the application. useful to ue just a specific app on the desktop in a standalone window.
+	 */
+	public static function detectFormfactor(){
+		// please add more useragent strings for other devices
+		if(isset($_SERVER['HTTP_USER_AGENT'])){
+			if(stripos($_SERVER['HTTP_USER_AGENT'],'ipad')>0) {
+				$mode='tablet';
+			}elseif(stripos($_SERVER['HTTP_USER_AGENT'],'iphone')>0){
+				$mode='mobile';
+			}elseif((stripos($_SERVER['HTTP_USER_AGENT'],'N9')>0) and (stripos($_SERVER['HTTP_USER_AGENT'],'nokia')>0)){
+				$mode='mobile';
+			}else{
+				$mode='default';
+			}
+		}else{
+			$mode='default';
+		}
+		return($mode);
+	}
+
 	public static function init(){
 		// register autoloader
 		spl_autoload_register(array('OC','autoload'));
@@ -130,6 +155,16 @@ class OC{
 		ini_set('session.cookie_httponly','1;');
 		session_start();
 
+		// if the formfactor is not yet autodetected do the autodetection now. For possible forfactors check the detectFormfactor documentation
+		if(!isset($_SESSION['formfactor'])){
+			$_SESSION['formfactor']=OC::detectFormfactor();
+		}
+		// allow manual override via GET parameter
+		if(isset($_GET['formfactor'])){
+			$_SESSION['formfactor']=$_GET['formfactor'];
+		}
+
+
 		// Add the stuff we need always
 		OC_Util::addScript( "jquery-1.6.4.min" );
 		OC_Util::addScript( "jquery-ui-1.8.14.custom.min" );
@@ -214,5 +249,7 @@ if(!function_exists('get_temp_dir')) {
 
 require_once('fakedirstream.php');
 
+
+
 // FROM search.php
 new OC_Search_Provider_File();
-- 
GitLab