diff --git a/include/class.ticket.php b/include/class.ticket.php index da270ab81c73540c7f01ec1b72ec32674562e96b..d31ceffe2eefb51d779aac68fdfda2c43f5a78b2 100644 --- a/include/class.ticket.php +++ b/include/class.ticket.php @@ -1031,16 +1031,26 @@ class Ticket { db_query('UPDATE '.TICKET_TABLE.' SET isanswered=0,lastmessage=NOW() WHERE ticket_id='.db_input($this->getId())); - //auto-assign to closing staff or last respondent - if(!($staff=$this->getStaff()) || !$staff->isAvailable()) { - if(($lastrep=$this->getLastRespondent()) && $lastrep->isAvailable()) { + // Auto-assign to closing staff or last respondent + // If the ticket is closed and auto-claim is not enabled then put the + // ticket back to unassigned pool. + if ($this->isClosed() && !$cfg->autoClaimTickets()) { + $this->setStaffId(0); + } elseif(!($staff=$this->getStaff()) || !$staff->isAvailable()) { + // Ticket has no assigned staff - if auto-claim is enabled then + // try assigning it to the last respondent (if available) + // otherwise leave the ticket unassigned. + if ($cfg->autoClaimTickets() //Auto claim is enabled. + && ($lastrep=$this->getLastRespondent()) + && $lastrep->isAvailable()) { $this->setStaffId($lastrep->getId()); //direct assignment; } else { $this->setStaffId(0); //unassign - last respondent is not available. } } - if($this->isClosed()) $this->reopen(); //reopen.. + // Reopen if closed. + if($this->isClosed()) $this->reopen(); /********** double check auto-response ************/ if (!($user = $message->getUser()))