mirror of
https://github.com/pierre42100/ComunicAPI
synced 2024-12-25 04:58:59 +00:00
Text message can be sent
This commit is contained in:
parent
03392f65a9
commit
898cbc2e41
@ -17,6 +17,11 @@ class conversations {
|
||||
*/
|
||||
private $conversationsUsersTable;
|
||||
|
||||
/**
|
||||
* @var String $conversationMessagesTabel Name of the conversation messages table
|
||||
*/
|
||||
private $conversationMessagesTable;
|
||||
|
||||
|
||||
/**
|
||||
* Public constructor
|
||||
@ -24,6 +29,7 @@ class conversations {
|
||||
public function __construct(){
|
||||
$this->conversationsListTable = CS::get()->config->get("dbprefix")."conversations_list";
|
||||
$this->conversationsUsersTable = CS::get()->config->get("dbprefix")."conversations_users";
|
||||
$this->conversationMessagesTable = CS::get()->config->get("dbprefix")."conversations_messages";
|
||||
}
|
||||
|
||||
/**
|
||||
@ -411,6 +417,93 @@ class conversations {
|
||||
return $conversationsID;
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert a new message in the database
|
||||
*
|
||||
* @param Integer $userID The ID of the user inserting the message
|
||||
* @param Integer $conversationID The ID of the target conversation
|
||||
* @param String $message The message to insert
|
||||
* @return Boolean True for a success
|
||||
*/
|
||||
private function insertMessage($userID, $conversationID, $message){
|
||||
|
||||
//Prepare values
|
||||
$tableName = $this->conversationMessagesTable;
|
||||
$values = array(
|
||||
"ID_".$this->conversationsListTable => $conversationID,
|
||||
"ID_utilisateurs" => $userID,
|
||||
"time_insert" => time(),
|
||||
"message" => $message
|
||||
);
|
||||
|
||||
//Try to insert new value in database
|
||||
if(!CS::get()->db->addLine($tableName, $values))
|
||||
return false; //An error occured
|
||||
|
||||
//Success
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the last time a conversation was active
|
||||
*
|
||||
* @param Integer $conversationID The ID of the conversation to update
|
||||
* @param Integer $time The new time of last activity to set
|
||||
* @return Boolean True for a success
|
||||
*/
|
||||
private function updateLastActive($conversationID, $time){
|
||||
|
||||
//Perform a request on the database
|
||||
$tableName = $this->conversationsListTable;
|
||||
$conditions = "ID = ?";
|
||||
$condVals = array($conversationID);
|
||||
|
||||
//Set new values
|
||||
$newValues = array(
|
||||
"last_active" => $time,
|
||||
);
|
||||
|
||||
//Try to perform a request on the database
|
||||
if(!CS::get()->db->updateDB($tableName, $conditions, $newValues, $condVals))
|
||||
return false; //An error occured
|
||||
|
||||
//Success
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Mark all the users of a conversation as "unread"
|
||||
*
|
||||
* @param Integer $conversationID The ID of the conversation to update
|
||||
* @param Array $exceptions Users that should not be marked as read
|
||||
* @return Boolean True for a success
|
||||
*/
|
||||
private function allUsersAsUnread($conversationID, array $exceptions){
|
||||
|
||||
//Prepare request
|
||||
$tableName = $this->conversationsUsersTable;
|
||||
$conditions = "ID_".$this->conversationsListTable." = ?";
|
||||
$condVals = array($conversationID);
|
||||
|
||||
//Remove users exceptions
|
||||
foreach($exceptions as $userID){
|
||||
$conditions.= " AND ID_utilisateurs != ?";
|
||||
$condVals[] = $userID;
|
||||
}
|
||||
|
||||
//Define new values
|
||||
$newValues = array(
|
||||
"saw_last_message" => 0
|
||||
);
|
||||
|
||||
//Try to perform a request on the database
|
||||
if(!CS::get()->db->updateDB($tableName, $conditions, $newValues, $condVals))
|
||||
return false; //An error occured
|
||||
|
||||
//Success
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a new message
|
||||
*
|
||||
@ -419,14 +512,26 @@ class conversations {
|
||||
* @param String $message The message
|
||||
* @return Boolean True for a success
|
||||
*/
|
||||
public function sendMessage($userID, $conversationID, $message){
|
||||
public function sendMessage($userID, $conversationID, $message){
|
||||
|
||||
//GUIDE LINE : this method act like a "controller" : it doesn't perform any database operation
|
||||
//But it manage all operations (insert message; save image; inform other users; ...)
|
||||
|
||||
//First, try to insert the message
|
||||
if(!$this->insertMessage($userID, $conversationID, $message))
|
||||
return false; //An error occured
|
||||
|
||||
//Then, update the last activity of the conversation
|
||||
if(!$this->updateLastActive($conversationID, time()))
|
||||
return false; //An error occured (2)
|
||||
|
||||
//Then, set all the users of the conversation as unread
|
||||
if(!$this->allUsersAsUnread($conversationID, array($userID)))
|
||||
return false; //An error occured (3)
|
||||
|
||||
//Success
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -93,7 +93,7 @@ function check_string_before_insert($string){
|
||||
$string = str_replace(array("<", ">"), "", $string);
|
||||
|
||||
//Check string size
|
||||
if(strlen($string)<5)
|
||||
if(strlen($string)<3)
|
||||
return false;
|
||||
|
||||
//Check if the string has at least three different characters
|
||||
|
Loading…
Reference in New Issue
Block a user