MDL-54701 message: added isread to data_for_messagearea_conversations
authorRyan Wyllie <ryan@moodle.com>
Mon, 18 Jul 2016 06:58:55 +0000 (06:58 +0000)
committerMark Nelson <markn@moodle.com>
Fri, 7 Oct 2016 08:26:40 +0000 (16:26 +0800)
message/classes/helper.php
message/classes/output/contact.php
message/externallib.php
message/lib.php

index d526d52..767f138 100644 (file)
@@ -146,7 +146,8 @@ class helper {
         }
         // Check if the user is online.
         $data->isonline = $userfields->lastaccess >= $time;
+        $data->isread = isset($contact->isread) ? $contact->isread : 0;
 
         return new \core_message\output\contact($data);
     }
-}
\ No newline at end of file
+}
index 199c2d6..066c83c 100644 (file)
@@ -63,6 +63,7 @@ class contact implements templatable, renderable {
         $contact->profileimageurlsmall = $this->contact->profileimageurlsmall;
         $contact->lastmessage = shorten_text($this->contact->lastmessage, self::MAX_MSG_LENGTH);
         $contact->isonline = $this->contact->isonline;
+        $contact->isread = $this->contact->isread;
 
         return $contact;
     }
index 39cab93..6e91751 100644 (file)
@@ -485,7 +485,8 @@ class core_message_external extends external_api {
                             'profileimageurl' => new external_value(PARAM_URL, 'User picture URL'),
                             'profileimageurlsmall' => new external_value(PARAM_URL, 'Small user picture URL'),
                             'lastmessage' => new external_value(PARAM_NOTAGS, 'The user\'s last message', VALUE_OPTIONAL),
-                            'isonline' => new external_value(PARAM_BOOL, 'The user\'s online status', VALUE_OPTIONAL)
+                            'isonline' => new external_value(PARAM_BOOL, 'The user\'s online status', VALUE_OPTIONAL),
+                            'isread' => new external_value(PARAM_BOOL, 'If the user has read the message', VALUE_OPTIONAL),
                         )
                     )
                 )
index 82c5040..2b7162b 100644 (file)
@@ -342,7 +342,7 @@ function message_get_recent_conversations($user, $limitfrom=0, $limitto=100) {
     $uniquefield = $DB->sql_concat('message.useridfrom', "'-'", 'message.useridto');
     $sql = "SELECT $uniquefield, $userfields,
                    message.id as mid, message.notification, message.smallmessage, message.fullmessage,
-                   message.fullmessagehtml, message.fullmessageformat, message.timecreated,
+                   message.fullmessagehtml, message.fullmessageformat, message.timecreated, 1 as isread,
                    contact.id as contactlistid, contact.blocked
               FROM {message_read} message
               JOIN (
@@ -389,6 +389,7 @@ function message_get_recent_conversations($user, $limitfrom=0, $limitto=100) {
     // exact same query as the one above, except for the table we are querying. So, simply replace references to
     // the 'message_read' table with the 'message' table.
     $sql = str_replace('{message_read}', '{message}', $sql);
+    $sql = str_replace('1 as isread', '0 as isread', $sql);
     $unread = $DB->get_records_sql($sql, $params, $limitfrom, $limitto);
 
     // Union the 2 result sets together looking for the message with the most