2a2c2b1d67
Merging Gsoc 14 branch with default
248 lines
8.6 KiB
PHP
248 lines
8.6 KiB
PHP
<?php
|
|
/**
|
|
* handles functions related to replies on tickets.
|
|
* @author Daan Janssens, mentored by Matthew Lagoe
|
|
*/
|
|
class Ticket_Reply{
|
|
private $tReplyId; /**< The id of the reply */
|
|
private $ticket; /**< the ticket id related to the reply */
|
|
private $content; /**< the content of the reply */
|
|
private $author; /**< The id of the user that made the reply */
|
|
private $timestamp; /**< The timestamp of the reply */
|
|
private $hidden; /**< indicates if reply should be hidden for normal users or not */
|
|
|
|
////////////////////////////////////////////Functions////////////////////////////////////////////////////
|
|
|
|
/**
|
|
* return constructed element based on TReplyId.
|
|
* @param $id the Id the reply we want to load.
|
|
* @return the loaded object.
|
|
*/
|
|
public static function constr_TReplyId( $id) {
|
|
$instance = new self();
|
|
$instance->setTReplyId($id);
|
|
return $instance;
|
|
}
|
|
|
|
|
|
/**
|
|
* return all replies on a specific ticket.
|
|
* @param $ticket_id the id of the ticket of which we want the replies.
|
|
* @param $view_as_admin if the browsing user is an admin/mod it should be 1, this will also show the hidden replies.
|
|
* @return an array with ticket_reply objects (beware the author and content are objects on their own, not integers!)
|
|
*/
|
|
public static function getRepliesOfTicket( $ticket_id, $view_as_admin) {
|
|
$dbl = new DBLayer("lib");
|
|
$statement = $dbl->execute("SELECT * FROM ticket_reply INNER JOIN ticket_content INNER JOIN ticket_user ON ticket_reply.Content = ticket_content.TContentId and ticket_reply.Ticket=:id and ticket_user.TUserId = ticket_reply.Author ORDER BY ticket_reply.TReplyId ASC", array('id' => $ticket_id));
|
|
$row = $statement->fetchAll();
|
|
$result = Array();
|
|
foreach($row as $tReply){
|
|
//only add hidden replies if the user is a mod/admin
|
|
if(! $tReply['Hidden'] || $view_as_admin){
|
|
//load author
|
|
$instanceAuthor = Ticket_User::constr_TUserId($tReply['Author']);
|
|
$instanceAuthor->setExternId($tReply['ExternId']);
|
|
$instanceAuthor->setPermission($tReply['Permission']);
|
|
|
|
//load content
|
|
$instanceContent = new Ticket_Content();
|
|
$instanceContent->setTContentId($tReply['TContentId']);
|
|
$instanceContent->setContent($tReply['Content']);
|
|
|
|
//load reply and add the author and content object in it.
|
|
$instanceReply = new self();
|
|
$instanceReply->setTReplyId($tReply['TReplyId']);
|
|
$instanceReply->setTimestamp($tReply['Timestamp']);
|
|
$instanceReply->setAuthor($instanceAuthor);
|
|
$instanceReply->setTicket($ticket_id);
|
|
$instanceReply->setContent($instanceContent);
|
|
$instanceReply->setHidden($tReply['Hidden']);
|
|
$result[] = $instanceReply;
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* creates a new reply on a ticket.
|
|
* Creates a ticket_content entry and links it with a new created ticket_reply, a log entry will be written about this.
|
|
* In case the ticket creator replies on a ticket, he will set the status by default to 'waiting on support'.
|
|
* @param $content the content of the reply
|
|
* @param $author the id of the reply creator.
|
|
* @param $ticket_id the id of the ticket of which we want the replies.
|
|
* @param $hidden should be 0 or 1
|
|
* @param $ticket_creator the ticket's starter his id.
|
|
*/
|
|
public static function createReply($content, $author, $ticket_id , $hidden, $ticket_creator){
|
|
$ticket_content = new Ticket_Content();
|
|
$ticket_content->setContent($content);
|
|
$ticket_content->create();
|
|
$content_id = $ticket_content->getTContentId();
|
|
|
|
$ticket_reply = new Ticket_Reply();
|
|
$ticket_reply->set(Array('Ticket' => $ticket_id,'Content' => $content_id,'Author' => $author, 'Hidden' => $hidden));
|
|
$ticket_reply->create();
|
|
$reply_id = $ticket_reply->getTReplyId();
|
|
|
|
if($ticket_creator == $author){
|
|
Ticket::updateTicketStatus( $ticket_id, 1, $author);
|
|
}
|
|
|
|
Ticket_Log::createLogEntry( $ticket_id, $author, 4, $reply_id);
|
|
}
|
|
|
|
////////////////////////////////////////////Methods////////////////////////////////////////////////////
|
|
|
|
/**
|
|
* A constructor.
|
|
* Empty constructor
|
|
*/
|
|
public function __construct() {
|
|
}
|
|
|
|
|
|
/**
|
|
* sets the object's attributes.
|
|
* @param $values should be an array.
|
|
*/
|
|
public function set($values){
|
|
$this->setTicket($values['Ticket']);
|
|
$this->setContent($values['Content']);
|
|
$this->setAuthor($values['Author']);
|
|
if(isset($values['Timestamp'])){
|
|
$this->setTimestamp($values['Timestamp']);
|
|
}
|
|
if(isset($values['Hidden'])){
|
|
$this->setHidden($values['Hidden']);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* creates a new 'ticket_reply' entry.
|
|
* this method will use the object's attributes for creating a new 'ticket_reply' entry in the database (the now() function will create the timestamp).
|
|
*/
|
|
public function create(){
|
|
$dbl = new DBLayer("lib");
|
|
$this->tReplyId = $dbl->executeReturnId("ticket_reply", Array('Ticket' => $this->ticket, 'Content' => $this->content, 'Author' => $this->author,'Timestamp'=>now(), 'Hidden' => $this->hidden));
|
|
}
|
|
|
|
/**
|
|
* loads the object's attributes.
|
|
* loads the object's attributes by giving a ticket_reply's id.
|
|
* @param $id the id of the ticket_reply that should be loaded
|
|
*/
|
|
public function load_With_TReplyId( $id) {
|
|
$dbl = new DBLayer("lib");
|
|
$statement = $dbl->select("ticket_reply", array('id' => $id), "TReplyId=:id");
|
|
$row = $statement->fetch();
|
|
$this->tReplyId = $row['TReplyId'];
|
|
$this->ticket = $row['Ticket'];
|
|
$this->content = $row['Content'];
|
|
$this->author = $row['Author'];
|
|
$this->timestamp = $row['Timestamp'];
|
|
$this->hidden = $row['Hidden'];
|
|
}
|
|
|
|
/**
|
|
* updates a ticket_reply entry based on the objects attributes.
|
|
*/
|
|
public function update(){
|
|
$dbl = new DBLayer("lib");
|
|
$dbl->update("ticket", Array('Ticket' => $this->ticket, 'Content' => $this->content, 'Author' => $this->author, 'Timestamp' => $this->timestamp, 'Hidden' => $this->hidden), "TReplyId=$this->tReplyId, ");
|
|
}
|
|
|
|
////////////////////////////////////////////Getters////////////////////////////////////////////////////
|
|
|
|
/**
|
|
* get ticket attribute of the object.
|
|
*/
|
|
public function getTicket(){
|
|
return $this->ticket;
|
|
}
|
|
|
|
/**
|
|
* get content attribute of the object.
|
|
*/
|
|
public function getContent(){
|
|
return $this->content;
|
|
}
|
|
|
|
/**
|
|
* get author attribute of the object.
|
|
*/
|
|
public function getAuthor(){
|
|
return $this->author;
|
|
}
|
|
|
|
/**
|
|
* get timestamp attribute of the object.
|
|
* The output format is defined by the Helpers class function, outputTime().
|
|
*/
|
|
public function getTimestamp(){
|
|
return Helpers::outputTime($this->timestamp);
|
|
}
|
|
|
|
/**
|
|
* get tReplyId attribute of the object.
|
|
*/
|
|
public function getTReplyId(){
|
|
return $this->tReplyId;
|
|
}
|
|
|
|
/**
|
|
* get hidden attribute of the object.
|
|
*/
|
|
public function getHidden(){
|
|
return $this->hidden;
|
|
}
|
|
|
|
////////////////////////////////////////////Setters////////////////////////////////////////////////////
|
|
|
|
/**
|
|
* set ticket attribute of the object.
|
|
* @param $t integer id of the ticket
|
|
*/
|
|
public function setTicket($t){
|
|
$this->ticket = $t;
|
|
}
|
|
|
|
/**
|
|
* set content attribute of the object.
|
|
* @param $c integer id of the ticket_content entry
|
|
*/
|
|
public function setContent($c){
|
|
$this->content = $c;
|
|
}
|
|
|
|
/**
|
|
* set author attribute of the object.
|
|
* @param $a integer id of the user
|
|
*/
|
|
public function setAuthor($a){
|
|
$this->author = $a;
|
|
}
|
|
|
|
/**
|
|
* set timestamp attribute of the object.
|
|
* @param $t timestamp of the reply
|
|
*/
|
|
public function setTimestamp($t){
|
|
$this->timestamp = $t;
|
|
}
|
|
|
|
/**
|
|
* set tReplyId attribute of the object.
|
|
* @param $i integer id of the ticket_reply
|
|
*/
|
|
public function setTReplyId($i){
|
|
$this->tReplyId = $i;
|
|
}
|
|
|
|
/**
|
|
* set hidden attribute of the object.
|
|
* @param $h should be 0 or 1
|
|
*/
|
|
public function setHidden($h){
|
|
$this->hidden = $h;
|
|
}
|
|
}
|