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.
// 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;
}