mirror of
https://github.com/pierre42100/ComunicAPI
synced 2024-11-27 15:59:29 +00:00
Can get informations of a specific conversation
This commit is contained in:
parent
93d5ec8044
commit
b1e340e0c1
@ -26,6 +26,37 @@ class conversationsController{
|
|||||||
return $conversationsList;
|
return $conversationsList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get informationsd about one conversation
|
||||||
|
*
|
||||||
|
* @url POST /conversations/getInfosOne
|
||||||
|
*/
|
||||||
|
public function getOneConversationInformations(){
|
||||||
|
user_login_required();
|
||||||
|
|
||||||
|
//First, check the parametres
|
||||||
|
if(!isset($_POST['conversationID']))
|
||||||
|
Rest_fatal_error(501, "No conversation ID specified with the request");
|
||||||
|
|
||||||
|
//Extract data
|
||||||
|
$conversationID = toInt($_POST['conversationID']);
|
||||||
|
|
||||||
|
//Try to get informations about the conversation
|
||||||
|
$conversationsList = CS::get()->components->conversations->getList(userID, $conversationID);
|
||||||
|
|
||||||
|
//Check for errors
|
||||||
|
if($conversationsList === false)
|
||||||
|
Rest_fatal_error(500, "An internal error occured");
|
||||||
|
|
||||||
|
//Check if a conversation was found
|
||||||
|
if(count($conversationsList) < 1)
|
||||||
|
Rest_fatal_error(401, "Users doesn't belong to the specified conversation,".
|
||||||
|
"or the conversation doesn't exists !");
|
||||||
|
|
||||||
|
//Return conversation informations
|
||||||
|
return $conversationsList[0];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new conversation
|
* Create a new conversation
|
||||||
*
|
*
|
||||||
|
@ -8,52 +8,64 @@
|
|||||||
class conversations {
|
class conversations {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var String $conversationListTable Name of the conversation list table
|
* @var String $conversationsListTable Name of the conversation list table
|
||||||
*/
|
*/
|
||||||
private $conversationListTable;
|
private $conversationsListTable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var String $conversationUsersTable Name of the conversation users table
|
* @var String $conversationsUsersTable Name of the conversation users table
|
||||||
*/
|
*/
|
||||||
private $conversationUsersTable;
|
private $conversationsUsersTable;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Public constructor
|
* Public constructor
|
||||||
*/
|
*/
|
||||||
public function __construct(){
|
public function __construct(){
|
||||||
$this->conversationListTable = CS::get()->config->get("dbprefix")."conversations_list";
|
$this->conversationsListTable = CS::get()->config->get("dbprefix")."conversations_list";
|
||||||
$this->conversationUsersTable = CS::get()->config->get("dbprefix")."conversations_users";
|
$this->conversationsUsersTable = CS::get()->config->get("dbprefix")."conversations_users";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the conversations list of a specified user
|
* Get the conversations list of a specified user
|
||||||
|
* or get informations of a specific conversation
|
||||||
*
|
*
|
||||||
* @param Integer $userID The ID of the user to get the list
|
* @param Integer $userID The ID of the user to get the list
|
||||||
|
* @param Integer $conversationID Optionnal, the ID of conversation to get informatios from
|
||||||
* @return Mixed Array in case of result / False else
|
* @return Mixed Array in case of result / False else
|
||||||
*/
|
*/
|
||||||
public function getList($userID){
|
public function getList($userID, $conversationID = 0){
|
||||||
|
|
||||||
//Prepare database request
|
//Prepare database request
|
||||||
$tablesName = $this->conversationListTable.", ".$this->conversationUsersTable;
|
$tablesName = $this->conversationsListTable.", ".$this->conversationsUsersTable;
|
||||||
|
|
||||||
//Prepare conditions
|
//Prepare conditions
|
||||||
$tableJoinCondition = $this->conversationListTable.".ID = ".$this->conversationUsersTable.".ID_".$this->conversationListTable."";
|
$tableJoinCondition = $this->conversationsListTable.".ID = ".$this->conversationsUsersTable.".ID_".$this->conversationsListTable."";
|
||||||
$userCondition = $this->conversationUsersTable.".ID_utilisateurs = ?";
|
$userCondition = $this->conversationsUsersTable.".ID_utilisateurs = ?";
|
||||||
$orderResults = "ORDER BY ".$this->conversationListTable.".last_active DESC";
|
$orderResults = "ORDER BY ".$this->conversationsListTable.".last_active DESC";
|
||||||
|
|
||||||
|
//Specify conditions values
|
||||||
|
$conditionsValues = array($userID);
|
||||||
|
|
||||||
|
//Check if we have to get informations about just one conversation
|
||||||
|
if($conversationID != 0){
|
||||||
|
$specificConditions = "AND ".$this->conversationsListTable.".ID = ?";
|
||||||
|
$conditionsValues[] = $conversationID;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
$specificConditions = ""; //Nothing now
|
||||||
|
|
||||||
//Compile conditions
|
//Compile conditions
|
||||||
$conditions = "WHERE ".$tableJoinCondition." AND (".$userCondition.") ".$orderResults;
|
$conditions = "WHERE ".$tableJoinCondition." AND (".$userCondition.") ".$specificConditions." ".$orderResults;
|
||||||
$conditionsValues = array($userID);
|
|
||||||
|
|
||||||
//Fields list
|
//Fields list
|
||||||
$requiredFields = array(
|
$requiredFields = array(
|
||||||
$this->conversationListTable.".ID",
|
$this->conversationsListTable.".ID",
|
||||||
$this->conversationListTable.".last_active",
|
$this->conversationsListTable.".last_active",
|
||||||
$this->conversationListTable.".name",
|
$this->conversationsListTable.".name",
|
||||||
$this->conversationListTable.".ID_utilisateurs AS ID_owner",
|
$this->conversationsListTable.".ID_utilisateurs AS ID_owner",
|
||||||
$this->conversationUsersTable.".following",
|
$this->conversationsUsersTable.".following",
|
||||||
$this->conversationUsersTable.".saw_last_message",
|
$this->conversationsUsersTable.".saw_last_message",
|
||||||
);
|
);
|
||||||
|
|
||||||
//Perform database request
|
//Perform database request
|
||||||
@ -83,6 +95,7 @@ class conversations {
|
|||||||
return $conversationsList;
|
return $conversationsList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a conversation members
|
* Get a conversation members
|
||||||
*
|
*
|
||||||
@ -92,8 +105,8 @@ class conversations {
|
|||||||
public function getConversationMembers($conversationID) : array {
|
public function getConversationMembers($conversationID) : array {
|
||||||
|
|
||||||
//Perform a request on the database
|
//Perform a request on the database
|
||||||
$tableName = $this->conversationUsersTable;
|
$tableName = $this->conversationsUsersTable;
|
||||||
$conditions = "WHERE ID_".$this->conversationListTable." = ?";
|
$conditions = "WHERE ID_".$this->conversationsListTable." = ?";
|
||||||
$conditionsValues = array($conversationID*1);
|
$conditionsValues = array($conversationID*1);
|
||||||
$getFields = array("ID_utilisateurs as userID");
|
$getFields = array("ID_utilisateurs as userID");
|
||||||
|
|
||||||
@ -132,7 +145,7 @@ class conversations {
|
|||||||
);
|
);
|
||||||
|
|
||||||
//First, insert the conversation in the main table
|
//First, insert the conversation in the main table
|
||||||
if(!CS::get()->db->addLine($this->conversationListTable, $mainInformations))
|
if(!CS::get()->db->addLine($this->conversationsListTable, $mainInformations))
|
||||||
return 0; //An error occured
|
return 0; //An error occured
|
||||||
|
|
||||||
//Get the last inserted ID
|
//Get the last inserted ID
|
||||||
@ -147,7 +160,7 @@ class conversations {
|
|||||||
|
|
||||||
//Prepare informations about the user
|
//Prepare informations about the user
|
||||||
$userInformations = array(
|
$userInformations = array(
|
||||||
"ID_".$this->conversationListTable => $conversationID,
|
"ID_".$this->conversationsListTable => $conversationID,
|
||||||
"time_add" => time(),
|
"time_add" => time(),
|
||||||
"saw_last_message" => 1,
|
"saw_last_message" => 1,
|
||||||
"ID_utilisateurs" => $processUser,
|
"ID_utilisateurs" => $processUser,
|
||||||
@ -158,7 +171,7 @@ class conversations {
|
|||||||
$userInformations["following"] = ($follow ? 1 : 0);
|
$userInformations["following"] = ($follow ? 1 : 0);
|
||||||
|
|
||||||
//Try to insert user in conversation
|
//Try to insert user in conversation
|
||||||
if(!CS::get()->db->addLine($this->conversationUsersTable, $userInformations))
|
if(!CS::get()->db->addLine($this->conversationsUsersTable, $userInformations))
|
||||||
return 0; //Error
|
return 0; //Error
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,6 +179,34 @@ class conversations {
|
|||||||
return $conversationID;
|
return $conversationID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a user is a member of a conversation or not
|
||||||
|
*
|
||||||
|
* @param Integer $userID The ID of the user to check
|
||||||
|
* @param Integer $conversationID The ID of the conversation to check
|
||||||
|
* @return Boolean True if the user belongs to the conversation
|
||||||
|
*/
|
||||||
|
public function userBelongsTo($userID, $conversationID){
|
||||||
|
|
||||||
|
//Prepare a request on the database
|
||||||
|
$tableName = $this->conversationsUsersTable;
|
||||||
|
$conditions = "WHERE ID_".$this->conversationsListTable." = ? AND ID_utilisateurs = ?";
|
||||||
|
$values = array(
|
||||||
|
$conversationID,
|
||||||
|
$userID
|
||||||
|
);
|
||||||
|
|
||||||
|
//Peform a request on the database
|
||||||
|
$result = CS::get()->db->count($tableName, $conditions, $values);
|
||||||
|
|
||||||
|
//Check if request failed
|
||||||
|
if($result === false)
|
||||||
|
return false; // An error occured
|
||||||
|
|
||||||
|
//Analyse result and return it
|
||||||
|
return $result != 0;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Register component
|
//Register component
|
||||||
|
@ -44,13 +44,23 @@ function users_list_to_array($list) : array{
|
|||||||
foreach($array as $process){
|
foreach($array as $process){
|
||||||
|
|
||||||
//Check the entry is valid
|
//Check the entry is valid
|
||||||
if(floor($process*1) < 1)
|
if(toInt($process) < 1)
|
||||||
return array();
|
return array();
|
||||||
|
|
||||||
//Add the entry to the list
|
//Add the entry to the list
|
||||||
$usersList[floor($process*1)] = floor($process*1);
|
$usersList[toInt($process)] = toInt($process);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Return the result
|
//Return the result
|
||||||
return $usersList;
|
return $usersList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Securely transform user given number (mixed) to integer (int)
|
||||||
|
*
|
||||||
|
* @param Mixed $input The input variable (mixed)
|
||||||
|
* @return Integer $output The output (safe integer)
|
||||||
|
*/
|
||||||
|
function toInt($input){
|
||||||
|
return floor($input*1);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user