Merge branch 'MDL-63850_master' of git://github.com/markn86/moodle
This commit is contained in:
@@ -482,13 +482,22 @@ 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?
|
||||
* @param bool $includeprivacyinfo Do we want to include whether the user can message another, and if the user
|
||||
* requires a contact.
|
||||
* @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,
|
||||
bool $includeprivacyinfo = false) : array {
|
||||
global $DB, $PAGE;
|
||||
|
||||
// Prevent exception being thrown when array is empty.
|
||||
if (empty($userids)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
list($useridsql, $usersparams) = $DB->get_in_or_equal($userids);
|
||||
$userfields = \user_picture::fields('u', array('lastaccess'));
|
||||
$userssql = "SELECT $userfields, u.deleted, mc.id AS contactid, mub.id AS blockedid
|
||||
@@ -525,8 +534,46 @@ class helper {
|
||||
|
||||
$data->isdeleted = ($member->deleted) ? true : false;
|
||||
|
||||
$data->requirescontact = null;
|
||||
$data->canmessage = null;
|
||||
if ($includeprivacyinfo) {
|
||||
$privacysetting = api::get_user_privacy_messaging_preference($member->id);
|
||||
$data->requirescontact = $privacysetting == api::MESSAGE_PRIVACY_ONLYCONTACTS;
|
||||
|
||||
$recipient = new \stdClass();
|
||||
$recipient->id = $member->id;
|
||||
|
||||
$sender = new \stdClass();
|
||||
$sender->id = $referenceuserid;
|
||||
|
||||
$data->canmessage = api::can_post_message($recipient, $sender);
|
||||
}
|
||||
|
||||
// Populate the contact requests, even if we don't need them.
|
||||
$data->contactrequests = [];
|
||||
|
||||
$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 AND requesteduserid = ?) OR (userid = ? AND requesteduserid $useridsql)";
|
||||
$params = array_merge($usersparams, [$referenceuserid, $referenceuserid], $usersparams);
|
||||
if ($contactrequests = $DB->get_records_select('message_contact_requests', $wheresql, $params,
|
||||
'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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user