diff --git a/include/class.list.php b/include/class.list.php index 6f322d35e88b982346f4a28d187abbcaeec27b47..326afa828fe7c96a5a005de687d755fbefde0834 100644 --- a/include/class.list.php +++ b/include/class.list.php @@ -649,30 +649,36 @@ class TicketStatusList extends CustomListHandler { return TicketStatus::objects()->count(); } - function getAllItems($states=array()) { - if ($states) - $items = TicketStatus::objects()->filter( - array('state__in' => $states)) - ->order_by($this->getListOrderBy()); - else - $items = TicketStatus::objects()->order_by($this->getListOrderBy()); + function getAllItems() { + if (!$this->_items) + $this->_items = TicketStatus::objects()->order_by($this->getListOrderBy()); - return $items; + return $this->_items; } - function getItems($criteria) { + function getItems($criteria = array()) { - if (!$this->_items) { - $this->_items = TicketStatus::objects()->filter( - array('flags__hasbit' => TicketStatus::ENABLED)) - ->order_by($this->getListOrderBy()); - if ($criteria['limit']) - $this->_items->limit($criteria['limit']); - if ($criteria['offset']) - $this->_items->offset($criteria['offset']); - } + // Default to only enabled items + if (!isset($criteria['enabled'])) + $criteria['enabled'] = true; - return $this->_items; + $filters = array(); + if ($criteria['enabled']) + $filters['mode__hasbit'] = TicketStatus::ENABLED; + if ($criteria['states'] && is_array($criteria['states'])) + $filters['state__in'] = $criteria['states']; + + $items = TicketStatus::objects(); + if ($filters) + $items->filter($filters); + if ($criteria['limit']) + $items->limit($criteria['limit']); + if ($criteria['offset']) + $items->offset($criteria['offset']); + + $items->order_by($this->getListOrderBy()); + + return $items; } function getItem($val) { @@ -697,12 +703,12 @@ class TicketStatusList extends CustomListHandler { return $item; } - static function getAll($states=array()) { + static function getStatuses($criteria=array()) { $statuses = array(); if (($list = DynamicList::lookup( array('type' => 'ticket-status')))) - $statuses = $list->getAllItems($states); + $statuses = $list->getItems($criteria); return $statuses; } diff --git a/include/staff/filter.inc.php b/include/staff/filter.inc.php index e9a51705a4eb4352b73e0bd92fe91c38781ba527..3bda64e043f56e6106e758ebdcc36988a217e4ce 100644 --- a/include/staff/filter.inc.php +++ b/include/staff/filter.inc.php @@ -258,7 +258,7 @@ $info=Format::htmlchars(($errors && $_POST)?$_POST:$info); <select name="status_id"> <option value="">— <?php echo __('Default'); ?> —</option> <?php - foreach (TicketStatusList::getAll() as $status) { + foreach (TicketStatusList::getStatuses() as $status) { $name = $status->getName(); if (!($isenabled = $status->isEnabled())) $name.=' '.__('(disabled)'); diff --git a/include/staff/helptopic.inc.php b/include/staff/helptopic.inc.php index 0742b32ae7f82b234a66f57e60cb7db50d8031ef..c4190b76c04784287027301aeb6cc094691f17d5 100644 --- a/include/staff/helptopic.inc.php +++ b/include/staff/helptopic.inc.php @@ -138,7 +138,7 @@ if ($info['form_id'] == Topic::FORM_USE_PARENT) echo 'selected="selected"'; <select name="status_id"> <option value="">— <?php echo __('System Default'); ?> —</option> <?php - foreach (TicketStatusList::getAll() as $status) { + foreach (TicketStatusList::getStatuses() as $status) { $name = $status->getName(); if (!($isenabled = $status->isEnabled())) $name.=' '.__('(disabled)'); diff --git a/include/staff/settings-tickets.inc.php b/include/staff/settings-tickets.inc.php index e2a46f46717bd6be28553143edd07e987270ef80..b8526ed0c5a03c2cab1b2ed0c82f39af25601c15 100644 --- a/include/staff/settings-tickets.inc.php +++ b/include/staff/settings-tickets.inc.php @@ -61,7 +61,8 @@ if(!($maxfileuploads=ini_get('max_file_uploads'))) <span> <select name="default_ticket_status_id"> <?php - foreach (TicketStatusList::getAll(array('open')) as $status) { + $criteria = array('states' => array('open')); + foreach (TicketStatusList::getStatuses($criteria) as $status) { $name = $status->getName(); if (!($isenabled = $status->isEnabled())) $name.=' '.__('(disabled)'); diff --git a/include/staff/ticket-view.inc.php b/include/staff/ticket-view.inc.php index c1e15703866132c3197a8413cd385fa3585b77d0..07c57c2678658728f7568bfcee663d0ed4a17d8a 100644 --- a/include/staff/ticket-view.inc.php +++ b/include/staff/ticket-view.inc.php @@ -623,7 +623,8 @@ $tcount+= $ticket->getNumNotes(); $states = array_merge($states, array('closed', 'archived')); - foreach (TicketStatusList::getAll($states) as $s) { + foreach (TicketStatusList::getStatuses( + array('states' => $states)) as $s) { if (!$s->isEnabled()) continue; echo sprintf('<option value="%d" %s>%s</option>', $s->getId(), @@ -713,7 +714,8 @@ $tcount+= $ticket->getNumNotes(); if ($thisstaff->canCloseTickets()) $states = array_merge($states, array('closed', 'archived')); - foreach (TicketStatusList::getAll($states) as $s) { + foreach (TicketStatusList::getStatuses( + array('states' => $states)) as $s) { if (!$s->isEnabled()) continue; $selected = $statusId == $s->getID(); echo sprintf('<option value="%d" %s>%s%s</option>',