Merge branch 'MDL-62808_master' of git://github.com/markn86/moodle

This commit is contained in:
Andrew Nicols 2018-07-09 13:29:29 +08:00
commit a31b3cf30b
3 changed files with 71 additions and 3 deletions

View file

@ -1537,8 +1537,6 @@ class core_message_external extends external_api {
}
}
$message->useridto = $useridto;
// We need to get the user from the query.
if (empty($userfromfullname)) {
// Check for non-reply and support users.

View file

@ -688,14 +688,16 @@ function message_get_messages($useridto, $useridfrom = 0, $notifications = -1, $
// If the 'useridto' value is empty then we are going to retrieve messages sent by the useridfrom to any user.
if (empty($useridto)) {
$userfields = get_all_user_name_fields(true, 'u', '', 'userto');
$messageuseridtosql = 'u.id as useridto';
} else {
$userfields = get_all_user_name_fields(true, 'u', '', 'userfrom');
$messageuseridtosql = "$useridto as useridto";
}
// Create the SQL we will be using.
$messagesql = "SELECT mr.*, $userfields, 0 as notification, '' as contexturl, '' as contexturlname,
mua.timecreated as timeusertodeleted, mua2.timecreated as timeread,
mua3.timecreated as timeuserfromdeleted
mua3.timecreated as timeuserfromdeleted, $messageuseridtosql
FROM {messages} mr
INNER JOIN {message_conversations} mc
ON mc.id = mr.conversationid

View file

@ -671,6 +671,74 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
}
/**
* Test get_messages where we want all messages from a user, sent to any user.
*/
public function test_get_messages_useridto_all() {
$this->resetAfterTest(true);
$user1 = self::getDataGenerator()->create_user();
$user2 = self::getDataGenerator()->create_user();
$user3 = self::getDataGenerator()->create_user();
$this->setUser($user1);
// Send a message from user 1 to two other users.
$this->send_message($user1, $user2, 'some random text 1', 0, 1);
$this->send_message($user1, $user3, 'some random text 2', 0, 2);
// Get messages sent from user 1.
$messages = core_message_external::get_messages(0, $user1->id, 'conversations', false, false, 0, 0);
$messages = external_api::clean_returnvalue(core_message_external::get_messages_returns(), $messages);
// Confirm the data is correct.
$messages = $messages['messages'];
$this->assertCount(2, $messages);
$message1 = array_shift($messages);
$message2 = array_shift($messages);
$this->assertEquals($user1->id, $message1['useridfrom']);
$this->assertEquals($user2->id, $message1['useridto']);
$this->assertEquals($user1->id, $message2['useridfrom']);
$this->assertEquals($user3->id, $message2['useridto']);
}
/**
* Test get_messages where we want all messages to a user, sent by any user.
*/
public function test_get_messages_useridfrom_all() {
$this->resetAfterTest();
$user1 = self::getDataGenerator()->create_user();
$user2 = self::getDataGenerator()->create_user();
$user3 = self::getDataGenerator()->create_user();
$this->setUser($user1);
// Send a message to user 1 from two other users.
$this->send_message($user2, $user1, 'some random text 1', 0, 1);
$this->send_message($user3, $user1, 'some random text 2', 0, 2);
// Get messages sent to user 1.
$messages = core_message_external::get_messages($user1->id, 0, 'conversations', false, false, 0, 0);
$messages = external_api::clean_returnvalue(core_message_external::get_messages_returns(), $messages);
// Confirm the data is correct.
$messages = $messages['messages'];
$this->assertCount(2, $messages);
$message1 = array_shift($messages);
$message2 = array_shift($messages);
$this->assertEquals($user2->id, $message1['useridfrom']);
$this->assertEquals($user1->id, $message1['useridto']);
$this->assertEquals($user3->id, $message2['useridfrom']);
$this->assertEquals($user1->id, $message2['useridto']);
}
/**
* Test get_blocked_users.
*/