MDL-45566 message: Send blocking events when user is not in contact list

This commit is contained in:
Frederic Massart
2014-05-20 13:17:58 +08:00
committed by Dan Poltawski
parent c186e87ab7
commit 2236a5655b
2 changed files with 24 additions and 3 deletions
+9 -3
View File
@@ -1043,13 +1043,19 @@ function message_add_contact($contactid, $blocked=0) {
$contact->blocked = $blocked;
$contact->id = $DB->insert_record('message_contacts', $contact);
// Trigger event for adding a contact.
$event = \core\event\message_contact_added::create(array(
$eventparams = array(
'objectid' => $contact->id,
'userid' => $contact->userid,
'relateduserid' => $contact->contactid,
'context' => context_user::instance($contact->userid)
));
);
if ($blocked) {
$event = \core\event\message_contact_blocked::create($eventparams);
} else {
$event = \core\event\message_contact_added::create($eventparams);
}
// Trigger event.
$event->trigger();
return true;
+15
View File
@@ -100,6 +100,7 @@ class core_message_events_testcase extends advanced_testcase {
// Create a user to add to the admin's contact list.
$user = $this->getDataGenerator()->create_user();
$user2 = $this->getDataGenerator()->create_user();
// Add the user to the admin's contact list.
message_add_contact($user->id);
@@ -117,6 +118,20 @@ class core_message_events_testcase extends advanced_testcase {
$this->assertEventLegacyLogData($expected, $event);
$url = new moodle_url('/message/index.php', array('user1' => $event->userid, 'user2' => $event->relateduserid));
$this->assertEquals($url, $event->get_url());
// Now blocking a user that is not a contact.
$sink->clear();
message_block_contact($user2->id);
$events = $sink->get_events();
$event = reset($events);
// Check that the event data is valid.
$this->assertInstanceOf('\core\event\message_contact_blocked', $event);
$this->assertEquals(context_user::instance(2), $event->get_context());
$expected = array(SITEID, 'message', 'block contact', 'index.php?user1=' . $user2->id . '&user2=2', $user2->id);
$this->assertEventLegacyLogData($expected, $event);
$url = new moodle_url('/message/index.php', array('user1' => $event->userid, 'user2' => $event->relateduserid));
$this->assertEquals($url, $event->get_url());
}
/**