From daa33803cd281f9674ee53f9512ea26c28c3b40d Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Fri, 9 Nov 2018 12:12:17 +0800 Subject: [PATCH] MDL-63864 core_message: get_contact_requests now uses helper --- message/classes/api.php | 16 ++++++++-------- message/externallib.php | 21 +-------------------- message/tests/api_test.php | 15 +++++++-------- message/tests/externallib_test.php | 15 +++++++-------- 4 files changed, 23 insertions(+), 44 deletions(-) diff --git a/message/classes/api.php b/message/classes/api.php index b732e0324c9..8f8009404f2 100644 --- a/message/classes/api.php +++ b/message/classes/api.php @@ -1853,19 +1853,19 @@ class api { public static function get_contact_requests(int $userid) : 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"; + if ($contactrequests = $DB->get_records_sql($sql, [$userid, $userid])) { + $userids = array_keys($contactrequests); + return helper::get_member_info($userid, $userids); + } - return $DB->get_records_sql($sql, [$userid, $userid]); + return []; } /** diff --git a/message/externallib.php b/message/externallib.php index c0c55f0b437..2f246caef79 100644 --- a/message/externallib.php +++ b/message/externallib.php @@ -644,26 +644,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() ); } diff --git a/message/tests/api_test.php b/message/tests/api_test.php index 89567e2968f..db5bf421a60 100644 --- a/message/tests/api_test.php +++ b/message/tests/api_test.php @@ -3663,14 +3663,13 @@ 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); } /** diff --git a/message/tests/externallib_test.php b/message/tests/externallib_test.php index 1d2667dfdff..0dc3e3c56d7 100644 --- a/message/tests/externallib_test.php +++ b/message/tests/externallib_test.php @@ -574,14 +574,13 @@ 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); } /**