Overview

Packages

  • Auth
  • Core
  • Horde
    • Imsp
  • None
  • Notification

Classes

  • Horde
  • Horde_Config
  • Horde_Config_Form
  • Horde_Core_ActiveSync_Connector
  • Horde_Core_ActiveSync_Driver
  • Horde_Core_Ajax_Application
  • Horde_Core_Ajax_Imple
  • Horde_Core_Ajax_Imple_AutoCompleter
  • Horde_Core_Ajax_Imple_Geocoder_Geonames
  • Horde_Core_Ajax_Imple_SpellChecker
  • Horde_Core_Alarm_Handler_Notify
  • Horde_Core_Auth_Application
  • Horde_Core_Auth_Composite
  • Horde_Core_Auth_Ldap
  • Horde_Core_Auth_Msad
  • Horde_Core_Auth_Shibboleth
  • Horde_Core_Auth_Signup_Base
  • Horde_Core_Auth_Signup_Form
  • Horde_Core_Auth_Signup_Null
  • Horde_Core_Auth_Signup_Sql
  • Horde_Core_Auth_Signup_SqlObject
  • Horde_Core_Autoloader_Callback_Mime
  • Horde_Core_Autoloader_Callback_Nls
  • Horde_Core_Block
  • Horde_Core_Block_Collection
  • Horde_Core_Block_Layout
  • Horde_Core_Block_Layout_Manager
  • Horde_Core_Block_Layout_View
  • Horde_Core_Block_Upgrade
  • Horde_Core_Browser
  • Horde_Core_Bundle
  • Horde_Core_Cli
  • Horde_Core_Controller_NotFound
  • Horde_Core_Controller_RequestConfiguration
  • Horde_Core_Controller_RequestMapper
  • Horde_Core_Controller_SettingsFinder
  • Horde_Core_Db_Migration
  • Horde_Core_Factory_ActiveSyncBackend
  • Horde_Core_Factory_ActiveSyncServer
  • Horde_Core_Factory_ActiveSyncState
  • Horde_Core_Factory_Ajax
  • Horde_Core_Factory_Alarm
  • Horde_Core_Factory_Auth
  • Horde_Core_Factory_AuthSignup
  • Horde_Core_Factory_Base
  • Horde_Core_Factory_BlockCollection
  • Horde_Core_Factory_Browser
  • Horde_Core_Factory_Cache
  • Horde_Core_Factory_Crypt
  • Horde_Core_Factory_Data
  • Horde_Core_Factory_Db
  • Horde_Core_Factory_DbBase
  • Horde_Core_Factory_DbPear
  • Horde_Core_Factory_Dns
  • Horde_Core_Factory_Editor
  • Horde_Core_Factory_Facebook
  • Horde_Core_Factory_Group
  • Horde_Core_Factory_History
  • Horde_Core_Factory_HttpClient
  • Horde_Core_Factory_Identity
  • Horde_Core_Factory_Image
  • Horde_Core_Factory_Imple
  • Horde_Core_Factory_Imsp
  • Horde_Core_Factory_ImspAuth
  • Horde_Core_Factory_Injector
  • Horde_Core_Factory_KolabServer
  • Horde_Core_Factory_KolabSession
  • Horde_Core_Factory_KolabStorage
  • Horde_Core_Factory_Ldap
  • Horde_Core_Factory_Lock
  • Horde_Core_Factory_Logger
  • Horde_Core_Factory_LoginTasks
  • Horde_Core_Factory_Mail
  • Horde_Core_Factory_Mapper
  • Horde_Core_Factory_Matcher
  • Horde_Core_Factory_Memcache
  • Horde_Core_Factory_MimeViewer
  • Horde_Core_Factory_Notification
  • Horde_Core_Factory_Perms
  • Horde_Core_Factory_PermsCore
  • Horde_Core_Factory_Prefs
  • Horde_Core_Factory_Request
  • Horde_Core_Factory_Secret
  • Horde_Core_Factory_SessionHandler
  • Horde_Core_Factory_Share
  • Horde_Core_Factory_ShareBase
  • Horde_Core_Factory_Template
  • Horde_Core_Factory_TextFilter
  • Horde_Core_Factory_ThemesCache
  • Horde_Core_Factory_Token
  • Horde_Core_Factory_Tree
  • Horde_Core_Factory_Twitter
  • Horde_Core_Factory_UrlShortener
  • Horde_Core_Factory_Vfs
  • Horde_Core_Factory_View
  • Horde_Core_Factory_Weather
  • Horde_Core_Group_Ldap
  • Horde_Core_Log_Logger
  • Horde_Core_LoginTasks
  • Horde_Core_LoginTasks_Backend_Horde
  • Horde_Core_LoginTasks_SystemTask_Upgrade
  • Horde_Core_Mime_Viewer_Syntaxhighlighter
  • Horde_Core_Mime_Viewer_Vcard
  • Horde_Core_Notification_Event_Status
  • Horde_Core_Notification_Handler_Decorator_Hordelog
  • Horde_Core_Notification_Storage_Session
  • Horde_Core_Perms
  • Horde_Core_Perms_Ui
  • Horde_Core_Prefs_Cache_Session
  • Horde_Core_Prefs_Identity
  • Horde_Core_Prefs_Storage_Configuration
  • Horde_Core_Prefs_Storage_Hooks
  • Horde_Core_Prefs_Storage_Upgrade
  • Horde_Core_Prefs_Ui
  • Horde_Core_Prefs_Ui_Widgets
  • Horde_Core_Share_Driver
  • Horde_Core_Share_FactoryCallback
  • Horde_Core_Sidebar
  • Horde_Core_Text_Filter_Bbcode
  • Horde_Core_Text_Filter_Emails
  • Horde_Core_Text_Filter_Emoticons
  • Horde_Core_Text_Filter_Highlightquotes
  • Horde_Core_Translation
  • Horde_Core_Tree_Html
  • Horde_Core_Tree_Javascript
  • Horde_Core_Tree_Simplehtml
  • Horde_Core_Ui_FlagImage
  • Horde_Core_Ui_JsCalendar
  • Horde_Core_Ui_Language
  • Horde_Core_Ui_Layout
  • Horde_Core_Ui_ModalFormRenderer
  • Horde_Core_Ui_Pager
  • Horde_Core_Ui_Tabs
  • Horde_Core_Ui_TagCloud
  • Horde_Core_Ui_VarRenderer
  • Horde_Core_Ui_VarRenderer_Html
  • Horde_Core_Ui_VarRenderer_TablesetHtml
  • Horde_Core_Ui_Widget
  • Horde_ErrorHandler
  • Horde_Help
  • Horde_Menu
  • Horde_Registry
  • Horde_Registry_Api
  • Horde_Registry_Application
  • Horde_Registry_Caller
  • Horde_Registry_Nlsconfig
  • Horde_Script_Files
  • Horde_Session
  • Horde_Session_Null
  • Horde_Themes
  • Horde_Themes_Cache
  • Horde_Themes_Css
  • Horde_Themes_Element
  • Horde_Themes_Image
  • Horde_Themes_Sound

Exceptions

  • Horde_Exception_HookNotSet
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Factory for creating Horde_SessionHandler objects.
  4:  *
  5:  * Copyright 2010-2012 Horde LLC (http://www.horde.org/)
  6:  *
  7:  * @category Horde
  8:  * @package  Core
  9:  */
 10: class Horde_Core_Factory_SessionHandler extends Horde_Core_Factory_Injector
 11: {
 12:     /**
 13:      * Attempts to return a concrete instance based on $driver.
 14:      *
 15:      * @param string $driver  The type of concrete subclass to return
 16:      *                        (case-insensitive).
 17:      * @param array $params   A hash containing any additional configuration or
 18:      *                        connection parameters a subclass might need.
 19:      *
 20:      * @return Horde_SessionHandler_Driver  The newly created concrete
 21:      *                                      instance.
 22:      * @throws Horde_SessionHandler_Exception
 23:      */
 24:     public function create(Horde_Injector $injector)
 25:     {
 26:         global $conf;
 27: 
 28:         if (empty($conf['sessionhandler']['type'])) {
 29:             $driver = 'Builtin';
 30:         } else {
 31:             $driver = $conf['sessionhandler']['type'];
 32:             if (!strcasecmp($driver, 'None')) {
 33:                 $driver = 'Builtin';
 34:             }
 35:         }
 36:         $params = Horde::getDriverConfig('sessionhandler', $driver);
 37: 
 38:         $driver = basename(Horde_String::lower($driver));
 39:         $noset = false;
 40: 
 41:         switch ($driver) {
 42:         case 'builtin':
 43:             $noset = true;
 44:             break;
 45: 
 46:         case 'memcache':
 47:             $params['memcache'] = $injector->getInstance('Horde_Memcache');
 48:             break;
 49: 
 50:         case 'sql':
 51:             $factory = $injector->getInstance('Horde_Core_Factory_Db');
 52:             $config = $factory->getConfig('sessionhandler');
 53:             unset($config['umask'], $config['driverconfig']);
 54:             $params['db'] = $factory->createDb($config);
 55:             break;
 56:         }
 57: 
 58:         $class = 'Horde_SessionHandler_Storage_' . Horde_String::ucfirst($driver);
 59:         if (!class_exists($class)) {
 60:             throw new Horde_SessionHandler_Exception('Driver not found: ' . $class);
 61:         }
 62:         $storage = new $class($params);
 63: 
 64:         if (!empty($conf['sessionhandler']['memcache']) &&
 65:             !in_array($driver, array('builtin', 'memcache'))) {
 66:             $storage = new Horde_SessionHandler_Storage_Stack(array(
 67:                 'stack' => array(
 68:                     new Horde_SessionHandler_Storage_Memcache(array(
 69:                         'memcache' => $injector->getInstance('Horde_Memcache')
 70:                     )),
 71:                     $storage
 72:                 )
 73:             ));
 74:         }
 75: 
 76:         return new Horde_SessionHandler(
 77:             $storage,
 78:             array(
 79:                 'logger' => $injector->getInstance('Horde_Log_Logger'),
 80:                 'no_md5' => true,
 81:                 'noset' => $noset,
 82:                 'parse' => array($this, 'readSessionData')
 83:             )
 84:         );
 85:     }
 86: 
 87:     /**
 88:      * Reads session data to determine if it contains Horde authentication
 89:      * credentials.
 90:      *
 91:      * @param string $session_data  The session data.
 92:      *
 93:      * @return array  An array of the user's sesion information if
 94:      *                authenticated or false.  The following information is
 95:      *                returned: userid, timestamp, remoteAddr, browser, apps.
 96:      */
 97:     public function readSessionData($session_data)
 98:     {
 99:         if (empty($session_data)) {
100:             return false;
101:         }
102: 
103:         /* Need to do some session magic.  Store old session, clear it out,
104:          * and use PHP's session_decode() to decode the incoming data.  Then
105:          * search for the needed auth entries and swap the old session data
106:          * back. */
107:         $old_sess = $_SESSION;
108:         $_SESSION = array();
109: 
110:         if (session_id()) {
111:             $new_sess = false;
112:         } else {
113:             $stub = new Horde_Support_Stub();
114: 
115:             session_set_save_handler(
116:                 array($stub, 'open'),
117:                 array($stub, 'close'),
118:                 array($stub, 'read'),
119:                 array($stub, 'write'),
120:                 array($stub, 'destroy'),
121:                 array($stub, 'gc')
122:             );
123: 
124:             ob_start();
125:             session_start();
126:             ob_end_clean();
127: 
128:             $new_sess = true;
129:         }
130: 
131:         session_decode($session_data);
132: 
133:         $data = $GLOBALS['session']->get('horde', 'auth/');
134:         $apps = $GLOBALS['session']->get('horde', 'auth_app/');
135: 
136:         if ($new_sess) {
137:             session_destroy();
138:         }
139: 
140:         $_SESSION = $old_sess;
141: 
142:         return isset($data['userId'])
143:             ? array(
144:                 'apps' => array_keys($apps),
145:                 'browser' => $data['browser'],
146:                 'remoteAddr' => $data['remoteAddr'],
147:                 'timestamp' => $data['timestamp'],
148:                 'userid' => $data['userId']
149:             )
150:             : false;
151:     }
152: 
153: }
154: 
API documentation generated by ApiGen