From 22a12335fffcfabc20688fa35e3cb18c255e2e8a Mon Sep 17 00:00:00 2001 From: Angel Fernando Quiroz Campos Date: Thu, 19 Sep 2019 11:55:09 -0500 Subject: [PATCH] Webservice: Add method to update message status - refs BT#15928 --- main/inc/lib/message.lib.php | 4 ++- main/inc/lib/webservices/Rest.php | 2 ++ main/inc/lib/webservices/WebService.class.php | 8 ++++++ main/webservices/api/v2.php | 26 +++++++++++++++++++ 4 files changed, 39 insertions(+), 1 deletion(-) diff --git a/main/inc/lib/message.lib.php b/main/inc/lib/message.lib.php index c3df9a35e6..7adb0ffa1f 100755 --- a/main/inc/lib/message.lib.php +++ b/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; } /** diff --git a/main/inc/lib/webservices/Rest.php b/main/inc/lib/webservices/Rest.php index dbe4c9ba4a..0606dbe346 100644 --- a/main/inc/lib/webservices/Rest.php +++ b/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'; diff --git a/main/inc/lib/webservices/WebService.class.php b/main/inc/lib/webservices/WebService.class.php index 3e817842a1..46727e2e3d 100644 --- a/main/inc/lib/webservices/WebService.class.php +++ b/main/inc/lib/webservices/WebService.class.php @@ -99,4 +99,12 @@ class WebService $user->getSalt() ); } + + /** + * @return User + */ + public function getUser() + { + return $this->user; + } } diff --git a/main/webservices/api/v2.php b/main/webservices/api/v2.php index 9da1482366..d3bb70934c 100644 --- a/main/webservices/api/v2.php +++ b/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);