mirror of
				https://github.com/pierre42100/ComunicAPI
				synced 2025-11-04 12:14:12 +00:00 
			
		
		
		
	Can get older messages of a conversation
This commit is contained in:
		@@ -388,6 +388,40 @@ class ConversationsController{
 | 
			
		||||
		
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Get older messages of a conversation
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @url POST /conversations/get_older_messages
 | 
			
		||||
	 */
 | 
			
		||||
	public function getOlderMessages(){
 | 
			
		||||
 | 
			
		||||
		user_login_required();
 | 
			
		||||
 | 
			
		||||
		//Get the ID of the conversation to refresh
 | 
			
		||||
		$conversationID = $this->getSafePostConversationID("conversationID");
 | 
			
		||||
 | 
			
		||||
		//Get the ID of the oldest message ID
 | 
			
		||||
		$maxID = postInt("oldest_message_id") - 1;
 | 
			
		||||
 | 
			
		||||
		//Get the limit
 | 
			
		||||
		$limit = postInt("limit");
 | 
			
		||||
 | 
			
		||||
		//Security
 | 
			
		||||
		if($limit < 1)
 | 
			
		||||
			$limit = 1;
 | 
			
		||||
		if($limit > 30)
 | 
			
		||||
			$limit = 30;
 | 
			
		||||
		
 | 
			
		||||
		//Retrieve the list of messages in the database
 | 
			
		||||
		$messages = components()->conversations->getOlderMessages($conversationID, $maxID, $limit);
 | 
			
		||||
 | 
			
		||||
		//Process the list of messages
 | 
			
		||||
		foreach($messages as $num => $process)
 | 
			
		||||
			$messages[$num] = self::ConvMessageToAPI($process);
 | 
			
		||||
		
 | 
			
		||||
		return $messages;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Get the number of unread conversations of the user
 | 
			
		||||
	 * 
 | 
			
		||||
@@ -459,6 +493,29 @@ class ConversationsController{
 | 
			
		||||
		return array("success" => "The conversation has been deleted");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Get and return safely a conversation ID specified in a $_POST Request
 | 
			
		||||
	 * 
 | 
			
		||||
	 * This methods check the existence of the conversation, but also check if the
 | 
			
		||||
	 * user is a member or not of the conversation
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param string $name The name of the $_POST field containing the conversation ID
 | 
			
		||||
	 * @return int The ID of the conversation
 | 
			
		||||
	 */
 | 
			
		||||
	private function getSafePostConversationID(string $name) : int {
 | 
			
		||||
 | 
			
		||||
		user_login_required();
 | 
			
		||||
 | 
			
		||||
		//Get the ID of the conversation
 | 
			
		||||
		$conversationID = getPostConversationID("conversationID");
 | 
			
		||||
 | 
			
		||||
		//Check if the user belongs to the conversation
 | 
			
		||||
		if(!components()->conversations->userBelongsTo(userID, $conversationID))
 | 
			
		||||
			Rest_fatal_error(401, "Specified user doesn't belongs to the conversation number ".$conversationID." !");
 | 
			
		||||
 | 
			
		||||
		return $conversationID;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Turn a ConversationInfo object into a valid API entry
 | 
			
		||||
	 * 
 | 
			
		||||
 
 | 
			
		||||
@@ -600,6 +600,34 @@ class Conversations {
 | 
			
		||||
		return $messages;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Get the older messages of a conversation
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param int $conversationID The ID of the target conversation
 | 
			
		||||
	 * @param int $startID The ID from which the research should start
 | 
			
		||||
	 * @param int $limit The maximum number of message to get (positive number)
 | 
			
		||||
	 * @return array The list of messages found
 | 
			
		||||
	 */
 | 
			
		||||
	public function getOlderMessages(int $conversationID, int $startID, int $limit) : array {
 | 
			
		||||
 | 
			
		||||
		//Define conditions
 | 
			
		||||
		$conditions = "WHERE ID_".$this->conversationsListTable." = ? AND ID < ? ORDER BY ID DESC LIMIT ".($limit);
 | 
			
		||||
		$condVals = array(
 | 
			
		||||
			$conversationID,
 | 
			
		||||
			$startID + 1
 | 
			
		||||
		);
 | 
			
		||||
 | 
			
		||||
		//Perform request
 | 
			
		||||
		$messages = $this->getMessages($conditions, $condVals);
 | 
			
		||||
 | 
			
		||||
		//Revert messages order
 | 
			
		||||
		$messages = array_reverse($messages);
 | 
			
		||||
 | 
			
		||||
		//Return messages
 | 
			
		||||
		return $messages;
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Check whether a conversation exists or not
 | 
			
		||||
	 * 
 | 
			
		||||
 
 | 
			
		||||
@@ -82,7 +82,7 @@ function postString(string $name, int $minLength = 1) : string {
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get a boolean given in a $_POST request safely.
 | 
			
		||||
 * This function make a REST_Error if an error occur while
 | 
			
		||||
 * This function makes a REST_Error if an error occurr while
 | 
			
		||||
 * processing the value
 | 
			
		||||
 * 
 | 
			
		||||
 * @param string $name The name of the $_POST field
 | 
			
		||||
@@ -97,6 +97,22 @@ function postBool(string $name) : bool {
 | 
			
		||||
	return $_POST[$name] == "true";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get an integer given in a $_POST request safely
 | 
			
		||||
 * This function makes a REST_Error in case of error
 | 
			
		||||
 * 
 | 
			
		||||
 * @param string $name The name of the $_POST field
 | 
			
		||||
 * @return int The integer
 | 
			
		||||
 */
 | 
			
		||||
function postInt(string $name) : int {
 | 
			
		||||
	
 | 
			
		||||
	//Check the variable
 | 
			
		||||
	if(!isset($_POST[$name]))
 | 
			
		||||
		Rest_fatal_error(400, "Please add a POST integer named '".$name."' in the request !");
 | 
			
		||||
 | 
			
		||||
	return (int)$_POST[$name];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Securely transform user given number (mixed) to integer (int)
 | 
			
		||||
 *
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user