refactor queue's part 1
--HG-- branch : quitta-gsoc-2013
This commit is contained in:
parent
91e758c1ee
commit
ef05fdda7c
5 changed files with 98 additions and 123 deletions
|
@ -7,7 +7,7 @@ class Pagination{
|
||||||
private $current;
|
private $current;
|
||||||
private $amountOfRows;
|
private $amountOfRows;
|
||||||
|
|
||||||
function __construct($query,$db,$nrDisplayed,$resultClass) {
|
function __construct($query, $db, $nrDisplayed, $resultClass, $params = array()) {
|
||||||
if (!(isset($_GET['pagenum']))){
|
if (!(isset($_GET['pagenum']))){
|
||||||
$this->current= 1;
|
$this->current= 1;
|
||||||
}else{
|
}else{
|
||||||
|
@ -16,7 +16,7 @@ class Pagination{
|
||||||
|
|
||||||
//Here we count the number of results
|
//Here we count the number of results
|
||||||
$db = new DBLayer($db);
|
$db = new DBLayer($db);
|
||||||
$rows = $db->executeWithoutParams($query)->rowCount();
|
$rows = $db->execute($query, $params)->rowCount();
|
||||||
$this->amountOfRows = $rows;
|
$this->amountOfRows = $rows;
|
||||||
//the array hat will contain all users
|
//the array hat will contain all users
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ class Pagination{
|
||||||
$max = 'limit ' .($this->current- 1) * $page_rows .',' .$page_rows;
|
$max = 'limit ' .($this->current- 1) * $page_rows .',' .$page_rows;
|
||||||
|
|
||||||
//This is your query again, the same one... the only difference is we add $max into it
|
//This is your query again, the same one... the only difference is we add $max into it
|
||||||
$data = $db->executeWithoutParams($query . " " . $max);
|
$data = $db->execute($query . " " . $max, $params);
|
||||||
|
|
||||||
$this->element_array = Array();
|
$this->element_array = Array();
|
||||||
//This is where we put the results in a resultArray to be sent to smarty
|
//This is where we put the results in a resultArray to be sent to smarty
|
||||||
|
|
|
@ -213,13 +213,14 @@ class Ticket{
|
||||||
|
|
||||||
|
|
||||||
//Set ticket object
|
//Set ticket object
|
||||||
public function set($t,$s,$q,$t_c,$a,$p){
|
public function set($values){
|
||||||
$this->title = $t;
|
$this->tId = $values['TId'];
|
||||||
$this->status = $s;
|
$this->title = $values['Title'];
|
||||||
$this->queue = $q;
|
$this->status = $values['Status'];
|
||||||
$this->ticket_category = $t_c;
|
$this->queue = $values['Queue'];
|
||||||
$this->author = $a;
|
$this->ticket_category = $values['Ticket_Category'];
|
||||||
$this->priority = $p;
|
$this->author = $values['Author'];
|
||||||
|
$this->priority = $values['Priority'];
|
||||||
}
|
}
|
||||||
|
|
||||||
//create ticket by writing private data to DB.
|
//create ticket by writing private data to DB.
|
||||||
|
|
|
@ -1,34 +1,42 @@
|
||||||
<?php
|
<?php
|
||||||
class Ticket_Queue{
|
class Ticket_Queue{
|
||||||
|
|
||||||
protected $queueElements;
|
private $query;
|
||||||
|
private $params;
|
||||||
|
|
||||||
public function loadAllNotAssignedTickets(){
|
public function loadAllNotAssignedTickets(){
|
||||||
$dbl = new DBLayer("lib");
|
$this->query = "SELECT ticket . * FROM ticket LEFT JOIN assigned ON ticket.TId = assigned.Ticket WHERE assigned.Ticket IS NULL";
|
||||||
$statement = $dbl->executeWithoutParams("SELECT ticket . * FROM ticket LEFT JOIN assigned ON ticket.TId = assigned.Ticket WHERE assigned.Ticket IS NULL");
|
$this->params = array();
|
||||||
$rows = $statement->fetchAll();
|
|
||||||
$this->setQueue($rows);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function loadAllTickets(){
|
public function loadAllTickets(){
|
||||||
$dbl = new DBLayer("lib");
|
$this->query = "SELECT * FROM `ticket`";
|
||||||
$statement = $dbl->executeWithoutParams("SELECT * FROM `ticket`");
|
$this->params = array();
|
||||||
$rows = $statement->fetchAll();
|
|
||||||
$this->setQueue($rows);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function loadAllOpenTickets(){
|
public function loadAllOpenTickets(){
|
||||||
$dbl = new DBLayer("lib");
|
$this->query = "SELECT * FROM ticket INNER JOIN ticket_user ON ticket.Author = ticket_user.TUserId and ticket.Status!=3";
|
||||||
$statement = $dbl->executeWithoutParams("SELECT * FROM ticket INNER JOIN ticket_user ON ticket.Author = ticket_user.TUserId and ticket.Status!=3");
|
$this->params = array();
|
||||||
$rows = $statement->fetchAll();
|
|
||||||
$this->setQueue($rows);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function loadAllClosedTickets(){
|
public function loadAllClosedTickets(){
|
||||||
$dbl = new DBLayer("lib");
|
$this->query = "SELECT * FROM ticket INNER JOIN ticket_user ON ticket.Author = ticket_user.TUserId and ticket.Status=3";
|
||||||
$statement = $dbl->executeWithoutParams("SELECT * FROM ticket INNER JOIN ticket_user ON ticket.Author = ticket_user.TUserId and ticket.Status=3");
|
$this->params = array();
|
||||||
$rows = $statement->fetchAll();
|
}
|
||||||
$this->setQueue($rows);
|
|
||||||
|
public function loadToDoTickets($user_id){
|
||||||
|
|
||||||
|
//first: find the tickets assigned to the user with status = waiting on support
|
||||||
|
//second find all not assigned tickets that aren't forwarded yet.
|
||||||
|
//find all tickets assigned to someone else witht status waiting on support, with timestamp of last reply > 1 day
|
||||||
|
//find all non-assigned tickets forwarded to the support groups to which that user belongs
|
||||||
|
$this->query = "SELECT * FROM `ticket` t LEFT JOIN `assigned` a ON t.TId = a.Ticket LEFT JOIN `ticket_user` tu ON tu.TUserId = a.User LEFT JOIN `forwarded` f ON t.TId = f.Ticket
|
||||||
|
WHERE (tu.ExternId = :user_id AND t.Status = 1)
|
||||||
|
OR (a.Ticket IS NULL AND f.Group IS NULL)
|
||||||
|
OR (tu.ExternId != :user_id AND t.Status = 1 AND (SELECT ticket_reply.Timestamp FROM `ticket_reply` WHERE Ticket =t.TId ORDER BY TReplyId DESC LIMIT 1) < NOW() - INTERVAL 1 DAY )
|
||||||
|
OR (a.Ticket IS NULL AND EXISTS (SELECT * FROM `in_support_group` isg JOIN `ticket_user` tu2 ON isg.User = tu2.TUserId WHERE isg.Group = f.Group))
|
||||||
|
";
|
||||||
|
$this->params = array('user_id' => $user_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function createQueue($userid, $groupid, $what, $how, $who){
|
public function createQueue($userid, $groupid, $what, $how, $who){
|
||||||
|
@ -73,64 +81,11 @@ class Ticket_Queue{
|
||||||
$this->setQueue($rows);
|
$this->setQueue($rows);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function loadToDoTickets($user_id){
|
public function getQuery(){
|
||||||
|
return $this->query;
|
||||||
$dbl = new DBLayer("lib");
|
|
||||||
//first: find the tickets assigned to the user with status = waiting on support
|
|
||||||
//second find all not assigned tickets that aren't forwarded yet.
|
|
||||||
//find all tickets assigned to someone else witht status waiting on support, with timestamp of last reply > 1 day
|
|
||||||
//find all non-assigned tickets forwarded to the support groups to which that user belongs
|
|
||||||
$query = "SELECT * FROM `ticket` t LEFT JOIN `assigned` a ON t.TId = a.Ticket LEFT JOIN `ticket_user` tu ON tu.TUserId = a.User LEFT JOIN `forwarded` f ON t.TId = f.Ticket
|
|
||||||
WHERE (tu.ExternId = :user_id AND t.Status = 1)
|
|
||||||
OR (a.Ticket IS NULL AND f.Group IS NULL)
|
|
||||||
OR (tu.ExternId != :user_id AND t.Status = 1 AND (SELECT ticket_reply.Timestamp FROM `ticket_reply` WHERE Ticket =t.TId ORDER BY TReplyId DESC LIMIT 1) < NOW() - INTERVAL 1 DAY )
|
|
||||||
OR (a.Ticket IS NULL AND EXISTS (SELECT * FROM `in_support_group` isg JOIN `ticket_user` tu2 ON isg.User = tu2.TUserId WHERE isg.Group = f.Group))
|
|
||||||
";
|
|
||||||
$values = array('user_id' => $user_id);
|
|
||||||
$statement = $dbl->execute($query,$values);
|
|
||||||
$rows = $statement->fetchAll();
|
|
||||||
$this->setQueue($rows);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getParams(){
|
||||||
|
return $this->params;
|
||||||
public function getTickets(){
|
|
||||||
return $this->queueElements;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function setQueue($rows){
|
|
||||||
|
|
||||||
$result = Array();
|
|
||||||
foreach($rows as $ticket){
|
|
||||||
$instance = new Ticket();
|
|
||||||
$instance->setTId($ticket['TId']);
|
|
||||||
$instance->setTimestamp($ticket['Timestamp']);
|
|
||||||
$instance->setTitle($ticket['Title']);
|
|
||||||
$instance->setStatus($ticket['Status']);
|
|
||||||
$instance->setQueue($ticket['Queue']);
|
|
||||||
|
|
||||||
$catInstance = new Ticket_Category();
|
|
||||||
$catInstance->load_With_TCategoryId($ticket['Ticket_Category']);
|
|
||||||
$instance->setTicket_Category($catInstance);
|
|
||||||
|
|
||||||
$userInstance = new Ticket_User();
|
|
||||||
$userInstance->load_With_TUserId($ticket['Author']);
|
|
||||||
$instance->setAuthor($userInstance);
|
|
||||||
|
|
||||||
$result[] = $instance;
|
|
||||||
}
|
|
||||||
$this->queueElements = $result;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -2,11 +2,12 @@
|
||||||
|
|
||||||
class Ticket_Queue_Handler{
|
class Ticket_Queue_Handler{
|
||||||
|
|
||||||
public static function getTickets($input, $user_id){
|
private $pagination;
|
||||||
|
|
||||||
|
public function getTickets($input, $user_id){
|
||||||
|
|
||||||
$queue = new Ticket_Queue();
|
$queue = new Ticket_Queue();
|
||||||
|
|
||||||
|
|
||||||
switch ($input){
|
switch ($input){
|
||||||
case "all":
|
case "all":
|
||||||
$queue->loadAllTickets();
|
$queue->loadAllTickets();
|
||||||
|
@ -26,8 +27,20 @@ class Ticket_Queue_Handler{
|
||||||
default:
|
default:
|
||||||
return "ERROR";
|
return "ERROR";
|
||||||
}
|
}
|
||||||
|
$this->pagination = new Pagination($queue->getQuery(),"lib",10,"Ticket",$queue->getParams());
|
||||||
|
foreach( $this->pagination->getElements() as $element ){
|
||||||
|
$catInstance = new Ticket_Category();
|
||||||
|
$catInstance->load_With_TCategoryId($element->getTicket_Category());
|
||||||
|
$element->setTicket_Category($catInstance);
|
||||||
|
|
||||||
|
$userInstance = new Ticket_User();
|
||||||
|
$userInstance->load_With_TUserId($element->getAuthor());
|
||||||
|
$element->setAuthor($userInstance);
|
||||||
|
}
|
||||||
|
return $this->pagination->getElements();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return $queue->getTickets();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function CreateQueue($userid, $groupid, $what, $how, $who){
|
public static function CreateQueue($userid, $groupid, $what, $how, $who){
|
||||||
|
|
|
@ -6,16 +6,14 @@ function show_queue(){
|
||||||
if(WebUsers::isLoggedIn() && isset($_GET['get'])){
|
if(WebUsers::isLoggedIn() && isset($_GET['get'])){
|
||||||
|
|
||||||
if( Ticket_User::isMod($_SESSION['ticket_user'])){
|
if( Ticket_User::isMod($_SESSION['ticket_user'])){
|
||||||
|
|
||||||
|
//the default queue you want to see.
|
||||||
$result['queue_view'] = filter_var($_GET['get'], FILTER_SANITIZE_STRING);
|
$result['queue_view'] = filter_var($_GET['get'], FILTER_SANITIZE_STRING);
|
||||||
|
|
||||||
$user_id = $_SESSION['ticket_user']->getTUserId();
|
$user_id = $_SESSION['ticket_user']->getTUserId();
|
||||||
$queueArray = Ticket_Queue_Handler::getTickets($result['queue_view'], $user_id);
|
$queueArray = array();
|
||||||
|
$queue_handler = new Ticket_Queue_handler();
|
||||||
//if queue_view is a valid parameter value
|
|
||||||
if ($queueArray != "ERROR"){
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//if an action is set
|
||||||
if(isset($_POST['action'])){
|
if(isset($_POST['action'])){
|
||||||
switch($_POST['action']){
|
switch($_POST['action']){
|
||||||
case "assignTicket":
|
case "assignTicket":
|
||||||
|
@ -34,7 +32,7 @@ function show_queue(){
|
||||||
$what = filter_var($_POST['what'], FILTER_SANITIZE_STRING);
|
$what = filter_var($_POST['what'], FILTER_SANITIZE_STRING);
|
||||||
$how = filter_var($_POST['how'], FILTER_SANITIZE_STRING);
|
$how = filter_var($_POST['how'], FILTER_SANITIZE_STRING);
|
||||||
$who = filter_var($_POST['who'], FILTER_SANITIZE_STRING);
|
$who = filter_var($_POST['who'], FILTER_SANITIZE_STRING);
|
||||||
$result['ACTION_RESULT'] = Ticket_Queue_Handler::CreateQueue($userid, $groupid, $what, $how, $who);
|
$result['ACTION_RESULT'] = $queue_handler->CreateQueue($userid, $groupid, $what, $how, $who);
|
||||||
if ($result['ACTION_RESULT'] != "ERROR"){
|
if ($result['ACTION_RESULT'] != "ERROR"){
|
||||||
$queueArray = $result['ACTION_RESULT'];
|
$queueArray = $result['ACTION_RESULT'];
|
||||||
}
|
}
|
||||||
|
@ -43,6 +41,14 @@ function show_queue(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//if we didn't make a queue ourselves, then use the one specified by the get param
|
||||||
|
if( ! (isset($_POST['action']) && $_POST['action'] == "create_queue") ){
|
||||||
|
$queueArray = $queue_handler->getTickets($result['queue_view'], $user_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
//if queue_view is a valid parameter value
|
||||||
|
if ($queueArray != "ERROR"){
|
||||||
|
|
||||||
$result['tickets'] = Gui_Elements::make_table($queueArray, Array("getTId","getTitle","getTimestamp","getAuthor()->getExternId","getTicket_Category()->getName","getStatus","getStatusText","getAssigned","getForwardedGroupName","getForwardedGroupId"), Array("tId","title","timestamp","authorExtern","category","status","statusText","assigned","forwardedGroupName","forwardedGroupId"));
|
$result['tickets'] = Gui_Elements::make_table($queueArray, Array("getTId","getTitle","getTimestamp","getAuthor()->getExternId","getTicket_Category()->getName","getStatus","getStatusText","getAssigned","getForwardedGroupName","getForwardedGroupId"), Array("tId","title","timestamp","authorExtern","category","status","statusText","assigned","forwardedGroupName","forwardedGroupId"));
|
||||||
$i = 0;
|
$i = 0;
|
||||||
foreach( $result['tickets'] as $ticket){
|
foreach( $result['tickets'] as $ticket){
|
||||||
|
|
Loading…
Reference in a new issue