From 035eabd5e1dffbac63698d7c2f51f85e69f111e9 Mon Sep 17 00:00:00 2001
From: JediKev <kevin@enhancesoft.com>
Date: Thu, 4 Apr 2019 10:03:07 -0500
Subject: [PATCH] issue: sendAccessLink On NULL v1.11

This addresses an issue in v1.11 where sending an Access Link via email to a
Collaborator fails with fatal error. This is due to the type of User class
that is sent to the `Mailer::send()` function. The ClientSession User class
is not appropriate for this method, rather, TicketOwner or Collaborator User
classes are appropriate. This adds a function called `getSessionUser()` to
the ClientSession class so we can retrieve the TicketOwner/Collaborator User
class from the session.
---
 include/class.mailer.php      | 2 ++
 include/class.usersession.php | 4 ++++
 2 files changed, 6 insertions(+)

diff --git a/include/class.mailer.php b/include/class.mailer.php
index dfd65b2ab..620cd84de 100644
--- a/include/class.mailer.php
+++ b/include/class.mailer.php
@@ -406,6 +406,8 @@ class Mailer {
         if (!is_array($recipients) && (!$recipients instanceof MailingList))
             $recipients =  array($recipients);
         foreach ($recipients as $recipient) {
+            if ($recipient instanceof ClientSession)
+                $recipient = $recipient->getSessionUser();
             switch (true) {
                 case $recipient instanceof EmailRecipient:
                     $addr = sprintf('"%s" <%s>',
diff --git a/include/class.usersession.php b/include/class.usersession.php
index bb113f5d3..cb900176c 100644
--- a/include/class.usersession.php
+++ b/include/class.usersession.php
@@ -123,6 +123,10 @@ class ClientSession extends EndUser {
         $this->session= new UserSession($user->getId());
     }
 
+    function getSessionUser() {
+        return $this->user;
+    }
+
     function isValid(){
         global $_SESSION,$cfg;
 
-- 
GitLab