diff --git a/lib/classes/event/message_sent.php b/lib/classes/event/message_sent.php index 9b3a8c5244e..0bfe22c0dc6 100644 --- a/lib/classes/event/message_sent.php +++ b/lib/classes/event/message_sent.php @@ -43,14 +43,13 @@ defined('MOODLE_INTERNAL') || die(); class message_sent extends base { /** * Create event using ids. - * @todo MDL-55449 Make $courseid mandatory in Moodle 3.6 * @param int $userfromid * @param int $usertoid * @param int $messageid - * @param int|null $courseid course id the event is related with. Use SITEID if no relation exists. + * @param int $courseid course id the event is related with. * @return message_sent */ - public static function create_from_ids($userfromid, $usertoid, $messageid, $courseid = null) { + public static function create_from_ids(int $userfromid, int $usertoid, int $messageid, int $courseid) { // We may be sending a message from the 'noreply' address, which means we are not actually sending a // message from a valid user. In this case, we will set the userid to 0. // Check if the userid is valid. @@ -58,15 +57,6 @@ class message_sent extends base { $userfromid = 0; } - // TODO: MDL-55449 Make $courseid mandatory in Moodle 3.6. - if (is_null($courseid)) { - // Arrived here with not defined $courseid to associate the event with. - // Let's default to SITEID and perform debugging so devs are aware. MDL-47162. - $courseid = SITEID; - debugging('message_sent::create_from_ids() needs a $courseid to be passed, nothing was detected. Please, change ' . - 'the call to include it, using SITEID if the message is unrelated to any real course.', DEBUG_DEVELOPER); - } - $event = self::create(array( 'objectid' => $messageid, 'userid' => $userfromid, diff --git a/lib/classes/message/manager.php b/lib/classes/message/manager.php index c05e14d8171..17192f3a529 100644 --- a/lib/classes/message/manager.php +++ b/lib/classes/message/manager.php @@ -50,30 +50,14 @@ class manager { * * NOTE: to be used from message_send() only. * - * @todo MDL-55449 Drop support for stdClass in Moodle 3.6 * @param \core\message\message $eventdata fully prepared event data for processors * @param \stdClass $savemessage the message saved in 'message' table * @param array $processorlist list of processors for target user * @return int $messageid the id from 'messages' (false is not returned) */ - public static function send_message($eventdata, \stdClass $savemessage, array $processorlist) { + public static function send_message(message $eventdata, \stdClass $savemessage, array $processorlist) { global $CFG; - // TODO MDL-55449 Drop support for stdClass in Moodle 3.6. - if (!($eventdata instanceof \stdClass) && !($eventdata instanceof message)) { - // Not a valid object. - throw new \coding_exception('Message should be of type stdClass or \core\message\message'); - } - - // TODO MDL-55449 Drop support for stdClass in Moodle 3.6. - if ($eventdata instanceof \stdClass) { - if (!isset($eventdata->courseid)) { - $eventdata->courseid = null; - } - - debugging('eventdata as \stdClass is deprecated. Please use \core\message\message instead.', DEBUG_DEVELOPER); - } - require_once($CFG->dirroot.'/message/lib.php'); // This is most probably already included from messagelib.php file. if (empty($processorlist)) { diff --git a/lib/messagelib.php b/lib/messagelib.php index 0b5d300609d..060e50847c7 100644 --- a/lib/messagelib.php +++ b/lib/messagelib.php @@ -50,23 +50,13 @@ require_once(__DIR__ . '/../message/lib.php'); * Note: processor failure is is not reported as false return value, * earlier versions did not do it consistently either. * - * @todo MDL-55449 Drop support for stdClass in Moodle 3.6 * @category message * @param \core\message\message $eventdata information about the message (component, userfrom, userto, ...) * @return mixed the integer ID of the new message or false if there was a problem with submitted data */ -function message_send($eventdata) { +function message_send(\core\message\message $eventdata) { global $CFG, $DB; - // TODO MDL-55449 Drop support for stdClass in Moodle 3.6. - if ($eventdata instanceof \stdClass) { - if (!isset($eventdata->courseid)) { - $eventdata->courseid = null; - } - - debugging('eventdata as \stdClass is deprecated. Please use core\message\message instead.', DEBUG_DEVELOPER); - } - //new message ID to return $messageid = false; diff --git a/lib/upgrade.txt b/lib/upgrade.txt index fb3dee5da70..7cfaaa30cb0 100644 --- a/lib/upgrade.txt +++ b/lib/upgrade.txt @@ -55,6 +55,10 @@ information provided here is intended especially for developers. policy and respect the privacy setting made by site administrators. The list of user identifiers should never be hard-coded. Instead, the setting $CFG->showuseridentity should be always respected, which has always been the default behaviour (MDL-59847). +* The function message_send() in messagelib.php will now only take the object \core\message\message as a parameter. +* The method message_sent::create_from_ids() parameter courseid is now required. A debugging + message was previously displayed, and the SITEID was used, when not provided. +* The method \core\message\manager::send_message() now only takes the object \core\message\message as the first parameter. === 3.5 === diff --git a/message/tests/events_test.php b/message/tests/events_test.php index 9c9c4158edb..3f63ed0c341 100644 --- a/message/tests/events_test.php +++ b/message/tests/events_test.php @@ -272,22 +272,6 @@ class core_message_events_testcase extends core_message_messagelib_testcase { $this->assertEquals(4, $event->other['courseid']); } - public function test_mesage_sent_via_create_from_ids_without_other_courseid() { - - // Creating a message_sent event without courseid leads to debugging + SITEID. - // TODO: MDL-55449 Ensure this leads to exception instead of debugging in Moodle 3.6. - $event = \core\event\message_sent::create_from_ids(1, 2, 3); - - // Trigger and capturing the event. - $sink = $this->redirectEvents(); - $event->trigger(); - $events = $sink->get_events(); - $event = reset($events); - - $this->assertDebuggingCalled(); - $this->assertEquals(SITEID, $event->other['courseid']); - } - /** * Test the message viewed event. */