MDL-55449 messages: Remove support for stdClass messages.
authorAdrian Greeve <abgreeve@gmail.com>
Tue, 24 Jul 2018 01:49:53 +0000 (09:49 +0800)
committerAdrian Greeve <abgreeve@gmail.com>
Tue, 7 Aug 2018 03:04:22 +0000 (11:04 +0800)
This also makes message_sent::create_from_ids() $courseid
parameter required.

lib/classes/event/message_sent.php
lib/classes/message/manager.php
lib/messagelib.php
lib/upgrade.txt
message/tests/events_test.php

index 9b3a8c5..0bfe22c 100644 (file)
@@ -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,
index c05e14d..17192f3 100644 (file)
@@ -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)) {
index 0b5d300..060e508 100644 (file)
@@ -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;
 
index fb3dee5..7cfaaa3 100644 (file)
@@ -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 ===
 
index 9c9c415..3f63ed0 100644 (file)
@@ -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.
      */