MDL-61351 core: added \core\session\manager\get_handler_class()
authorTim Schroeder <t.schroeder@itc.rwth-aachen.de>
Mon, 16 Jul 2018 15:19:40 +0000 (17:19 +0200)
committerMark Nelson <markn@moodle.com>
Tue, 17 Jul 2018 08:45:20 +0000 (16:45 +0800)
* This is needed e.g. by the shibboleth logout handler to check which
type of sessions are used.

lib/classes/session/manager.php

index 2960b77..f617cc2 100644 (file)
@@ -123,28 +123,34 @@ class manager {
     }
 
     /**
-     * Create handler instance.
+     * Get fully qualified name of session handler class.
+     *
+     * @return string The name of the handler class
      */
-    protected static function load_handler() {
+    public static function get_handler_class() {
         global $CFG, $DB;
 
-        if (self::$handler) {
-            return;
-        }
-
-        // Find out which handler to use.
         if (PHPUNIT_TEST) {
-            $class = '\core\session\file';
-
+            return '\core\session\file';
         } else if (!empty($CFG->session_handler_class)) {
-            $class = $CFG->session_handler_class;
-
+            return $CFG->session_handler_class;
         } else if (!empty($CFG->dbsessions) and $DB->session_lock_supported()) {
-            $class = '\core\session\database';
+            return '\core\session\database';
+        }
 
-        } else {
-            $class = '\core\session\file';
+        return '\core\session\file';
+    }
+
+    /**
+     * Create handler instance.
+     */
+    protected static function load_handler() {
+        if (self::$handler) {
+            return;
         }
+
+        // Find out which handler to use.
+        $class = self::get_handler_class();
         self::$handler = new $class();
     }