MDL-46099 session: fix use of references for session globals
This reverses the references used for global $USER and $SESSION, the reason is that PHP does not allow references to references. $USER is a reference to $GLOBALS['USER'] which means we cannot put any references to it. Solution is to store the current user and session objects in $GLOBALS['USER'] and $GLOBALS['SESSIOn'] are reference them in $_SESSION. This patch makes the session code behave the same way in CLI, phpunit and normal web requests - this allows use to finally unit test most aspects of the session code in Moodle.
This commit is contained in:
@@ -189,14 +189,9 @@ class phpunit_util extends testing_util {
|
||||
$FULLME = null;
|
||||
$ME = null;
|
||||
$SCRIPT = null;
|
||||
$SESSION = new stdClass();
|
||||
$_SESSION['SESSION'] =& $SESSION;
|
||||
|
||||
// set fresh new not-logged-in user
|
||||
$user = new stdClass();
|
||||
$user->id = 0;
|
||||
$user->mnethostid = $CFG->mnet_localhost_id;
|
||||
\core\session\manager::set_user($user);
|
||||
// Empty sessison and set fresh new not-logged-in user.
|
||||
\core\session\manager::init_empty_session();
|
||||
|
||||
// reset all static caches
|
||||
\core\event\manager::phpunit_reset();
|
||||
|
||||
Reference in New Issue
Block a user