Conversations can be created

This commit is contained in:
Pierre 2017-06-10 15:04:45 +02:00
parent 6498132ef2
commit bba8de04a0
3 changed files with 81 additions and 5 deletions

View File

@ -22,14 +22,28 @@ class conversationsController{
//Extract parametres //Extract parametres
$conversationName = ($_POST["name"] == "false" ? false : $_POST['name']); $conversationName = ($_POST["name"] == "false" ? false : $_POST['name']);
$followConversation = ($_POST['follow'] == "true" ? true : false); $followConversation = ($_POST['follow'] == "true" ? true : false);
$users = users_list_to_array($_POST['users']); $usersList = users_list_to_array($_POST['users']);
//Add current user (if not present)
if(!isset($usersList[userID]))
$usersList[userID] = userID;
//Check users //Check users
if(count($users) < 1) if(count($usersList) < 1)
Rest_fatal_erro(501, "Please select at least one user !"); Rest_fatal_error(501, "Please select at least one user !");
//Perform the request //Try to create the conversation
$conversationID = CS::get()->components->conversations->create(userID, $followConversation, $usersList, $conversationName);
//Check for errors
if($conversationID == 0)
Rest_fatal_error(500, "Couldn't create the conversation !");
//Success
return array(
"conversationID" => $conversationID,
"success" => "The conversation was successfully created !"
);
} }
} }

View File

@ -7,6 +7,25 @@
class conversations { class conversations {
/**
* @var String $conversationListTable Name of the conversation list table
*/
private $conversationListTable;
/**
* @var String $conversationUsersTable Name of the conversation users table
*/
private $conversationUsersTable;
/**
* Public constructor
*/
public function __construct(){
$this->conversationListTable = CS::get()->config->get("dbprefix")."conversations_list";
$this->conversationUsersTable = CS::get()->config->get("dbprefix")."conversations_users";
}
/** /**
* Create a new conversation * Create a new conversation
* *
@ -14,7 +33,50 @@ class conversations {
* @param Boolean $follow Defines if the user creating the conversation will follow it * @param Boolean $follow Defines if the user creating the conversation will follow it
* @param Array $usersList The list of users following the conversation * @param Array $usersList The list of users following the conversation
* @param Mixed $name Optionnal, the name of the conversation * @param Mixed $name Optionnal, the name of the conversation
* @return Integer 0 for a fail else the ID of the newly created conversation
*/ */
public function create($userID, $follow, array $usersList, $name){
$mainInformations = array(
"ID_utilisateurs" => $userID*1,
"name" => ($name ? $name : ""),
"last_active" => time(),
"creation_time" => time()
);
//First, insert the conversation in the main table
if(!CS::get()->db->addLine($this->conversationListTable, $mainInformations))
return 0; //An error occured
//Get the last inserted ID
$conversationID = CS::get()->db->getLastInsertedID();
//Check for errors
if($conversationID == 0)
return 0;
//Insert users registrattions
foreach($usersList as $processUser){
//Prepare informations about the user
$userInformations = array(
"ID_".$this->conversationListTable => $conversationID,
"time_add" => time(),
"saw_last_message" => 1
);
//Make user follow the conversation if required
if($userID == $processUser)
$userInformations["following"] = ($follow ? 1 : 0);
//Try to insert user in conversation
if(!CS::get()->db->addLine($this->conversationUsersTable, $userInformations))
return 0; //Error
}
//Conversation creation is a success
return $conversationID;
}
} }

View File

@ -48,7 +48,7 @@ function users_list_to_array($list) : array{
return array(); return array();
//Add the entry to the list //Add the entry to the list
$usersList[] = floor($process*1); $usersList[floor($process*1)] = floor($process*1);
} }
//Return the result //Return the result