/**
 * Retrieves keys for all available ticket statuses.
 *
 * @since	1.0
 * @return	arr		$ticket_status	All available ticket statuses
 */
function kbs_get_ticket_status_keys()
{
    $statuses = array_keys(kbs_get_ticket_statuses());
    asort($statuses);
    return array_values($statuses);
}
 /**
  * Set the ticket status and run any status specific changes necessary.
  *
  * @since	1.0
  * @param	str		$status	The status to set the payment to
  * @return	bool	Returns if the status was successfully updated
  */
 public function update_status($status = false)
 {
     if ($old_status === $status) {
         return false;
         // Don't permit status changes that aren't changes
     }
     $do_change = apply_filters('kbs_should_update_ticket_status', true, $this->ID, $status, $old_status);
     $updated = false;
     if ($do_change) {
         do_action('kbs_before_ticket_status_change', $this->ID, $status, $old_status);
         $update_fields = array('ID' => $this->ID, 'post_status' => $status, 'edit_date' => current_time('mysql'));
         $updated = wp_update_post(apply_filters('kbs_update_ticket_status_fields', $update_fields));
         $all_ticket_statuses = kbs_get_ticket_statuses();
         $this->status_nicename = array_key_exists($status, $all_ticket_statuses) ? $all_ticket_statuses[$status] : ucfirst($status);
         // Process any specific status functions
         switch ($status) {
             case 'open':
                 $this->process_open();
                 break;
             case 'hold':
                 $this->process_on_hold();
                 break;
             case 'closed':
                 $this->process_closed();
                 break;
         }
         do_action('kbs_update_ticket_status', $this->ID, $status, $old_status);
     }
     return $updated;
 }