From 34bc804a079f2f2d16ed603ff09addd4996bd94d Mon Sep 17 00:00:00 2001 From: Angel Fernando Quiroz Campos Date: Tue, 21 Oct 2014 11:08:53 -0500 Subject: [PATCH] Get messages data from the last received message - refs #7338 --- main/inc/lib/message.lib.php | 42 +++++++++++++++++++ .../classes/MessagesWebService.class.php | 9 +++- webservices/rest.php | 4 +- 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/main/inc/lib/message.lib.php b/main/inc/lib/message.lib.php index b5791c2e24..08c56cbb14 100755 --- a/main/inc/lib/message.lib.php +++ b/main/inc/lib/message.lib.php @@ -1538,4 +1538,46 @@ class MessageManager return 0; } + /** + * Get the count of the last received messages for a user + * @param int $userId The user id + * @param int $lastId The id of the last received message + * @return int The count of new messages + */ + public static function getMessagesFromLastReceivedMessage($userId, $lastId) + { + $messagesTable = Database::get_main_table(TABLE_MESSAGE); + $userTable = Database::get_main_table(TABLE_MAIN_USER); + + $messages = array(); + + $sql = "SELECT m.*, u.user_id, u.lastname, u.firstname " + . "FROM $messagesTable as m " + . "INNER JOIN $userTable as u " + . "ON m.user_receiver_id = u.user_id " + . "WHERE u.user_id = $userId " + . "AND m.msg_status = " . MESSAGE_STATUS_UNREAD . " " + . "AND m.id > $lastId"; + + $result = Database::query($sql); + + if ($result !== false) { + while ($row = Database::fetch_assoc($result)) { + $messages = array( + 'id' => $row['id'], + 'title' => $row['title'], + 'sender' => array( + 'id' => $row['user_id'], + 'lastname' => $row['lastname'], + 'firstname' => $row['firstname'], + 'completeName' => api_get_person_name($row['firstname'], $row['lastname']), + ), + 'content' => $row['content'] + ); + } + } + + return $messages; + } + } diff --git a/webservices/classes/MessagesWebService.class.php b/webservices/classes/MessagesWebService.class.php index 3fb8ffba49..35f6beac42 100644 --- a/webservices/classes/MessagesWebService.class.php +++ b/webservices/classes/MessagesWebService.class.php @@ -126,9 +126,14 @@ class MessagesWebService extends WebService * @param string $username The username * @return array the new message list */ - public function getNewMessages($username) + public function getNewMessages($username, $lastId = 0) { - return array(); + $lastId = intval($lastId); + + $userInfo = api_get_user_info_from_username($username); + $userId = intval($userInfo['user_id']); + + return MessageManager::getMessagesFromLastReceivedMessage($userId, $lastId); } } diff --git a/webservices/rest.php b/webservices/rest.php index 5dd36ebafd..9f7dc68fe8 100644 --- a/webservices/rest.php +++ b/webservices/rest.php @@ -58,7 +58,9 @@ switch ($action) { $webService = new MessagesWebService(); $webService->setApiKey($apiKey); - $messages = $webService->getNewMessages($username); + $lastId = isset($_POST['last']) ? $_POST['last'] : 0; + + $messages = $webService->getNewMessages($username, $lastId); $json = array( 'newMessages' => $messages