mirror of
https://github.com/pierre42100/ComunicAPI
synced 2024-11-23 22:09:29 +00:00
Update conversation members operationnal
This commit is contained in:
parent
360347ba37
commit
d9eeddb131
@ -138,7 +138,18 @@ class conversationsController{
|
|||||||
Rest_fatal_error(500, "Couldn't update conversation name !");
|
Rest_fatal_error(500, "Couldn't update conversation name !");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Update conversation users (if required)
|
||||||
|
if(isset($_POST["members"])){
|
||||||
|
//Get user list
|
||||||
|
$conversationMembers = users_list_to_array($_POST['members']);
|
||||||
|
|
||||||
|
//Make sure current user is in the list
|
||||||
|
$conversationMembers[userID] = userID;
|
||||||
|
|
||||||
|
//Try to update conversation members
|
||||||
|
if(!CS::get()->components->conversations->updateMembers($conversationID, $conversationMembers))
|
||||||
|
Rest_fatal_error(500, "Couldn't update conversation members list !");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,20 +158,13 @@ class conversations {
|
|||||||
//Insert users registrattions
|
//Insert users registrattions
|
||||||
foreach($usersList as $processUser){
|
foreach($usersList as $processUser){
|
||||||
|
|
||||||
//Prepare informations about the user
|
|
||||||
$userInformations = array(
|
|
||||||
"ID_".$this->conversationsListTable => $conversationID,
|
|
||||||
"time_add" => time(),
|
|
||||||
"saw_last_message" => 1,
|
|
||||||
"ID_utilisateurs" => $processUser,
|
|
||||||
);
|
|
||||||
|
|
||||||
//Make user follow the conversation if required
|
//Make user follow the conversation if required
|
||||||
|
$processUserFollowing = false;
|
||||||
if($userID == $processUser)
|
if($userID == $processUser)
|
||||||
$userInformations["following"] = ($follow ? 1 : 0);
|
$processUserFollowing = $follow;
|
||||||
|
|
||||||
//Try to insert user in conversation
|
//Try to insert user in conversation
|
||||||
if(!CS::get()->db->addLine($this->conversationsUsersTable, $userInformations))
|
if(!$this->addMember($conversationID, $processUser, $processUserFollowing))
|
||||||
return 0; //Error
|
return 0; //Error
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,6 +257,84 @@ class conversations {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update conversation members list
|
||||||
|
*
|
||||||
|
* @param Integer $conversationID The ID of the conversation to update
|
||||||
|
* @param Array $conversationMembers The new list of conversation members
|
||||||
|
* @return Boolean True for a success
|
||||||
|
*/
|
||||||
|
public function updateMembers($conversationID, array $conversationMembers){
|
||||||
|
|
||||||
|
//Get the current conversation list
|
||||||
|
$currentMembers = $this->getConversationMembers($conversationID);
|
||||||
|
|
||||||
|
//Determinate entries to add
|
||||||
|
$toAdd = array_diff($conversationMembers, $currentMembers);
|
||||||
|
|
||||||
|
//Determinate entries to remove
|
||||||
|
$toRemove = array_diff($currentMembers, $conversationMembers);
|
||||||
|
|
||||||
|
//Add new member
|
||||||
|
foreach($toAdd as $processInsert){
|
||||||
|
if(!$this->addMember($conversationID, $processInsert))
|
||||||
|
return false; //An error occured
|
||||||
|
}
|
||||||
|
|
||||||
|
//Remove old members
|
||||||
|
foreach($toRemove as $processDelete){
|
||||||
|
if(!$this->removeMember($conversationID, $processDelete))
|
||||||
|
return false; //An error occured
|
||||||
|
}
|
||||||
|
|
||||||
|
//Success
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a member to the list
|
||||||
|
*
|
||||||
|
* @param Integer $conversationID The ID of the target conversation
|
||||||
|
* @param Integer $userID The ID of the user to add to the conversation
|
||||||
|
* @param Boolean $follow Optionnal, specify if the user will follow or not the conversation
|
||||||
|
* @return Boolean True for a success
|
||||||
|
*/
|
||||||
|
private function addMember($conversationID, $userID, $follow = false){
|
||||||
|
|
||||||
|
//Prepare database request
|
||||||
|
$tableName = $this->conversationsUsersTable;
|
||||||
|
$values = array(
|
||||||
|
"ID_".$this->conversationsListTable => $conversationID,
|
||||||
|
"ID_utilisateurs" => $userID,
|
||||||
|
"time_add" => time(),
|
||||||
|
"following" => $follow ? 1 : 0,
|
||||||
|
"saw_last_message" => 1
|
||||||
|
);
|
||||||
|
|
||||||
|
//Try to perform request
|
||||||
|
return CS::get()->db->addLine($tableName, $values);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove a member from the list
|
||||||
|
*
|
||||||
|
* @param Integer $conversationID The ID of the target conversation
|
||||||
|
* @param Integer $userID The ID of the user to remove from the conversation
|
||||||
|
* @return Boolean True for a success
|
||||||
|
*/
|
||||||
|
private function removeMember($conversationID, $userID){
|
||||||
|
//Prepare database request
|
||||||
|
$tableName = $this->conversationsUsersTable;
|
||||||
|
$conditions = "ID_".$this->conversationsListTable." = ? AND ID_utilisateurs = ?";
|
||||||
|
$values = array(
|
||||||
|
$conversationID,
|
||||||
|
$userID
|
||||||
|
);
|
||||||
|
|
||||||
|
//Try to perform request
|
||||||
|
return CS::get()->db->deleteEntry($tableName, $conditions, $values);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a user is a conversation moderator or not
|
* Check if a user is a conversation moderator or not
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user