Browse Source

Webservice: Add method to update message status - refs BT#15928

Angel Fernando Quiroz Campos 5 years ago
parent
commit
542fc051db

+ 3 - 1
main/inc/lib/message.lib.php

@@ -1076,7 +1076,9 @@ class MessageManager
                 WHERE
                     user_receiver_id = ".$user_id." AND
                     id = '".$message_id."'";
-        Database::query($sql);
+        $result = Database::query($sql);
+
+        return Database::affected_rows($result) > 0;
     }
 
     /**

+ 2 - 0
main/inc/lib/webservices/Rest.php

@@ -19,6 +19,8 @@ class Rest extends WebService
 
     const GET_AUTH = 'authenticate';
     const GET_USER_MESSAGES = 'user_messages';
+    const POST_USER_MESSAGE_READ = 'user_message_read';
+    const POST_USER_MESSAGE_UNREAD = 'user_message_unread';
     const SAVE_GCM_ID = 'gcm_id';
     const GET_USER_COURSES = 'user_courses';
     const GET_PROFILE = 'user_profile';

+ 8 - 0
main/inc/lib/webservices/WebService.class.php

@@ -99,4 +99,12 @@ class WebService
             $user->getSalt()
         );
     }
+
+    /**
+     * @return User
+     */
+    public function getUser()
+    {
+        return $this->user;
+    }
 }

+ 26 - 0
main/webservices/api/v2.php

@@ -58,6 +58,32 @@ try {
             $messages = $restApi->getUserMessages($lastMessageId);
             $restResponse->setData($messages);
             break;
+        case Rest::POST_USER_MESSAGE_READ:
+        case Rest::POST_USER_MESSAGE_UNREAD:
+            $messagesId = isset($_POST['messages']) && is_array($_POST['messages'])
+                ? array_map('intval', $_POST['messages'])
+                : [];
+
+            $messagesId = array_filter($messagesId);
+
+            if (empty($messagesId)) {
+                throw new Exception(get_lang('NoData'));
+            }
+
+            $messageStatus = $action === Rest::POST_USER_MESSAGE_READ ? MESSAGE_STATUS_NEW : MESSAGE_STATUS_UNREAD;
+
+            $data = array_flip($messagesId);
+
+            foreach ($messagesId as $messageId) {
+                $data[$messageId] = MessageManager::update_message_status(
+                    $restApi->getUser()->getId(),
+                    $messageId,
+                    $messageStatus
+                );
+            }
+
+            $restResponse->setData($data);
+            break;
         case Rest::GET_USER_COURSES:
             $courses = $restApi->getUserCourses();
             $restResponse->setData($courses);