2017-06-10 08:07:03 +00:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Conversations component
|
|
|
|
*
|
|
|
|
* @author Pierre HUBERT
|
|
|
|
*/
|
|
|
|
|
|
|
|
class conversations {
|
|
|
|
|
2017-06-10 13:04:45 +00:00
|
|
|
/**
|
|
|
|
* @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";
|
|
|
|
}
|
|
|
|
|
2017-06-10 08:07:03 +00:00
|
|
|
/**
|
|
|
|
* Create a new conversation
|
|
|
|
*
|
|
|
|
* @param Integer $userID The ID of the user creating the conversation
|
|
|
|
* @param Boolean $follow Defines if the user creating the conversation will follow it
|
|
|
|
* @param Array $usersList The list of users following the conversation
|
|
|
|
* @param Mixed $name Optionnal, the name of the conversation
|
2017-06-10 13:04:45 +00:00
|
|
|
* @return Integer 0 for a fail else the ID of the newly created conversation
|
2017-06-10 08:07:03 +00:00
|
|
|
*/
|
2017-06-10 13:04:45 +00:00
|
|
|
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;
|
|
|
|
}
|
2017-06-10 08:07:03 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//Register component
|
|
|
|
Components::register("conversations", new conversations());
|