diff --git a/include/class.thread.php b/include/class.thread.php index 3f10ac94c4a6269ae825307986ae3ee38fbbaf32..67f9bfbfab20c8b7e52045805475190ea3b205fa 100644 --- a/include/class.thread.php +++ b/include/class.thread.php @@ -745,10 +745,20 @@ class ThreadEntry { if ($mailinfo['userId'] || strcasecmp($mailinfo['email'], $ticket->getEmail()) == 0) { $vars['message'] = $body; - $vars['userId'] = $mailinfo['userId'] ? $mailinfo['userId'] : $ticket->getUserId(); + $vars['userId'] = $mailinfo['userId'] ?: $ticket->getUserId(); + return $ticket->postMessage($vars, 'Email'); + } + // Consider collaborator role (disambiguate staff members as + // collaborators) + elseif (($E = UserEmail::lookup($mailinfo['email'])) + && ($C = Collaborator::lookup(array( + 'ticketId' => $ticket->getId(), 'userId' => $E->user_id + ))) + ) { + $vars['userId'] = $C->getUserId(); + $vars['message'] = $body; return $ticket->postMessage($vars, 'Email'); } - // XXX: Consider collaborator role elseif ($mailinfo['staffId'] || ($mailinfo['staffId'] = Staff::getIdByEmail($mailinfo['email']))) { $vars['staffId'] = $mailinfo['staffId'];