From 382f816ad8cfa0861f54706bc4d70394132fb864 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Mon, 27 Aug 2018 10:14:54 +0200 Subject: [PATCH] Can delete a conversation message --- RestControllers/ConversationsController.php | 21 +++++++++++++ classes/components/Conversations.php | 33 +++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/RestControllers/ConversationsController.php b/RestControllers/ConversationsController.php index 299ef8d..d471c80 100644 --- a/RestControllers/ConversationsController.php +++ b/RestControllers/ConversationsController.php @@ -480,6 +480,27 @@ class ConversationsController { return array("success" => "The conversation has been deleted"); } + /** + * Delete a conversation message + * + * @url POST /conversations/deleteMessage + */ + public function deleteMessage(){ + + user_login_required(); + + $messageID = postInt("messageID"); + + //Check whether the user own or not conversation message + if(!components()->conversations->isOwnerMessage(userID, $messageID)) + Rest_fatal_error(401, "You do not own this conversation message!"); + + if(!components()->conversations->deleteConversationMessage($messageID)) + Rest_fatal_error(500, "Could not delete conversation message!"); + + return array("success" => "Conversation message has been successfully deleted!"); + } + /** * Get and return safely a conversation ID specified in a $_POST Request * diff --git a/classes/components/Conversations.php b/classes/components/Conversations.php index 2a1b63a..1902399 100644 --- a/classes/components/Conversations.php +++ b/classes/components/Conversations.php @@ -359,6 +359,23 @@ class Conversations { return $results[0]["ID_utilisateurs"] == $userID; } + /** + * Check whether a user is the owner of a conversation message or not + * + * @param int $userID Target user ID + * @param int $messageID Target message + * @return bool TRUE if the user is the owner of the conversation / FALSE else + */ + public function isOwnerMessage(int $userID, int $messageID) : bool { + + return db()->count( + $this->conversationsMessagesTable, + "WHERE ID = ? AND ID_utilisateurs = ?", + array($messageID, $userID) + ) > 0; + + } + /** * Search for a private conversation between two users * @@ -750,6 +767,22 @@ class Conversations { return true; } + /** + * Delete a single conversation message + * + * @param int $messageID The ID of the message to delete + * @return bool TRUE for a success / FALSE else + */ + public function deleteConversationMessage(int $messageID) : bool { + + //Get information about the message + $messages = $this->getMessages("WHERE ID = ?", array($messageID)); + + if(count($messages) < 1) + return FALSE; //Message not found + + return $this->delete_message($messages[0]); + } /** * Delete a single message of a conversation