144 lines
3.8 KiB
PHP
144 lines
3.8 KiB
PHP
<?php
|
|
class Message{
|
|
|
|
protected $ID;
|
|
protected $sender;
|
|
protected $sendDate;
|
|
protected $text;
|
|
protected $discussion;
|
|
|
|
protected $valid;
|
|
|
|
public function __construct($ID){
|
|
$this->ID = $ID;
|
|
$req = $GLOBALS['bdd']->prepare('SELECT * FROM messages WHERE ID=?');
|
|
$req->execute(array($ID));
|
|
if($rep = $req->fetch()){
|
|
$this->valid = TRUE;
|
|
$this->sender = new Membre($rep['senderID']);
|
|
$this->sendDate = $rep['sendTime'];
|
|
$this->text = $rep['texte'];
|
|
$this->discussion = new Discussion($rep['discussionID']);
|
|
}else{
|
|
$this->valid = FALSE;
|
|
}
|
|
}
|
|
|
|
public function exists(){
|
|
return $this->valid;
|
|
}
|
|
|
|
public function __toString(){
|
|
$out = 'Message\n';
|
|
$out .= '\tID:' . $this->ID . '\n';
|
|
$out .= '\tSender:{' . substr(str_replace('\n\t',';',$this->sender->__toString()),0,-1) . '}\n';
|
|
$out .= '\tSend date:' . $this->sendDate . '\n';
|
|
$out .= '\tText:' . $this->text . '}\n';
|
|
$out .= '\tDiscussion:' . substr(str_replace('\n\t',';',$this->discussion->__toString()),0,-1) . '\n';
|
|
return out;
|
|
}
|
|
|
|
|
|
//Getters
|
|
public function getID(){
|
|
return $this->ID;
|
|
}
|
|
|
|
public function getSender(){
|
|
return $this->sender;
|
|
}
|
|
|
|
public function getSendDate(){
|
|
return $this->sendDate;
|
|
}
|
|
|
|
public function getText(){
|
|
return $this->text;
|
|
}
|
|
|
|
public function getDiscussion(){
|
|
return $this->discussion;
|
|
}
|
|
|
|
|
|
//Useful getters
|
|
public function canEdit($person){
|
|
return $person->isAdminLevelGreaterOrEqualThan(6) || $person->getID() == $this->sender->getID();
|
|
}
|
|
|
|
|
|
//Setters
|
|
public function editText($newText){
|
|
$this->text = htmlSepcialChars($newText);
|
|
$req = $GLOBALS ['bdd']->prepare ( 'INSERT INTO messages(discussion_id,texte,senderID,sendTime) VALUES (?,?,?,NOW())' );
|
|
$req->execute (array ($this->discussion->getID(),$this->text,$this->sender->getID()));
|
|
}
|
|
|
|
//Message getter
|
|
private static function messagesGetterOutput($req){
|
|
$out = array();
|
|
while($rep = $req->fetch())
|
|
$out[] = new Message($rep['ID']);
|
|
switch(count($out)){
|
|
case 0:
|
|
return NULL;
|
|
case 1:
|
|
return $out[0];
|
|
default:
|
|
return $out;
|
|
}
|
|
}
|
|
|
|
public static function getFromSender($param) {
|
|
$req = $GLOBALS['bdd']->prepare('SELECT * FROM messages WHERE senderID=?');
|
|
$req->execute(array($sender->getID()));
|
|
return Message::messagesGetterOutput($req);
|
|
}
|
|
|
|
|
|
public static function getFromSendDate($date){
|
|
$req = $GLOBALS['bdd']->prepare('SELECT * FROM messages WHERE sendDate=?');
|
|
$req->execute(array($date));
|
|
return Message::messagesGetterOutput($req);
|
|
}
|
|
|
|
public static function getSendedLaterThan($date){
|
|
$req = $GLOBALS['bdd']->prepare('SELECT * FROM messages WHERE sendDate>?');
|
|
$req->execute(array($date));
|
|
return Message::messagesGetterOutput($req);
|
|
}
|
|
|
|
public static function getSendedEarlierThan($date){
|
|
$req = $GLOBALS['bdd']->prepare('SELECT * FROM messages WHERE sendDate<?');
|
|
$req->execute(array($date));
|
|
return Message::messagesGetterOutput($req);
|
|
}
|
|
|
|
public static function getFromText($text) {
|
|
$req = $GLOBALS['bdd']->prepare('SELECT * FROM messages WHERE text=?');
|
|
$req->execute(array($text));
|
|
return Message::messagesGetterOutput($req);
|
|
}
|
|
|
|
public static function getFromDiscussion($discut){
|
|
$req = $GLOBALS['bdd']->prepare('SELECT * FROM messages WHERE discussionID=?');
|
|
$req->execute(array($discut->getID()));
|
|
return Message::messagesGetterOutput($req);
|
|
}
|
|
|
|
|
|
//Message creator
|
|
public static function sendMessage($sender,$discussion,$text){
|
|
$req = $GLOBALS ['bdd']->prepare ( 'INSERT INTO messages(discussionID,texte,senderID,sendTime) VALUES (?,?,?,NOW())' );
|
|
$req->execute (array($discussion->getID(),htmlspecialchars ($text),$sender->getID()));
|
|
}
|
|
|
|
public function removeMessage(){
|
|
$req = $GLOBALS ['bdd']->prepare ( 'DELETE FROM messages WHERE ID=?' );
|
|
$req->execute (array($this->getID()));
|
|
}
|
|
|
|
|
|
|
|
}
|