diff --git a/message/classes/api.php b/message/classes/api.php index 62995e31415..cc9ca69e829 100644 --- a/message/classes/api.php +++ b/message/classes/api.php @@ -2487,25 +2487,7 @@ class api { if ($members = $DB->get_records('message_conversation_members', ['conversationid' => $conversationid], 'timecreated ASC, id ASC', 'userid', $limitfrom, $limitnum)) { $userids = array_keys($members); - $members = helper::get_member_info($userid, $userids); - - // Check if we want to include contact requests as well. - if ($includecontactrequests) { - list($useridsql, $usersparams) = $DB->get_in_or_equal($userids); - - $wheresql = "(userid $useridsql OR requesteduserid $useridsql)"; - if ($contactrequests = $DB->get_records_select('message_contact_requests', $wheresql, - array_merge($usersparams, $usersparams), 'timecreated ASC, id ASC')) { - foreach ($contactrequests as $contactrequest) { - if (isset($members[$contactrequest->userid])) { - $members[$contactrequest->userid]->contactrequests[] = $contactrequest; - } - if (isset($members[$contactrequest->requesteduserid])) { - $members[$contactrequest->requesteduserid]->contactrequests[] = $contactrequest; - } - } - } - } + $members = helper::get_member_info($userid, $userids, $includecontactrequests); return $members; } diff --git a/message/classes/helper.php b/message/classes/helper.php index 0ac16ec1666..34204f118a7 100644 --- a/message/classes/helper.php +++ b/message/classes/helper.php @@ -482,11 +482,12 @@ class helper { * * @param int $referenceuserid the id of the user which check contact and blocked status. * @param array $userids + * @param bool $includecontactrequests Do we want to include contact requests with this data? * @return array the array of objects containing member info, indexed by userid. * @throws \coding_exception * @throws \dml_exception */ - public static function get_member_info(int $referenceuserid, array $userids) : array { + public static function get_member_info(int $referenceuserid, array $userids, bool $includecontactrequests = false) : array { global $DB, $PAGE; // Prevent exception being thrown when array is empty. @@ -532,6 +533,25 @@ class helper { $members[$data->id] = $data; } + + // Check if we want to include contact requests as well. + if (!empty($members) && $includecontactrequests) { + list($useridsql, $usersparams) = $DB->get_in_or_equal($userids); + + $wheresql = "(userid $useridsql OR requesteduserid $useridsql)"; + if ($contactrequests = $DB->get_records_select('message_contact_requests', $wheresql, + array_merge($usersparams, $usersparams), 'timecreated ASC, id ASC')) { + foreach ($contactrequests as $contactrequest) { + if (isset($members[$contactrequest->userid])) { + $members[$contactrequest->userid]->contactrequests[] = $contactrequest; + } + if (isset($members[$contactrequest->requesteduserid])) { + $members[$contactrequest->requesteduserid]->contactrequests[] = $contactrequest; + } + } + } + } + return $members; }