2c580b97aa
Merging Gsoc 14 branch with default
155 lines
4.9 KiB
PHP
155 lines
4.9 KiB
PHP
<?php
|
|
/**
|
|
* Handles the forwarding of a ticket to a support_group. This is being used to transfer tickets to different groups (eg Developers, Website-Team, SupportGroup etc..)
|
|
* The idea is that someone can easily forward a ticket to a group and by doing that, the moderators that are in that group will receive the ticket in their todo queue.
|
|
* @author Daan Janssens, mentored by Matthew Lagoe
|
|
*
|
|
*/
|
|
class Forwarded{
|
|
|
|
private $group; /**< The id of the group to which the ticket is being forwarded */
|
|
private $ticket; /**< The id of the ticket being forwarded */
|
|
|
|
////////////////////////////////////////////Functions////////////////////////////////////////////////////
|
|
|
|
|
|
/**
|
|
* Forward a ticket to a group, also removes the previous group where it was forwarded to.
|
|
* It will first check if the ticket is already forwarded, if that's the case, it will delete that entry.
|
|
* Afterwards it creates the new forward entry
|
|
* @param $group_id the id of the support group we want to forward the ticket to.
|
|
* @param $ticket_id the id of the ticket.
|
|
* @return A string, if assigning succeedded "SUCCESS_FORWARDED" will be returned.
|
|
*/
|
|
public static function forwardTicket( $group_id, $ticket_id) {
|
|
$dbl = new DBLayer("lib");
|
|
if (forwarded::isForwarded($ticket_id)){
|
|
$forw = new Forwarded();
|
|
$forw->load($ticket_id);
|
|
$forw->delete();
|
|
}
|
|
$forward = new Forwarded();
|
|
$forward->set(array('Group' => $group_id, 'Ticket' => $ticket_id));
|
|
$forward->create();
|
|
return "SUCCESS_FORWARDED";
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* get the id of the group a ticket is forwarded to.
|
|
* @param $ticket_id the id of the ticket.
|
|
* @return the id of the group
|
|
*/
|
|
public static function getSGroupOfTicket($ticket_id) {
|
|
$forw = new self();
|
|
$forw->load($ticket_id);
|
|
return $forw->getGroup();
|
|
}
|
|
|
|
|
|
/**
|
|
* check if the ticket is forwarded
|
|
* @param $ticket_id the id of the ticket.
|
|
* @return returns true if the ticket is forwarded, else return false;
|
|
*/
|
|
public static function isForwarded( $ticket_id) {
|
|
$dbl = new DBLayer("lib");
|
|
if( $dbl->select("`forwarded`", array('ticket_id' => $ticket_id), "`Ticket` = :ticket_id")->rowCount() ){
|
|
return true;
|
|
}else{
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
////////////////////////////////////////////Methods////////////////////////////////////////////////////
|
|
|
|
|
|
/**
|
|
* A constructor.
|
|
* Empty constructor
|
|
*/
|
|
public function __construct() {
|
|
}
|
|
|
|
|
|
/**
|
|
* sets the object's attributes.
|
|
* @param $values should be an array of the form array('Group' => group_id, 'Ticket' => ticket_id).
|
|
*/
|
|
public function set($values) {
|
|
$this->setGroup($values['Group']);
|
|
$this->setTicket($values['Ticket']);
|
|
}
|
|
|
|
|
|
/**
|
|
* creates a new 'forwarded' entry.
|
|
* this method will use the object's attributes for creating a new 'forwarded' entry in the database.
|
|
*/
|
|
public function create() {
|
|
$dbl = new DBLayer("lib");
|
|
$dbl->insert("`forwarded`", Array('Group' => $this->getGroup(), 'Ticket' => $this->getTicket()));
|
|
}
|
|
|
|
|
|
/**
|
|
* deletes an existing 'forwarded' entry.
|
|
* this method will use the object's attributes for deleting an existing 'forwarded' entry in the database.
|
|
*/
|
|
public function delete() {
|
|
$dbl = new DBLayer("lib");
|
|
$dbl->delete("`forwarded`", array('group_id' => $this->getGroup() ,'ticket_id' => $this->getTicket(), "`Group` = :group_id and `Ticket` = :ticket_id");
|
|
}
|
|
|
|
|
|
/**
|
|
* loads the object's attributes.
|
|
* loads the object's attributes by giving a ticket_id, it will put the matching group_id and the ticket_id into the attributes.
|
|
* @param $ticket_id the id of the ticket that should be loaded
|
|
*/
|
|
public function load( $ticket_id) {
|
|
$dbl = new DBLayer("lib");
|
|
$statement = $dbl->select("`forwarded`", Array('ticket_id' => $ticket_id), "`Ticket` = :ticket_id");
|
|
$row = $statement->fetch();
|
|
$this->set($row);
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////Getters////////////////////////////////////////////////////
|
|
|
|
/**
|
|
* get group attribute of the object.
|
|
*/
|
|
public function getGroup(){
|
|
return $this->group;
|
|
}
|
|
|
|
/**
|
|
* get ticket attribute of the object.
|
|
*/
|
|
public function getTicket(){
|
|
return $this->ticket;
|
|
}
|
|
|
|
////////////////////////////////////////////Setters////////////////////////////////////////////////////
|
|
|
|
/**
|
|
* set group attribute of the object.
|
|
* @param $g integer id of the group
|
|
*/
|
|
public function setGroup($g){
|
|
$this->group = $g;
|
|
}
|
|
|
|
/**
|
|
* set ticket attribute of the object.
|
|
* @param $t integer id of the ticket
|
|
*/
|
|
public function setTicket($t){
|
|
$this->ticket = $t;
|
|
}
|
|
|
|
|
|
}
|