MDL-63850 core_message: moved contact request logic to helper

This commit is contained in:
Mark Nelson
2018-11-08 16:05:25 +08:00
parent 6981de1080
commit 054834b00c
2 changed files with 22 additions and 20 deletions
+1 -19
View File
@@ -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;
}
+21 -1
View File
@@ -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;
}