From 75bc25f906c9b5f1cb0f1da8f3ec05b5e42deb9b Mon Sep 17 00:00:00 2001
From: ringmaster <epithet@gmail.com>
Date: Mon, 12 May 2014 11:08:28 -0400
Subject: [PATCH] Allow apps to create custom session handlers.

---
 lib/base.php | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/lib/base.php b/lib/base.php
index f8266ac649..d011a2e9e2 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -378,9 +378,17 @@ class OC {
 		//set the session object to a dummy session so code relying on the session existing still works
 		self::$session = new \OC\Session\Memory('');
 
+		// Let the session name be changed in the initSession Hook
+		$sessionName = OC_Util::getInstanceId();
+
 		try {
-			// set the session name to the instance id - which is unique
-			self::$session = new \OC\Session\Internal(OC_Util::getInstanceId());
+			// Allow session apps to create a custom session object
+			$useCustomSession = false;
+			OC_Hook::emit('OC', 'initSession', array('session' => &self::$session, 'sessionName' => &$sessionName, 'useCustomSession' => &$useCustomSession));
+			if(!$useCustomSession) {
+				// set the session name to the instance id - which is unique
+				self::$session = new \OC\Session\Internal($sessionName);
+			}
 			// if session cant be started break with http 500 error
 		} catch (Exception $e) {
 			//show the user a detailed error page
@@ -537,6 +545,7 @@ class OC {
 		self::$server = new \OC\Server();
 
 		self::initTemplateEngine();
+		OC_App::loadApps(array('session'));
 		if (!self::$CLI) {
 			self::initSession();
 		} else {
-- 
GitLab