Merge branch 'MDL-63864_master' of git://github.com/markn86/moodle
This commit is contained in:
+12
-10
@@ -2046,24 +2046,26 @@ class api {
|
||||
* It will not include blocked users.
|
||||
*
|
||||
* @param int $userid
|
||||
* @param int $limitfrom
|
||||
* @param int $limitnum
|
||||
* @return array The list of contact requests
|
||||
*/
|
||||
public static function get_contact_requests(int $userid) : array {
|
||||
public static function get_contact_requests(int $userid, int $limitfrom = 0, int $limitnum = 0) : array {
|
||||
global $DB;
|
||||
|
||||
$ufields = \user_picture::fields('u');
|
||||
$sql = "SELECT $ufields, mcr.id as contactrequestid
|
||||
FROM {user} u
|
||||
JOIN {message_contact_requests} mcr
|
||||
ON u.id = mcr.userid
|
||||
$sql = "SELECT mcr.userid
|
||||
FROM {message_contact_requests} mcr
|
||||
LEFT JOIN {message_users_blocked} mub
|
||||
ON (mub.userid = ? AND mub.blockeduserid = u.id)
|
||||
ON (mub.userid = ? AND mub.blockeduserid = mcr.userid)
|
||||
WHERE mcr.requesteduserid = ?
|
||||
AND u.deleted = 0
|
||||
AND mub.id is NULL
|
||||
ORDER BY mcr.timecreated DESC";
|
||||
ORDER BY mcr.timecreated ASC";
|
||||
if ($contactrequests = $DB->get_records_sql($sql, [$userid, $userid], $limitfrom, $limitnum)) {
|
||||
$userids = array_keys($contactrequests);
|
||||
return helper::get_member_info($userid, $userids);
|
||||
}
|
||||
|
||||
return $DB->get_records_sql($sql, [$userid, $userid]);
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+13
-24
@@ -599,7 +599,9 @@ class core_message_external extends external_api {
|
||||
public static function get_contact_requests_parameters() {
|
||||
return new external_function_parameters(
|
||||
[
|
||||
'userid' => new external_value(PARAM_INT, 'The id of the user we want the requests for')
|
||||
'userid' => new external_value(PARAM_INT, 'The id of the user we want the requests for'),
|
||||
'limitfrom' => new external_value(PARAM_INT, 'Limit from', VALUE_DEFAULT, 0),
|
||||
'limitnum' => new external_value(PARAM_INT, 'Limit number', VALUE_DEFAULT, 0)
|
||||
]
|
||||
);
|
||||
}
|
||||
@@ -613,8 +615,10 @@ class core_message_external extends external_api {
|
||||
* It will not include blocked users.
|
||||
*
|
||||
* @param int $userid The id of the user we want to get the contact requests for
|
||||
* @param int $limitfrom
|
||||
* @param int $limitnum
|
||||
*/
|
||||
public static function get_contact_requests(int $userid) {
|
||||
public static function get_contact_requests(int $userid, int $limitfrom = 0, int $limitnum = 0) {
|
||||
global $CFG, $USER;
|
||||
|
||||
// Check if messaging is enabled.
|
||||
@@ -631,10 +635,14 @@ class core_message_external extends external_api {
|
||||
throw new required_capability_exception($context, $capability, 'nopermissions', '');
|
||||
}
|
||||
|
||||
$params = ['userid' => $userid];
|
||||
$params = [
|
||||
'userid' => $userid,
|
||||
'limitfrom' => $limitfrom,
|
||||
'limitnum' => $limitnum
|
||||
];
|
||||
$params = self::validate_parameters(self::get_contact_requests_parameters(), $params);
|
||||
|
||||
return \core_message\api::get_contact_requests($params['userid']);
|
||||
return \core_message\api::get_contact_requests($params['userid'], $params['limitfrom'], $params['limitnum']);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -644,26 +652,7 @@ class core_message_external extends external_api {
|
||||
*/
|
||||
public static function get_contact_requests_returns() {
|
||||
return new external_multiple_structure(
|
||||
new external_single_structure(
|
||||
[
|
||||
'id' => new external_value(core_user::get_property_type('id'), 'ID of the user'),
|
||||
'contactrequestid' => new external_value(PARAM_INT, 'The ID of the contact request'),
|
||||
'picture' => new external_value(core_user::get_property_type('picture'), 'The picture'),
|
||||
'firstname' => new external_value(core_user::get_property_type('firstname'),
|
||||
'The first name(s) of the user'),
|
||||
'lastname' => new external_value(core_user::get_property_type('lastname'),
|
||||
'The family name of the user'),
|
||||
'firstnamephonetic' => new external_value(core_user::get_property_type('firstnamephonetic'),
|
||||
'The phonetic first name of the user'),
|
||||
'lastnamephonetic' => new external_value(core_user::get_property_type('lastnamephonetic'),
|
||||
'The phonetic last name of the user'),
|
||||
'middlename' => new external_value(core_user::get_property_type('middlename'),
|
||||
'The middle name of the user'),
|
||||
'alternatename' => new external_value(core_user::get_property_type('alternatename'),
|
||||
'The alternate name of the user'),
|
||||
'email' => new external_value(core_user::get_property_type('email'), 'An email address')
|
||||
]
|
||||
)
|
||||
self::get_conversation_member_structure()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -4062,14 +4062,44 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
$request = reset($requests);
|
||||
|
||||
$this->assertEquals($user2->id, $request->id);
|
||||
$this->assertEquals($user2->picture, $request->picture);
|
||||
$this->assertEquals($user2->firstname, $request->firstname);
|
||||
$this->assertEquals($user2->lastname, $request->lastname);
|
||||
$this->assertEquals($user2->firstnamephonetic, $request->firstnamephonetic);
|
||||
$this->assertEquals($user2->lastnamephonetic, $request->lastnamephonetic);
|
||||
$this->assertEquals($user2->middlename, $request->middlename);
|
||||
$this->assertEquals($user2->alternatename, $request->alternatename);
|
||||
$this->assertEquals($user2->email, $request->email);
|
||||
$this->assertEquals(fullname($user2), $request->fullname);
|
||||
$this->assertObjectHasAttribute('profileimageurl', $request);
|
||||
$this->assertObjectHasAttribute('profileimageurlsmall', $request);
|
||||
$this->assertObjectHasAttribute('isonline', $request);
|
||||
$this->assertObjectHasAttribute('showonlinestatus', $request);
|
||||
$this->assertObjectHasAttribute('isblocked', $request);
|
||||
$this->assertObjectHasAttribute('iscontact', $request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test getting contact requests when there are none.
|
||||
*/
|
||||
public function test_get_contact_requests_no_requests() {
|
||||
$this->resetAfterTest();
|
||||
|
||||
$user1 = self::getDataGenerator()->create_user();
|
||||
|
||||
$requests = \core_message\api::get_contact_requests($user1->id);
|
||||
|
||||
$this->assertEmpty($requests);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test getting contact requests with limits.
|
||||
*/
|
||||
public function test_get_contact_requests_with_limits() {
|
||||
$this->resetAfterTest();
|
||||
|
||||
$user1 = self::getDataGenerator()->create_user();
|
||||
$user2 = self::getDataGenerator()->create_user();
|
||||
$user3 = self::getDataGenerator()->create_user();
|
||||
|
||||
\core_message\api::create_contact_request($user2->id, $user1->id);
|
||||
\core_message\api::create_contact_request($user3->id, $user1->id);
|
||||
|
||||
$requests = \core_message\api::get_contact_requests($user1->id, 0, 1);
|
||||
|
||||
$this->assertCount(1, $requests);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -574,14 +574,50 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
$request = reset($requests);
|
||||
|
||||
$this->assertEquals($user2->id, $request['id']);
|
||||
$this->assertEquals($user2->picture, $request['picture']);
|
||||
$this->assertEquals($user2->firstname, $request['firstname']);
|
||||
$this->assertEquals($user2->lastname, $request['lastname']);
|
||||
$this->assertEquals($user2->firstnamephonetic, $request['firstnamephonetic']);
|
||||
$this->assertEquals($user2->lastnamephonetic, $request['lastnamephonetic']);
|
||||
$this->assertEquals($user2->middlename, $request['middlename']);
|
||||
$this->assertEquals($user2->alternatename, $request['alternatename']);
|
||||
$this->assertEquals($user2->email, $request['email']);
|
||||
$this->assertEquals(fullname($user2), $request['fullname']);
|
||||
$this->assertArrayHasKey('profileimageurl', $request);
|
||||
$this->assertArrayHasKey('profileimageurlsmall', $request);
|
||||
$this->assertArrayHasKey('isonline', $request);
|
||||
$this->assertArrayHasKey('showonlinestatus', $request);
|
||||
$this->assertArrayHasKey('isblocked', $request);
|
||||
$this->assertArrayHasKey('iscontact', $request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test getting contact requests when there are none.
|
||||
*/
|
||||
public function test_get_contact_requests_no_requests() {
|
||||
$this->resetAfterTest();
|
||||
|
||||
$user1 = self::getDataGenerator()->create_user();
|
||||
|
||||
$this->setUser($user1);
|
||||
|
||||
$requests = core_message_external::get_contact_requests($user1->id);
|
||||
$requests = external_api::clean_returnvalue(core_message_external::get_contact_requests_returns(), $requests);
|
||||
|
||||
$this->assertEmpty($requests);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test getting contact requests with limits.
|
||||
*/
|
||||
public function test_get_contact_requests_with_limits() {
|
||||
$this->resetAfterTest();
|
||||
|
||||
$user1 = self::getDataGenerator()->create_user();
|
||||
$user2 = self::getDataGenerator()->create_user();
|
||||
$user3 = self::getDataGenerator()->create_user();
|
||||
|
||||
$this->setUser($user1);
|
||||
|
||||
\core_message\api::create_contact_request($user2->id, $user1->id);
|
||||
\core_message\api::create_contact_request($user3->id, $user1->id);
|
||||
|
||||
$requests = core_message_external::get_contact_requests($user1->id, 0, 1);
|
||||
$requests = external_api::clean_returnvalue(core_message_external::get_contact_requests_returns(), $requests);
|
||||
|
||||
$this->assertCount(1, $requests);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user