From ef98afc6b4ee6117f6a8af8bc3fd30480f2f1862 Mon Sep 17 00:00:00 2001
From: Peter Rotich <peter@osticket.com>
Date: Tue, 1 Mar 2016 07:58:49 +0000
Subject: [PATCH] Ticket Source

Unify ticket source and preserve original (e.g Wed) source on ticket edit.
---
 include/class.ticket.php          | 10 ++++++++++
 include/staff/ticket-edit.inc.php | 17 +++++++++++------
 include/staff/ticket-open.inc.php |  4 +++-
 3 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/include/class.ticket.php b/include/class.ticket.php
index a58449fac..b2a225194 100644
--- a/include/class.ticket.php
+++ b/include/class.ticket.php
@@ -145,6 +145,11 @@ class TicketModel extends VerySimpleModel {
             /* @trans */ 'Phone',
             'Email' =>
             /* @trans */ 'Email',
+
+            'Web' =>
+            /* @trans */ 'Web',
+            'API' =>
+            /* @trans */ 'API',
             'Other' =>
             /* @trans */ 'Other',
             );
@@ -2746,6 +2751,11 @@ implements RestrictedAccess, Threadable {
                 $errors['duedate']=__('Due date must be in the future');
         }
 
+        if (isset($vars['source']) // Check ticket source if provided
+                && !array_key_exists($vars['source'], Ticket::getSources()))
+            $errors['source'] = sprintf( __('Invalid source given - %s'),
+                    Format::htmlchars($vars['source']));
+
         // Validate dynamic meta-data
         $forms = DynamicFormEntry::forTicket($this->getId());
         foreach ($forms as $form) {
diff --git a/include/staff/ticket-edit.inc.php b/include/staff/ticket-edit.inc.php
index c79f36d60..37697ea8c 100644
--- a/include/staff/ticket-edit.inc.php
+++ b/include/staff/ticket-edit.inc.php
@@ -70,12 +70,17 @@ if ($_POST)
             </td>
             <td>
                 <select name="source">
-                    <option value="" selected >&mdash; <?php echo __('Select Source');?> &mdash;</option>
-                    <option value="Phone" <?php echo ($info['source']=='Phone')?'selected="selected"':''; ?>><?php echo __('Phone');?></option>
-                    <option value="Email" <?php echo ($info['source']=='Email')?'selected="selected"':''; ?>><?php echo __('Email');?></option>
-                    <option value="Web"   <?php echo ($info['source']=='Web')?'selected="selected"':''; ?>><?php echo __('Web');?></option>
-                    <option value="API"   <?php echo ($info['source']=='API')?'selected="selected"':''; ?>><?php echo __('API');?></option>
-                    <option value="Other" <?php echo ($info['source']=='Other')?'selected="selected"':''; ?>><?php echo __('Other');?></option>
+                    <option value="" selected >&mdash; <?php
+                        echo __('Select Source');?> &mdash;</option>
+                    <?php
+                    $source = $info['source'] ?: 'Phone';
+                    foreach (Ticket::getSources() as $k => $v) {
+                        echo sprintf('<option value="%s" %s>%s</option>',
+                                $k,
+                                ($source == $k ) ? 'selected="selected"' : '',
+                                $v);
+                    }
+                    ?>
                 </select>
                 &nbsp;<font class="error"><b>*</b>&nbsp;<?php echo $errors['source']; ?></font>
             </td>
diff --git a/include/staff/ticket-open.inc.php b/include/staff/ticket-open.inc.php
index b8330a0f5..c7680704f 100644
--- a/include/staff/ticket-open.inc.php
+++ b/include/staff/ticket-open.inc.php
@@ -131,7 +131,9 @@ if ($_POST)
                 <select name="source">
                     <?php
                     $source = $info['source'] ?: 'Phone';
-                    foreach (Ticket::getSources() as $k => $v)
+                    $sources = Ticket::getSources();
+                    unset($sources['Web'], $sources['API']);
+                    foreach ($sources as $k => $v)
                         echo sprintf('<option value="%s" %s>%s</option>',
                                 $k,
                                 ($source == $k ) ? 'selected="selected"' : '',
-- 
GitLab