MDL-68070 messaging: Ensure that error is shown on first messages
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Wed, 14 Oct 2020 09:22:23 +0000 (11:22 +0200)
committerSara Arjona <sara@moodle.com>
Wed, 14 Oct 2020 16:57:16 +0000 (18:57 +0200)
Before there is a conversation, messages between users are sent
using core_message_send_instant_messages instead of
core_message_send_messages_to_conversation.

That method had an undefined $errormessage variable, ultimately
causing the problem detected on message_post_message()/message_send()
to never been returned by the external.

This just adds the same error than already existing conversations do,
but returning it as warning, for BC, JS will show it.

message/externallib.php

index 32504c6..e809173 100644 (file)
@@ -215,6 +215,9 @@ class core_message_external extends external_api {
                 //          We should have thrown exceptions as these errors prevent results to be returned.
                 // See http://docs.moodle.org/dev/Errors_handling_in_web_services#When_to_send_a_warning_on_the_server_side .
                 $resultmsg['msgid'] = -1;
+                if (!isset($errormessage)) { // Nobody has set a message error or thrown an exception, let's set it.
+                    $errormessage = get_string('messageundeliveredbynotificationsettings', 'error');
+                }
                 $resultmsg['errormessage'] = $errormessage;
             }