diff --git a/include/ajax.tickets.php b/include/ajax.tickets.php index 23c978a93e608833839f6a80fd0176a1d83124b8..708bb6dbdc88b3f6adadba7205cc60efb5da8b4c 100644 --- a/include/ajax.tickets.php +++ b/include/ajax.tickets.php @@ -176,15 +176,15 @@ class TicketsAjaxAPI extends AjaxController { if($req['staffId'] && !$req['status']) //Assigned TO + Closed By $where.= ' OR (ticket.staff_id='.db_input($req['staffId']). - ' AND status.state IN("resolved", "closed")) '; + ' AND status.state IN("closed")) '; elseif($req['staffId']) // closed by any - $where.= ' OR status.state IN("resolved", "closed") '; + $where.= ' OR status.state IN("closed") '; $where.= ' ) '; } elseif($req['staffId']) { # closed-by $where.=' AND (ticket.staff_id='.db_input($req['staffId']).' AND - status.state IN("resolved", "closed")) '; - $criteria['state__in'] = array('resolved','closed'); + status.state IN("closed")) '; + $criteria['state__in'] = array('closed'); $criteria['staff_id'] = $req['staffId']; } @@ -721,9 +721,6 @@ class TicketsAjaxAPI extends AjaxController { case 'reopen': $state = 'open'; break; - case 'resolve': - $state = 'resolved'; - break; case 'close': if (!$thisstaff->canCloseTickets()) Http::response(403, 'Access denied'); @@ -772,7 +769,6 @@ class TicketsAjaxAPI extends AjaxController { $errors['err'] = sprintf(__('You do not have permission %s.'), __('to reopen tickets')); break; - case 'resolved': case 'closed': if (!$thisstaff->canCloseTickets()) $errors['err'] = sprintf(__('You do not have permission %s.'), @@ -836,9 +832,6 @@ class TicketsAjaxAPI extends AjaxController { case 'reopen': $state = 'open'; break; - case 'resolve': - $state = 'resolved'; - break; case 'close': if (!$thisstaff->canCloseTickets()) Http::response(403, 'Access denied'); @@ -884,7 +877,6 @@ class TicketsAjaxAPI extends AjaxController { $errors['err'] = sprintf(__('You do not have permission %s.'), __('to reopen tickets')); break; - case 'resolved': case 'closed': if (!$thisstaff->canCloseTickets()) $errors['err'] = sprintf(__('You do not have permission %s.'), diff --git a/include/class.client.php b/include/class.client.php index 7dc764d1c8cfe4b59e083abf270089d26ac781e4..bfcffeaca09f2a1251a0d3ae7fd8125cd5d08e1b 100644 --- a/include/class.client.php +++ b/include/class.client.php @@ -250,17 +250,13 @@ class EndUser extends AuthenticatedUser { if (!($stats=$this->getTicketStats())) return 0; - return $stats['open']+$stats['resolved']+ $stats['closed']; + return $stats['open']+$stats['closed']; } function getNumOpenTickets() { return ($stats=$this->getTicketStats())?$stats['open']:0; } - function getNumResolvedTickets() { - return ($stats=$this->getTicketStats())?$stats['resolved']:0; - } - function getNumClosedTickets() { return ($stats=$this->getTicketStats())?$stats['closed']:0; } @@ -303,14 +299,6 @@ class EndUser extends AuthenticatedUser { . $join . $where - .'UNION SELECT \'resolved\', count( ticket.ticket_id ) AS tickets ' - .'FROM ' . TICKET_TABLE . ' ticket ' - .'INNER JOIN '.TICKET_STATUS_TABLE. ' status - ON (ticket.status_id=status.id - AND status.state=\'resolved\') ' - . $join - . $where - .'UNION SELECT \'closed\', count( ticket.ticket_id ) AS tickets ' .'FROM ' . TICKET_TABLE . ' ticket ' .'INNER JOIN '.TICKET_STATUS_TABLE. ' status diff --git a/include/class.forms.php b/include/class.forms.php index 8965f53eb1eb227494647d33a4738575204ee798..25be7f486280843331615a1bbd6db00df790fdcc 100644 --- a/include/class.forms.php +++ b/include/class.forms.php @@ -1217,10 +1217,6 @@ class TicketStateField extends ChoiceField { 'name' => /* @trans, @context "ticket state name" */ 'Open', 'verb' => /* @trans, @context "ticket state action" */ 'Open' ), - 'resolved' => array( - 'name' => /* @trans, @context "ticket state name" */ 'Resolved', - 'verb' => /* @trans, @context "ticket state action" */ 'Resolve' - ), 'closed' => array( 'name' => /* @trans, @context "ticket state name" */ 'Closed', 'verb' => /* @trans, @context "ticket state action" */ 'Close' diff --git a/include/class.ticket.php b/include/class.ticket.php index e4ccfd0769ece4d7c5d84b6d9705a9f25b9e1f6a..d2b9a6dec7a00053bdc2d5f63d12e109f8ee28bd 100644 --- a/include/class.ticket.php +++ b/include/class.ticket.php @@ -142,10 +142,6 @@ class Ticket { return ($this->getReopenDate()); } - function isResolved() { - return $this->hasState('resolved'); - } - function isClosed() { return $this->hasState('closed'); } @@ -849,7 +845,6 @@ class Ticket { $ecb = null; switch($status->getState()) { - case 'resolved': case 'closed': $sql.=', closed=NOW(), duedate=NULL '; if ($thisstaff) @@ -2281,14 +2276,6 @@ class Ticket { .'WHERE ticket.staff_id = ' . db_input($staff->getId()) . ' ' . $where - .'UNION SELECT \'resolved\', count( ticket.ticket_id ) AS tickets ' - .'FROM ' . TICKET_TABLE . ' ticket ' - .'INNER JOIN '.TICKET_STATUS_TABLE. ' status - ON (ticket.status_id=status.id - AND status.state=\'resolved\') ' - .'WHERE 1 ' - . $where - .'UNION SELECT \'closed\', count( ticket.ticket_id ) AS tickets ' .'FROM ' . TICKET_TABLE . ' ticket ' .'INNER JOIN '.TICKET_STATUS_TABLE. ' status diff --git a/include/client/tickets.inc.php b/include/client/tickets.inc.php index 23de9015af7d85bf9c03a5bd0eb0e81d7f3a3976..c20102e50556ceba1bb7650591dc2cbfdc33e6e8 100644 --- a/include/client/tickets.inc.php +++ b/include/client/tickets.inc.php @@ -68,7 +68,6 @@ $qwhere = sprintf(' WHERE ( ticket.user_id=%d OR collab.user_id=%d )', $states = array( 'open' => 'open', - 'resolved' => 'resolved', 'closed' => 'closed'); if($status && isset($states[$status])){ $qwhere.=' AND status.state='.db_input($states[$status]); @@ -125,21 +124,14 @@ $negorder=$order=='DESC'?'ASC':'DESC'; //Negate the sorting <select name="status"> <option value="">— <?php echo __('Any Status');?> —</option> <option value="open" - <?php echo ($status=='open')?'selected="selected"':'';?>><?php echo _P('ticket-status', 'Open');?> (<?php echo $thisclient->getNumOpenTickets(); ?>)</option> - <?php - if($thisclient->getNumResolvedTickets()) { - ?> - <option value="resolved" - <?php echo ($status=='resolved')?'selected="selected"':'';?>><?php - echo __('Resolved'); ?> (<?php echo $thisclient->getNumResolvedTickets(); ?>)</option> - <?php - } ?> - + <?php echo ($status=='open') ? 'selected="selected"' : '';?>> + <?php echo _P('ticket-status', 'Open');?> (<?php echo $thisclient->getNumOpenTickets(); ?>)</option> <?php if($thisclient->getNumClosedTickets()) { ?> <option value="closed" - <?php echo ($status=='closed')?'selected="selected"':'';?>><?php echo __('Closed');?> (<?php echo $thisclient->getNumClosedTickets(); ?>)</option> + <?php echo ($status=='closed') ? 'selected="selected"' : '';?>> + <?php echo __('Closed');?> (<?php echo $thisclient->getNumClosedTickets(); ?>)</option> <?php } ?> </select> diff --git a/include/i18n/en_US/ticket_status.yaml b/include/i18n/en_US/ticket_status.yaml index 836deb2a5a83c7911c389927e6df5ecb72df9546..d19b4c0d7fc8b652fb27c98962640586b36e22ab 100644 --- a/include/i18n/en_US/ticket_status.yaml +++ b/include/i18n/en_US/ticket_status.yaml @@ -5,7 +5,7 @@ # id - (int:optional) id number in the database # name - (string) descriptive name of the status # state - (string) Main status of a ticket -# (open, resolved, closed, archived, deleted) +# (open, closed, archived, deleted) # mode - (bit) access mask (1 - enabled, 2 - internal) # flags - (bit) flags that can be set on a ticket # properties: @@ -23,42 +23,31 @@ Open tickets. - id: 2 - name: Resolved - state: resolved - mode: 3 - sort: 2 - flags: 0 - properties: - description: > - Resolved tickets are closed tickets that can be reopened by the end user. This might be useful - when a trigger is used to close resolved tickets with notice sent to end user. - -- id: 3 name: Closed state: closed mode: 3 - sort: 3 + sort: 2 flags: 0 properties: description: > - Tickets marked as closed cannot be reopened by the end user. Tickets will still be accessible on client and staff panels. + Closed tickets. Tickets will still be accessible on client and staff panels. -- id: 4 +- id: 3 name: Archived state: archived mode: 3 - sort: 4 + sort: 3 flags: 0 properties: description: > Tickets only adminstratively available but no longer accessible on - ticket queues. + ticket queues and client panel. -- id: 5 +- id: 4 name: Deleted state: deleted mode: 3 - sort: 5 + sort: 4 flags: 0 properties: description: > diff --git a/include/staff/templates/status-options.tmpl.php b/include/staff/templates/status-options.tmpl.php index a0047553c67e01a6c283317b0e030e41f2ffef68..78372ed09195a50376f55cd34696db6c43af91a6 100644 --- a/include/staff/templates/status-options.tmpl.php +++ b/include/staff/templates/status-options.tmpl.php @@ -3,13 +3,8 @@ global $thisstaff, $ticket; // Map states to actions $actions= array( 'closed' => array( - 'icon' => 'icon-repeat', - 'action' => 'close', - 'href' => 'tickets.php' - ), - 'resolved' => array( 'icon' => 'icon-ok-circle', - 'action' => 'resolve', + 'action' => 'close', 'href' => 'tickets.php' ), 'open' => array( @@ -34,8 +29,7 @@ $actions= array( <?php $states = array('open'); if ($thisstaff->canCloseTickets()) - $states = array_merge($states, - array('resolved', 'closed')); + $states = array_merge($states, array('closed')); $statusId = $ticket ? $ticket->getStatusId() : 0; foreach (TicketStatusList::getStatuses( diff --git a/include/staff/ticket-open.inc.php b/include/staff/ticket-open.inc.php index d677070ed7588a759d75e0fb248ea1412f5e4a10..5ca5cb5436b480e319d5c2b93a522ad036735249 100644 --- a/include/staff/ticket-open.inc.php +++ b/include/staff/ticket-open.inc.php @@ -317,7 +317,7 @@ print $response_form->getField('attachments')->render(); $statusId = $info['statusId'] ?: $cfg->getDefaultTicketStatusId(); $states = array('open'); if ($thisstaff->canCloseTickets()) - $states = array_merge($states, array('resolved', 'closed')); + $states = array_merge($states, array('closed')); foreach (TicketStatusList::getStatuses( array('states' => $states)) as $s) { if (!$s->isEnabled()) continue; diff --git a/include/staff/ticket-view.inc.php b/include/staff/ticket-view.inc.php index 1b137738fec15f6baab1e27682c3c6ca49517301..ffaaa8a120b2292720b6bdba85ce95059fa634a3 100644 --- a/include/staff/ticket-view.inc.php +++ b/include/staff/ticket-view.inc.php @@ -201,13 +201,6 @@ if($ticket->isOverdue()) echo sprintf('<li><a href="tickets.php?a=search&status=open&uid=%s"><i class="icon-folder-open-alt icon-fixed-width"></i> %s</a></li>', $user->getId(), sprintf(_N('%d Open Ticket', '%d Open Tickets', $open), $open)); - if(($resolved=$user->getNumResolvedTickets())) - echo sprintf('<li><a href="tickets.php?a=search&status=resolved&uid=%d"><i - class="icon-folder-close-alt icon-fixed-width"></i> %s</a></li>', - $user->getId(), sprintf(_N('%d Resolved Ticket', '%d Resolved Tickets', $resolved), $resolved)); - - - if(($closed=$user->getNumClosedTickets())) echo sprintf('<li><a href="tickets.php?a=search&status=closed&uid=%d"><i class="icon-folder-close-alt icon-fixed-width"></i> %s</a></li>', @@ -606,7 +599,7 @@ print $response_form->getField('attachments')->render(); $statusId = $info['reply_status_id'] ?: $ticket->getStatusId(); $states = array('open'); if ($thisstaff->canCloseTickets()) - $states = array_merge($states, array('resolved', 'closed')); + $states = array_merge($states, array('closed')); foreach (TicketStatusList::getStatuses( array('states' => $states)) as $s) { @@ -687,7 +680,7 @@ print $note_form->getField('attachments')->render(); $statusId = $info['note_status_id'] ?: $ticket->getStatusId(); $states = array('open'); if ($thisstaff->canCloseTickets()) - $states = array_merge($states, array('resolved', 'closed')); + $states = array_merge($states, array('closed')); foreach (TicketStatusList::getStatuses( array('states' => $states)) as $s) { if (!$s->isEnabled()) continue; diff --git a/include/staff/tickets.inc.php b/include/staff/tickets.inc.php index a5ad1dcdda5758228392cd5c45c2652406f48bf8..3b716905e3a12150365c39da98d19458daa2e23c 100644 --- a/include/staff/tickets.inc.php +++ b/include/staff/tickets.inc.php @@ -35,10 +35,6 @@ switch(strtolower($_REQUEST['status'])){ //Status is overloaded $results_type=__('Closed Tickets'); $showassigned=true; //closed by. break; - case 'resolved': - $status='resolved'; - $showassigned=true; - break; case 'overdue': $status='open'; $showoverdue=true; @@ -84,7 +80,6 @@ $qwhere .= ' )'; //STATUS to states $states = array( 'open' => array('open'), - 'resolved' => array('resolved'), 'closed' => array('closed')); if($status && isset($states[$status])) { @@ -552,8 +547,7 @@ if ($results) { <option value="">— <?php echo __('Any Status');?> —</option> <?php foreach (TicketStatusList::getStatuses( - array('states' => - array('open', 'resolved', 'closed'))) as $s) { + array('states' => array('open', 'closed'))) as $s) { echo sprintf('<option data-state="%s" value="%d">%s</option>', $s->getState(), $s->getId(), __($s->getName())); } diff --git a/include/upgrader/streams/core/03ff59bf-519d98cd.cleanup.sql b/include/upgrader/streams/core/03ff59bf-519d98cd.cleanup.sql index 2f39fa0f280d2115eaf47988711ba235b9e20d1f..66bc02c564fc09a580cddd5a7f93dacacbf529ec 100644 --- a/include/upgrader/streams/core/03ff59bf-519d98cd.cleanup.sql +++ b/include/upgrader/streams/core/03ff59bf-519d98cd.cleanup.sql @@ -1,2 +1,7 @@ DELETE FROM `%TABLE_PREFIX%config` WHERE `key` = 'properties' AND `namespace` LIKE 'TS.%'; + +DELETE FROM `%TABLE_PREFIX%ticket_status` + WHERE `state` = 'resolved'; + +OPTIMIZE TABLE `%TABLE_PREFIX%ticket_status`; diff --git a/include/upgrader/streams/core/03ff59bf-519d98cd.patch.sql b/include/upgrader/streams/core/03ff59bf-519d98cd.patch.sql index 57e823f6d72cecc5ba2e4b3547d5a1d8b58f9b22..2e00737d85eb832e93a4cf9cf304afe152a758c4 100644 --- a/include/upgrader/streams/core/03ff59bf-519d98cd.patch.sql +++ b/include/upgrader/streams/core/03ff59bf-519d98cd.patch.sql @@ -7,6 +7,16 @@ * */ +-- Move tickets in resolved state to the default closed status +SET @statusId = ( + SELECT id FROM `%TABLE_PREFIX%ticket_status` + WHERE `state` = 'closed' ORDER BY id ASC LIMIT 1); + +UPDATE `%TABLE_PREFIX%ticket` t1 + LEFT JOIN `%TABLE_PREFIX%ticket_status` t2 + ON ( t2.id = t1.status_id AND t2.state="resolved") + SET t1.status_id = @statusId; + -- add properties field ALTER TABLE `%TABLE_PREFIX%ticket_status` ADD `properties` TEXT NOT NULL AFTER `sort`, diff --git a/scp/js/scp.js b/scp/js/scp.js index aa446f00ac243208b7510f3f0d2d3ea6cbc39a41..d1493f59036b5e762cdf3ccfefa02e96c35e573b 100644 --- a/scp/js/scp.js +++ b/scp/js/scp.js @@ -372,7 +372,6 @@ var scp_prep = function() { $('select#staffId').removeAttr('disabled'); break; case 'open': - case 'resolved': $('select#staffId') .attr('disabled','disabled') .find('option:first') diff --git a/scp/tickets.php b/scp/tickets.php index 4d6e5c1a5fc7b9ebda27c6d12e94c5f3143832d3..9ff8bb455d847841b947eee3b515765b82f42e4b 100644 --- a/scp/tickets.php +++ b/scp/tickets.php @@ -426,13 +426,6 @@ if($thisstaff->showAssignedOnly() && $stats['closed']) { ($_REQUEST['status']=='closed')); } else { - if ($stats['resolved']) - $nav->addSubMenu(array('desc' => __('Resolved').' ('.number_format($stats['resolved']).')', - 'title'=>__('Resolved Tickets'), - 'href'=>'tickets.php?status=resolved', - 'iconclass'=>'closedTickets'), - ($_REQUEST['status']=='resolved')); - $nav->addSubMenu(array('desc' => __('Closed').' ('.number_format($stats['closed']).')', 'title'=>__('Closed Tickets'), 'href'=>'tickets.php?status=closed',