From 8f99726eb1a5bd52cf77d26d1fb169cec5d321fb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Tue, 21 Feb 2017 15:22:13 +0100
Subject: [PATCH] =?UTF-8?q?Avoid=20using=20references=20on=20session=20var?=
 =?UTF-8?q?s=20when=20it=E2=80=99s=20not=20useful?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 include/class_session.inc  | 20 +++++++++++++++++---
 include/class_userinfo.inc |  4 ++--
 include/functions.inc      |  4 ++--
 3 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/include/class_session.inc b/include/class_session.inc
index 889104282..e54a922a2 100644
--- a/include/class_session.inc
+++ b/include/class_session.inc
@@ -134,11 +134,25 @@ class session {
   }
 
   /*!
-   * \brief Accessor of a session
+   * \brief Accessor of a session var
    *
-   * \param string $name Name of the session
+   * \param string $name Name of the session var
+   */
+  public static function global_get($name)
+  {
+    if (isset($_SESSION[$name])) {
+      return $_SESSION[$name];
+    } else {
+      return NULL;
+    }
+  }
+
+  /*!
+   * \brief Accessor of a session var by reference
+   *
+   * \param string $name Name of the session var
    */
-  public static function &global_get($name)
+  public static function &global_get_ref($name)
   {
     $ret = &$_SESSION[$name];
     return $ret;
diff --git a/include/class_userinfo.inc b/include/class_userinfo.inc
index a41fbf2d3..f5addc859 100644
--- a/include/class_userinfo.inc
+++ b/include/class_userinfo.inc
@@ -419,7 +419,7 @@ class userinfo
     }
 
     /* Push cache answer? */
-    $ACL_CACHE = &session::global_get('ACL_CACHE');
+    $ACL_CACHE = &session::global_get_ref('ACL_CACHE');
     if (isset($ACL_CACHE["$dn+$object+$attribute"])) {
       $ret = $ACL_CACHE["$dn+$object+$attribute"];
       if ($skip_write) {
@@ -626,7 +626,7 @@ class userinfo
     }
 
     /* Use cached results if possilbe */
-    $ACL_CACHE = &session::global_get('ACL_CACHE');
+    $ACL_CACHE = &session::global_get_ref('ACL_CACHE');
 
     if (!is_array($module)) {
       $module = array($module);
diff --git a/include/functions.inc b/include/functions.inc
index e176e5cc4..335da34ea 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -612,7 +612,7 @@ function add_lock($object, $user)
     return;
   }
 
-  $cache = &session::global_get('LOCK_CACHE');
+  $cache = &session::global_get_ref('LOCK_CACHE');
   if (isset($_POST['open_readonly'])) {
     $cache['READ_ONLY'][$object] = TRUE;
     return;
@@ -685,7 +685,7 @@ function del_lock ($object)
       skip removing the lock entry, there wasn't any lock created.
     */
   if (session::global_is_set('LOCK_CACHE')) {
-    $cache = &session::global_get('LOCK_CACHE');
+    $cache = &session::global_get_ref('LOCK_CACHE');
     if (isset($cache['READ_ONLY'][$object])) {
       unset($cache['READ_ONLY'][$object]);
       return;
-- 
GitLab