MDL-63725 core_message: added api::get_conversation_members

This commit is contained in:
Mark Nelson
2018-11-01 11:18:20 +08:00
parent 8b019fb709
commit 6ecd6e5ba8
2 changed files with 214 additions and 2 deletions
+43 -2
View File
@@ -1727,9 +1727,7 @@ class api {
public static function get_contact_requests(int $userid) : array {
global $DB;
// Used to search for contacts.
$ufields = \user_picture::fields('u');
$sql = "SELECT $ufields, mcr.id as contactrequestid
FROM {user} u
JOIN {message_contact_requests} mcr
@@ -2167,4 +2165,47 @@ class api {
}
}
}
/**
* Returns a list of conversation members.
*
* @param int $userid The user we are returning the conversation members for, used by helper::get_member_info.
* @param int $conversationid The id of the conversation
* @param bool $includecontactrequests Do we want to include contact requests with this data?
* @param int $limitfrom
* @param int $limitnum
* @return array
*/
public static function get_conversation_members(int $userid, int $conversationid, bool $includecontactrequests = false,
int $limitfrom = 0, int $limitnum = 0) : array {
global $DB;
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;
}
}
}
}
return $members;
}
return [];
}
}