From 5e12b369af339eddf9fac62bb147dfddae54a65d Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Fri, 4 Apr 2014 17:53:25 +0200 Subject: [PATCH] MDL-44954 messages: Fixed save notifications with the notification flag --- lib/messagelib.php | 12 ++++++------ lib/phpunit/tests/advanced_test.php | 4 ++++ lib/tests/messagelib_test.php | 2 ++ message/lib.php | 1 + 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/messagelib.php b/lib/messagelib.php index 5ec04250225..02c6cfcb4e1 100644 --- a/lib/messagelib.php +++ b/lib/messagelib.php @@ -68,6 +68,11 @@ function message_send($eventdata) { //TODO: we need to solve problems with database transactions here somehow, for now we just prevent transactions - sorry $DB->transactions_forbidden(); + // By default a message is a notification. Only personal/private messages aren't notifications. + if (!isset($eventdata->notification)) { + $eventdata->notification = 1; + } + if (is_number($eventdata->userto)) { $eventdata->userto = core_user::get_user($eventdata->userto); } @@ -109,12 +114,7 @@ function message_send($eventdata) { $savemessage->fullmessageformat = $eventdata->fullmessageformat; $savemessage->fullmessagehtml = $eventdata->fullmessagehtml; $savemessage->smallmessage = $eventdata->smallmessage; - - if (!empty($eventdata->notification)) { - $savemessage->notification = $eventdata->notification; - } else { - $savemessage->notification = 0; - } + $savemessage->notification = $eventdata->notification; if (!empty($eventdata->contexturl)) { $savemessage->contexturl = $eventdata->contexturl; diff --git a/lib/phpunit/tests/advanced_test.php b/lib/phpunit/tests/advanced_test.php index 749f3ec6cc0..8811bcfdd58 100644 --- a/lib/phpunit/tests/advanced_test.php +++ b/lib/phpunit/tests/advanced_test.php @@ -405,6 +405,7 @@ class core_phpunit_advanced_testcase extends advanced_testcase { $message1->fullmessageformat = FORMAT_MARKDOWN; $message1->fullmessagehtml = '

message body

'; $message1->smallmessage = 'small message'; + $message1->notification = 0; $message2 = new stdClass(); $message2->component = 'moodle'; @@ -416,6 +417,7 @@ class core_phpunit_advanced_testcase extends advanced_testcase { $message2->fullmessageformat = FORMAT_MARKDOWN; $message2->fullmessagehtml = '

message body

'; $message2->smallmessage = 'small message'; + $message2->notification = 0; // There should be debugging message without redirection. message_send($message1); @@ -478,6 +480,7 @@ class core_phpunit_advanced_testcase extends advanced_testcase { $message3->fullmessageformat = FORMAT_MARKDOWN; $message3->fullmessagehtml = '

message body

'; $message3->smallmessage = 'small message'; + $message3->notification = 0; try { message_send($message3); @@ -523,6 +526,7 @@ class core_phpunit_advanced_testcase extends advanced_testcase { $message->fullmessageformat = FORMAT_MARKDOWN; $message->fullmessagehtml = '

message body

'; $message->smallmessage = 'small message'; + $message->notification = 0; message_send($message); $this->assertEquals(2, $sink->count()); diff --git a/lib/tests/messagelib_test.php b/lib/tests/messagelib_test.php index c279e28c068..6f4bd2797eb 100644 --- a/lib/tests/messagelib_test.php +++ b/lib/tests/messagelib_test.php @@ -48,6 +48,7 @@ class core_messagelib_testcase extends advanced_testcase { $message->fullmessageformat = FORMAT_MARKDOWN; $message->fullmessagehtml = '

message body

'; $message->smallmessage = 'small message'; + $message->notification = 0; // Check message is not sent. $sink = $this->redirectEmails(); @@ -218,6 +219,7 @@ class core_messagelib_testcase extends advanced_testcase { $message->smallmessage = 'small message'; $message->attachment = $file; $message->attachname = 'emailtest.txt'; + $message->notification = 0; // Make sure we are redirecting emails. $sink = $this->redirectEmails(); diff --git a/message/lib.php b/message/lib.php index 0a940edb6ea..5efe92001df 100644 --- a/message/lib.php +++ b/message/lib.php @@ -2187,6 +2187,7 @@ function message_post_message($userfrom, $userto, $message, $format) { } $eventdata->timecreated = time(); + $eventdata->notification = 0; return message_send($eventdata); }