function GetTypeLabel($type, &$row) { if ($type == "checkbox") { return JText::_("CHECKBOX"); } if ($type == "text") { return JText::_("TEXT_ENTRY"); } if ($type == "radio") { return JText::_("RADIO_GROUP"); } if ($type == "combo") { return JText::_("COMBO_BOX"); } if ($type == "area") { return JText::_("TEXT_AREA"); } if ($type == "plugin") { $plugin = FSSCF::get_plugin_from_row($row); return JText::_("PLUGIN") . " - " . $plugin->name; } return $type; }
function getCustomFields() { $this->customfields = FSSCF::GetAllCustomFields(true); if (count($this->tickets) == 0) { return; } $db = JFactory::getDBO(); $ids = array(); foreach ($this->tickets as &$ticket) { $ids[] = FSSJ3Helper::getEscaped($db, (int) $ticket->id); } $qry = "SELECT * FROM #__fss_ticket_field WHERE ticket_id IN (" . implode(" , ", $ids) . ")"; $db->setQuery($qry); $rows = $db->loadAssocList(); foreach ($rows as $row) { if (array_key_exists($row['ticket_id'], $this->tickets)) { $this->tickets[$row['ticket_id']]->custom[$row['field_id']] = $row['value']; } } }
static function &ParseTemplate($template, &$ticket, $subject, $body, $ishtml, $foruser = false) { $handler = self::GetHandler($ticket['admin_id'], $template['tmpl']); $custrec = self::GetUser($ticket['user_id']); $subject = trim(str_ireplace("re:", "", $subject)); $vars[] = self::BuildVar('subject', $subject); $body = FSS_Helper::ParseBBCode($body, null, false, false, $foruser); $body = str_replace("<", "XXXLTXXX", $body); $body = str_replace(">", "XXXGTXXX", $body); $vars[] = self::BuildVar('body', $body); $vars[] = self::BuildVar('reference', $ticket['reference']); $vars[] = self::BuildVar('password', $ticket['password']); foreach (self::$extra_vars as $key => $value) { $vars[] = self::BuildVar($key, $value); } if ($ticket['user_id'] == 0) { $vars[] = self::BuildVar('user_name', $ticket['unregname']); $vars[] = self::BuildVar('user_username', JText::_("UNREGISTERED")); $vars[] = self::BuildVar('user_email', $ticket['email']); } else { $vars[] = self::BuildVar('user_name', $custrec['name']); $vars[] = self::BuildVar('user_username', $custrec['username']); $vars[] = self::BuildVar('user_email', $custrec['email']); } $vars[] = self::BuildVar('handler_name', $handler['name']); $vars[] = self::BuildVar('handler_username', $handler['username']); $vars[] = self::BuildVar('handler_email', $handler['email']); $vars[] = self::BuildVar('ticket_id', $ticket['id']); if ($foruser) { $statuss = SupportHelper::getStatuss(false); $status = $statuss[$ticket['ticket_status_id']]; if ($status->combine_with > 0) { $status = $statuss[$status->combine_with]; } FSS_Translate_Helper::TrO($status); $text = $status->title; if ($status->userdisp) { $text = $status->userdisp; } $vars[] = self::BuildVar('status', $text); } else { $vars[] = self::BuildVar('status', self::GetStatus($ticket['ticket_status_id'])); } $vars[] = self::BuildVar('priority', self::GetPriority($ticket['ticket_pri_id'])); $vars[] = self::BuildVar('category', self::GetCategory($ticket['ticket_cat_id'])); $vars[] = self::BuildVar('department', self::GetDepartment($ticket['ticket_dept_id'])); $vars[] = self::BuildVar('department_desc', strip_tags(self::GetDepartment($ticket['ticket_dept_id'], 'description'))); $vars[] = self::BuildVar('department_desc_html', self::GetDepartment($ticket['ticket_dept_id'], 'description')); $vars[] = self::BuildVar('product', self::GetProduct($ticket['prod_id'])); $vars[] = self::BuildVar('product_desc', strip_tags(self::GetProduct($ticket['prod_id'], 'description'))); $vars[] = self::BuildVar('product_desc_html', self::GetProduct($ticket['prod_id'], 'description')); if (strpos($template['body'], "{messagehistory}") > 0) { $messages = self::GetMessageHist($ticket['id']); $text = self::ParseMessageRows($messages, $ishtml, $foruser); $vars[] = self::BuildVar('messagehistory', $text); } $uri = JURI::getInstance(); $baseUrl = FSS_Settings::get('support_email_no_domain') ? "" : $uri->toString(array('scheme', 'host', 'port')); if (in_array(FSS_Settings::get('support_unreg_type'), array(0, 1))) { $vars[] = self::BuildVar('haspassword', 1); } else { $vars[] = self::BuildVar('haspassword', 0); } // choose which user link to generate if ($ticket['user_id'] < 1) { // unregistered user $url = 'index.php?option=com_fss&t=' . $ticket['id'] . "&p=" . $ticket['password']; if (FSS_Settings::get('support_email_link_unreg') > 0) { // add fixed item id if needed $url .= "&Itemid=" . FSS_Settings::get('support_email_link_unreg'); } $vars[] = self::BuildVar('ticket_link', $baseUrl . JRoute::_($url, false)); } else { // registered user $url = 'index.php?option=com_fss&view=ticket&layout=view&ticketid=' . $ticket['id']; if (FSS_Settings::get('support_email_include_autologin')) { $url .= "&login={login_code}"; } if (FSS_Settings::get('support_email_link_reg') > 0) { // add fixed item id if needed $url .= "&Itemid=" . FSS_Settings::get('support_email_link_reg'); } $vars[] = self::BuildVar('ticket_link', $baseUrl . JRoute::_($url, false)); } // ticket admin link $url = 'index.php?option=com_fss&view=admin_support&layout=ticket&ticketid=' . $ticket['id']; if (FSS_Settings::get('support_email_link_admin') > 0) { // add fixed item id if needed $url .= "&Itemid=" . FSS_Settings::get('support_email_link_admin'); } $vars[] = self::BuildVar('admin_link', $baseUrl . JRoute::_($url, false)); // email pending link $url = 'index.php?option=com_fss&view=admin_support&layout=emails'; if (FSS_Settings::get('support_email_link_pending') > 0) { // add fixed item id if needed $url .= "&Itemid=" . FSS_Settings::get('support_email_link_pending'); } $vars[] = self::BuildVar('email_pending_link', $baseUrl . JRoute::_($url, false)); $vars[] = self::BuildVar('websitetitle', FSS_Helper::getSiteName()); // need to add the tickets custom fields to the output here $fields = FSSCF::GetAllCustomFields(true); $values = FSSCF::GetTicketValues($ticket['id'], $ticket); foreach ($fields as $fid => &$field) { $name = "custom_" . $fid; $value = ""; if (array_key_exists($fid, $values)) { $value = (string) $values[$fid]['value']; } $fieldvalues = array(); $fieldvalues[0]['field_id'] = $fid; $fieldvalues[0]['value'] = $value; // only do area output processing if we are in html mode if ($field['type'] != "area" || $ishtml) { $newvalue = FSSCF::FieldOutput($field, $fieldvalues, ''); if ($newvalue) { $value = $newvalue; } } $vars[] = self::BuildVar($name, $value); $vars[] = self::BuildVar("custom_" . $field['alias'], $value); } $email['subject'] = self::ParseText($template['subject'], $vars); $email['body'] = self::ParseText($template['body'], $vars); self::$last_vars = $vars; if ($template['ishtml']) { $email['body'] = FSS_Helper::MaxLineLength($email['body']); } else { $email['body'] = str_replace("<br />", "\n", $email['body']); $email['body'] = html_entity_decode($email['body']); $email['body'] = preg_replace_callback("/(&#[0-9]+;)/", array("FSS_Helper", "email_decode_utf8"), $email['body']); $email['body'] = strip_tags($email['body']); } $email['body'] = str_replace("XXXLTXXX", "<", $email['body']); $email['body'] = str_replace("XXXGTXXX", ">", $email['body']); return $email; }
function DoSaveComment() { $this->post['name'] = FSS_Input::getString('name', ''); $this->post['commentid'] = FSS_Input::getInt('commentid', 0); $this->post['email'] = FSS_Input::getEMail('email', ''); $this->post['website'] = FSS_Input::getURL('website', ''); $this->post['body'] = FSS_Input::getString('body', ''); $db = JFactory::getDBO(); $custom = FSSCF::Comm_StoreFields($this->customfields); $custom = serialize($custom); $qry = "UPDATE {$this->table} SET name = '" . FSSJ3Helper::getEscaped($db, $this->post['name']) . "', email = '" . FSSJ3Helper::getEscaped($db, $this->post['email']) . "', "; $qry .= "website = '" . FSSJ3Helper::getEscaped($db, $this->post['website']) . "', body = '" . FSSJ3Helper::getEscaped($db, $this->post['body']) . "', "; $qry .= "custom = '" . FSSJ3Helper::getEscaped($db, $custom) . "' WHERE id = " . FSSJ3Helper::getEscaped($db, $this->post['commentid']); $db->SetQuery($qry); $db->Query(); $this->DoShowComment(); exit; }
function CanEditField($field) { if (is_array($field) && $field['type'] == "plugin") { $aparams = FSSCF::GetValues($field); $plugin = FSSCF::get_plugin($aparams['plugin']); if (!$plugin->CanEdit()) { return false; } } return true; }
function pluginForm() { $plugin = JRequest::GetVar('plugin', ''); if ($plugin == "") { exit; } $plugin = FSSCF::get_plugin($plugin); echo $plugin->DisplaySettings(null); exit; }
?> <a class='pull-right show_modal_iframe padding-left-small' href="<?php echo FSSRoute::_("&tmpl=component&what=editfield&ticketid=" . $this->ticket['id'] . "&editfield=" . $field['id']); // FIX LINK ?> "> <i class="icon-edit fssTip" title="<?php echo JText::_("EDIT_FIELD"); ?> "></i> </a> <?php } ?> <?php echo FSSCF::FieldOutput($field, $this->fieldvalues, array('ticketid' => $this->ticket['id'], 'userid' => $this->ticket['user_id'], 'ticket' => $this->ticket_obj)); ?> </td> <?php } ?> <?php if ($open) { $mc->End(); } ?> <?php } ?>
private function searchFields(&$wherebits) { // search custom fields that are set to be searched $fields = FSSCF::GetAllCustomFields(true); foreach ($fields as $field) { if (!$field['basicsearch']) { continue; } if (!$field['peruser']) { continue; } $fieldid = $field['id']; $search = FSS_Input::getString('search'); if ($field['type'] == "checkbox") { if ($search == "1") { $search = "on"; } else { $search = ""; } } if ($field['type'] == "plugin") { // try to do a plugin based search $data = array(); foreach ($field['values'] as $item) { list($key, $value) = explode("=", $item, 2); $data[$key] = $value; } if (array_key_exists("plugin", $data)) { $plugins = FSSCF::get_plugins(); if (array_key_exists($data['plugin'], $plugins)) { $po = $plugins[$data['plugin']]; if (method_exists($po, "Search")) { $res = $po->Search($data['plugindata'], $search, true); if ($res !== false) { $wherebits[] = $this->IDsToWhere($res, "id", "user_id") . " /* Per User Plugin - " . $field['id'] . " */"; continue; } } } } } $qry = "SELECT user_id FROM #__fss_ticket_user_field WHERE field_id = '" . FSSJ3Helper::getEscaped($db, $fieldid) . "' AND value LIKE '%" . FSSJ3Helper::getEscaped($db, $search) . "%'"; $db->setQuery($qry); $res = $db->loadObjectList(); $wherebits[] = $this->IDsToWhere($res, "id", "user_id") . " /* Per User CF - " . $field['id'] . " */"; } }
<form action="<?php echo FSSRoute::_("&editfield=tmpl=what=savefield"); // FIX LINK ?> " method="post"> <table class="fss_table" cellpadding="0" cellspacing="0"> <tr> <th style="text-align: center;"><?php echo FSSCF::FieldHeader($this->field, false, false); ?> </th> </tr> <tr> <td><?php echo FSSCF::FieldInput($this->field, $this->errors, "ticket", array('ticketid' => FSS_Input::getInt('ticketid'), 'userid' => $this->ticket['user_id'], 'ticket' => $this->ticket)); ?> </td> </tr> </table> <br /> <input type="hidden" name="what" value="savefield"> <input type="hidden" name="savefield" value="<?php echo (int) $this->field['id']; ?> "> <input class='button' type="submit" value="<?php echo JText::_("SAVE"); ?> " name="store"> <input class='button' type="submit" name="store" value="<?php
function orderSelect() { $categories = array(); $categories[] = JHTML::_('select.option', '', JText::_("ORDERING_HEADER"), 'id', 'title'); $categories[] = JHTML::_('select.option', 'lastupdate.desc', JText::_("LAST_UPDATE"), 'id', 'title'); $categories[] = JHTML::_('select.option', 't.title.asc', JText::_("SUBJECT"), 'id', 'title'); $categories[] = JHTML::_('select.option', 'reference.asc', JText::_("TICKET_REF"), 'id', 'title'); $categories[] = JHTML::_('select.option', 'username.asc', JText::_("USER_NAME"), 'id', 'title'); $categories[] = JHTML::_('select.option', 'useremail.asc', JText::_("EMAIL"), 'id', 'title'); $categories[] = JHTML::_('select.option', 'u.name.asc', JText::_("NAME"), 'id', 'title'); $categories[] = JHTML::_('select.option', 'opened.asc', JText::_("CREATED"), 'id', 'title'); if (FSS_Settings::get('support_hide_handler') != 1) { $categories[] = JHTML::_('select.option', 'handlerusername.asc', JText::_("HANDLER"), 'id', 'title'); } $categories[] = JHTML::_('select.option', 'status.asc', JText::_("STATUS"), 'id', 'title'); if (count($this->products) > 0) { $categories[] = JHTML::_('select.option', 'product.asc', JText::_("PRODUCT"), 'id', 'title'); } if (count($this->departments) > 0) { $categories[] = JHTML::_('select.option', 'department.asc', JText::_("DEPARTMENT"), 'id', 'title'); } if (count($this->categories) > 0 && FSS_Settings::get('support_hide_category') != 1) { $categories[] = JHTML::_('select.option', 'category.asc', JText::_("CATEGORY"), 'id', 'title'); } if (FSS_Settings::get('support_hide_priority') != 1) { $categories[] = JHTML::_('select.option', 'priority.asc', JText::_("PRIORITY"), 'id', 'title'); } foreach (FSSCF::GetAllCustomFields() as $field) { if (!$field['inlist']) { continue; } $categories[] = JHTML::_('select.option', "cf" . $field['id'] . ".value.asc", $field['description'], 'id', 'title'); } $categories[] = JHTML::_('select.option', 'lastupdate.asc', JText::_("LAST_UPDATE") . JText::_("FSS_ORDER_ASC"), 'id', 'title'); $categories[] = JHTML::_('select.option', 't.title.desc', JText::_("SUBJECT") . JText::_("FSS_ORDER_DESC"), 'id', 'title'); $categories[] = JHTML::_('select.option', 'reference.desc', JText::_("TICKET_REF") . JText::_("FSS_ORDER_DESC"), 'id', 'title'); $categories[] = JHTML::_('select.option', 'username.desc', JText::_("USER_NAME") . JText::_("FSS_ORDER_DESC"), 'id', 'title'); $categories[] = JHTML::_('select.option', 'useremail.desc', JText::_("EMAIL") . JText::_("FSS_ORDER_DESC"), 'id', 'title'); $categories[] = JHTML::_('select.option', 'u.name.desc', JText::_("NAME") . JText::_("FSS_ORDER_DESC"), 'id', 'title'); $categories[] = JHTML::_('select.option', 'opened.desc', JText::_("CREATED") . JText::_("FSS_ORDER_DESC"), 'id', 'title'); if (FSS_Settings::get('support_hide_handler') != 1) { $categories[] = JHTML::_('select.option', 'handlerusername.desc', JText::_("HANDLER") . JText::_("FSS_ORDER_DESC"), 'id', 'title'); } $categories[] = JHTML::_('select.option', 'status.desc', JText::_("STATUS") . JText::_("FSS_ORDER_DESC"), 'id', 'title'); if (count($this->products) > 0) { $categories[] = JHTML::_('select.option', 'product.desc', JText::_("PRODUCT") . JText::_("FSS_ORDER_DESC"), 'id', 'title'); } if (count($this->departments) > 0) { $categories[] = JHTML::_('select.option', 'department.desc', JText::_("DEPARTMENT") . JText::_("FSS_ORDER_DESC"), 'id', 'title'); } if (count($this->categories) > 0 && FSS_Settings::get('support_hide_category') != 1) { $categories[] = JHTML::_('select.option', 'category.desc', JText::_("CATEGORY") . JText::_("FSS_ORDER_DESC"), 'id', 'title'); } if (FSS_Settings::get('support_hide_priority') != 1) { $categories[] = JHTML::_('select.option', 'priority.desc', JText::_("PRIORITY") . JText::_("FSS_ORDER_DESC"), 'id', 'title'); } /* Add custom fields in here */ foreach (FSSCF::GetAllCustomFields() as $field) { if (!$field['inlist']) { continue; } $categories[] = JHTML::_('select.option', "cf" . $field['id'] . ".value.desc", $field['description'] . JText::_("FSS_ORDER_DESC"), 'id', 'title'); } return JHTML::_('select.genericlist', $categories, 'ordering', 'id="adminOrdering" class="inputbox input-medium" size="1" onchange="fss_refresh_tickets();"', 'id', 'title', JFactory::getApplication()->getUserStateFromRequest("fss_admin.ordering", "ordering", "")); }
static function FieldOutput(&$field, &$fieldvalues, $context) { $value = ""; if (count($fieldvalues) > 0) { foreach ($fieldvalues as $fieldvalue) { if ($fieldvalue['field_id'] == $field['id']) { $value = $fieldvalue['value']; break; } } } if ($field['type'] == "plugin") { $aparams = FSSCF::GetValues($field); $plugin = FSSCF::get_plugin($aparams['plugin']); $value = $plugin->Display($value, $aparams['plugindata'], $context, $field['id']); } if ($field['type'] == "area") { $value = str_replace("\n", "<br />", $value); } if ($field['type'] == "checkbox") { if ($value == "on") { return "Yes"; } return "No"; } return $value; }
function store($data) { $row = $this->getTable(); if (!$row->bind($data)) { print $this->_db->getErrorMsg(); $this->setError($this->_db->getErrorMsg()); return false; } if (!$row->check()) { $this->setError($this->_db->getErrorMsg()); return false; } if (!$row->store()) { $this->setError($this->_db->getErrorMsg()); return false; } // sort code for all products $db = JFactory::getDBO(); $query = "DELETE FROM #__fss_field_prod WHERE field_id = " . FSSJ3Helper::getEscaped($db, $row->id); $db->setQuery($query); $db->Query(); // store new product ids if (!$row->allprods) { $query = "SELECT * FROM #__fss_prod ORDER BY title"; $db->setQuery($query); $products = $db->loadObjectList(); foreach ($products as $product) { $id = $product->id; $value = JRequest::getVar("prod_" . $product->id); if ($value != "") { $query = "INSERT INTO #__fss_field_prod (field_id, prod_id) VALUES (" . FSSJ3Helper::getEscaped($db, $row->id) . "," . FSSJ3Helper::getEscaped($db, $id) . ")"; $db->setQuery($query); $db->Query(); } } } // sort code for all departments $query = "DELETE FROM #__fss_field_dept WHERE field_id = " . FSSJ3Helper::getEscaped($db, $row->id); $db->setQuery($query); $db->Query(); // store new department ids if (!$row->alldepts) { $query = "SELECT * FROM #__fss_ticket_dept ORDER BY title"; $db->setQuery($query); $products = $db->loadObjectList(); foreach ($products as $product) { $id = $product->id; $value = JRequest::getVar("dept_" . $product->id); if ($value != "") { $query = "INSERT INTO #__fss_field_dept (field_id, ticket_dept_id) VALUES (" . FSSJ3Helper::getEscaped($db, $row->id) . "," . FSSJ3Helper::getEscaped($db, $id) . ")"; $db->setQuery($query); $db->Query(); } } } // sort code for all categories $query = "DELETE FROM #__fss_field_values WHERE field_id = " . FSSJ3Helper::getEscaped($db, $row->id); $db->setQuery($query); $db->Query(); if ($row->type == "text") { $query = "INSERT INTO #__fss_field_values (field_id, value) VALUES (" . FSSJ3Helper::getEscaped($db, $row->id) . ",'text_min=" . FSSJ3Helper::getEscaped($db, JRequest::getInt('text_min', 0)) . "')"; $db->setQuery($query); $db->Query(); $query = "INSERT INTO #__fss_field_values (field_id, value) VALUES (" . FSSJ3Helper::getEscaped($db, $row->id) . ",'text_max=" . FSSJ3Helper::getEscaped($db, JRequest::getInt('text_max', 60)) . "')"; $db->setQuery($query); $db->Query(); $query = "INSERT INTO #__fss_field_values (field_id, value) VALUES (" . FSSJ3Helper::getEscaped($db, $row->id) . ",'text_size=" . FSSJ3Helper::getEscaped($db, JRequest::getInt('text_size', 40)) . "')"; $db->setQuery($query); $db->Query(); } else { if ($row->type == "area") { $query = "INSERT INTO #__fss_field_values (field_id, value) VALUES (" . FSSJ3Helper::getEscaped($db, $row->id) . ",'area_width=" . FSSJ3Helper::getEscaped($db, JRequest::getInt('area_width', 60)) . "')"; $db->setQuery($query); $db->Query(); $query = "INSERT INTO #__fss_field_values (field_id, value) VALUES (" . FSSJ3Helper::getEscaped($db, $row->id) . ",'area_height=" . FSSJ3Helper::getEscaped($db, JRequest::getInt('area_height', 4)) . "')"; $db->setQuery($query); $db->Query(); } else { if ($row->type == "combo") { $values = explode("\n", JRequest::getVar('combo_values', '')); $offset = 0; foreach ($values as $value) { $value = trim($value); if ($value == '') { continue; } $query = "INSERT INTO #__fss_field_values (field_id, value) VALUES (" . FSSJ3Helper::getEscaped($db, $row->id) . ",'" . sprintf("%03d", $offset) . "|" . FSSJ3Helper::getEscaped($db, $value) . "')"; $db->setQuery($query); $db->Query(); $offset++; } } else { if ($row->type == "radio") { $values = explode("\n", JRequest::getVar('radio_values', '')); $offset = 0; foreach ($values as $value) { $value = trim($value); if ($value == '') { continue; } $query = "INSERT INTO #__fss_field_values (field_id, value) VALUES (" . FSSJ3Helper::getEscaped($db, $row->id) . ",'" . sprintf("%03d", $offset) . "|" . FSSJ3Helper::getEscaped($db, $value) . "')"; $db->setQuery($query); $db->Query(); $offset++; } } else { if ($row->type == "plugin") { $plugin = JRequest::getVar("plugin", ""); $data = ""; if ($plugin) { $plo = FSSCF::get_plugin($plugin); $data = $plo->SaveSettings(); } $query = "INSERT INTO #__fss_field_values (field_id, value, data) VALUES (" . FSSJ3Helper::getEscaped($db, $row->id) . ",'plugin=" . FSSJ3Helper::getEscaped($db, $plugin) . "', '" . $db->escape($data) . "')"; $db->setQuery($query); $db->Query(); } } } } } $this->_id = $row->id; $this->_data = $row; return true; }
echo $groups->groupname; ?> </option> <?php } ?> </select> </td> <?php AddAdvancedReset("advanced_group"); ?> <?php } ?> <?php $customfields = FSSCF::GetAllCustomFields(true); foreach ($customfields as $field) { ?> <?php if (!$field['advancedsearch']) { continue; } ?> <?php NextField(); ?> <td><?php echo $field['description']; ?> :</td> <td>
<?php foreach ($this->customfields as $custfield) { ?> <div class="control-group <?php if (FSSCF::HasErrors($custfield, $this->errors)) { echo "error"; } ?> "> <label class="control-label"><?php echo FSSCF::FieldHeader($custfield, true, false); ?> </label> <div class="controls"> <?php echo FSSCF::FieldInput($custfield, $this->errors, 'comments'); ?> </div> </div> <?php } ?> <script> <?php foreach ($this->customfields as $custfield) { ?> <?php if ($custfield['javascript']) { echo $custfield['javascript']; } ?>
function saveTicket() { $name = ""; $db = JFactory::getDBO(); $ok = true; $this->errors['subject'] = ''; $this->errors['body'] = ''; $this->errors['cat'] = ''; if (FSS_Settings::get('support_subject_message_hide') == "subject") { $ticket->subject = substr(strip_tags($ticket->body), 0, 40); } else { if ($ticket->subject == "") { $this->errors['subject'] = JText::_("YOU_MUST_ENTER_A_SUBJECT_FOR_YOUR_SUPPORT_TICKET"); $ok = false; } } if (FSS_Settings::get('support_altcat')) { $cats = $this->get('Cats'); if (count($cats) > 0 && $catid == 0) { $this->errors['cat'] = JText::_("YOU_MUST_SELECT_A_CATEGORY"); $ok = false; } } if ($body == "" && FSS_Settings::get('support_subject_message_hide') != "message") { $this->errors['body'] = JText::_("YOU_MUST_ENTER_A_MESSAGE_FOR_YOUR_SUPPORT_TICKET"); $ok = false; } $fields = FSSCF::GetCustomFields(0, $prodid, $deptid); if (!FSSCF::ValidateFields($fields, $this->errors)) { $ok = false; } $email = ""; $password = ""; $now = FSS_Helper::CurDate(); if ($ok) { /*$admin_id = FSS_Ticket_Helper::AssignHandler($prodid, $deptid, $catid); $now = FSS_Helper::CurDate(); $def_open = FSS_Ticket_Helper::GetStatusID('def_open'); $qry = "INSERT INTO #__fss_ticket_ticket (reference, ticket_status_id, ticket_pri_id, ticket_cat_id, ticket_dept_id, prod_id, title, opened, lastupdate, user_id, admin_id, email, password, unregname, lang) VALUES "; $qry .= "('', $def_open, '".FSSJ3Helper::getEscaped($db, $priid)."', '".FSSJ3Helper::getEscaped($db, $catid)."', '".FSSJ3Helper::getEscaped($db, $deptid)."', '".FSSJ3Helper::getEscaped($db, $prodid)."', '".FSSJ3Helper::getEscaped($db, $subject)."', '{$now}', '{$now}', '".FSSJ3Helper::getEscaped($db, $userid)."', '".FSSJ3Helper::getEscaped($db, $admin_id)."', '{$email}', '".FSSJ3Helper::getEscaped($db, $password)."', '{$name}', '".JFactory::getLanguage()->getTag()."')"; $db->setQuery($qry);$db->Query(); $this->ticketid = $db->insertid(); $ref = FSS_Ticket_Helper::createRef($this->ticketid); $qry = "UPDATE #__fss_ticket_ticket SET reference = '".FSSJ3Helper::getEscaped($db, $ref)."' WHERE id = '" . FSSJ3Helper::getEscaped($db, $this->ticketid) . "'"; $db->setQuery($qry);$db->Query(); $qry = "INSERT INTO #__fss_ticket_messages (ticket_ticket_id, subject, body, user_id, posted) VALUES ('"; $qry .= FSSJ3Helper::getEscaped($db, $this->ticketid) . "','".FSSJ3Helper::getEscaped($db, $subject)."','".FSSJ3Helper::getEscaped($db, $body)."','".FSSJ3Helper::getEscaped($db, $userid)."','{$now}')"; $db->setQuery($qry);$db->Query(); $messageid = $db->insertid(); FSSCF::StoreFields($fields,$this->ticketid); $files = array(); // save any uploaded file for ($i = 1; $i < 10; $i++) { $file = JRequest::getVar('filedata_' . $i, '', 'FILES', 'array'); if (array_key_exists('error',$file) && $file['error'] == 0 && $file['name'] != '') { $destpath = JPATH_COMPONENT_SITE.DS.'files'.DS.'support'.DS; $destname = md5(mt_rand(0,999999).'-'.$file['name']); while (JFile::exists($destpath . $destname)) { $destname = md5(mt_rand(0,999999).'-'.$file['name']); } if (JFile::upload($file['tmp_name'], $destpath . $destname)) { $qry = "INSERT INTO #__fss_ticket_attach (ticket_ticket_id, filename, diskfile, size, user_id, added, message_id) VALUES ('"; $qry .= FSSJ3Helper::getEscaped($db, $this->ticketid) . "',"; $qry .= "'" . FSSJ3Helper::getEscaped($db, $file['name']) . "',"; $qry .= "'" . FSSJ3Helper::getEscaped($db, $destname) . "',"; $qry .= "'" . $file['size'] . "',"; $qry .= "'" . FSSJ3Helper::getEscaped($db, $userid) . "',"; $qry .= "'{$now}', $messageid )"; $file_obj = new stdClass(); $file_obj->filename = $file['name']; $file_obj->diskfile = $destname; $file_obj->size = $file['size']; $files[] = $file_obj; $db->setQuery($qry);$db->Query(); } else { // ERROR : File cannot be uploaded! try permissions } } } $t = new SupportTicket(); $t->load($this->ticketid, true); $subject = JRequest::getVar('subject','','','string'); $body = JRequest::getVar('body','','','string', JREQUEST_ALLOWRAW); $action_name = "User_Open"; $action_params = array('subject' => $subject, 'user_message' => $body, 'files' => $files); SupportActions::DoAction($action_name, $t, $action_params);*/ } $this->errors = $errors; $this->ticket = $ticket; return $ok; }
static function core(&$parser, $ticket, $custom_fields = null) { if ($ticket) { $parser->SetVar('ref', $ticket->reference); $parser->SetVar("status", "<span style='color:" . $ticket->color . ";'>" . $ticket->status . "</span>"); $parser->SetVar("status_text", $ticket->status); $parser->SetVar("status_color", $ticket->color); if ($ticket->user_id == 0) { $name = $ticket->unregname . " (" . JText::_("UNREG") . ")"; } else { $name = $ticket->name; } $parser->SetVar("name", $name); $parser->SetVar("lastactivity", FSS_Helper::TicketTime($ticket->lastupdate, FSS_DATETIME_SHORT)); $parser->SetVar("opened", FSS_Helper::TicketTime($ticket->opened, FSS_DATETIME_SHORT)); $parser->SetVar("closed", FSS_Helper::TicketTime($ticket->closed, FSS_DATETIME_SHORT)); $parser->SetVar("department", $ticket->department); $parser->SetVar("category", $ticket->category); $parser->SetVar("product", $ticket->product); $parser->SetVar("priority", "<span style='color:" . $ticket->pricolor . ";'>" . $ticket->priority . "</span>"); $parser->SetVar("priority_text", $ticket->priority); $parser->SetVar("priority_color", $ticket->pricolor); if (FSS_Settings::get('time_tracking') != "") { if ($ticket->timetaken > 0) { $hours = floor($ticket->timetaken / 60); $mins = sprintf("%02d", $ticket->timetaken % 60); $parser->SetVar("time_taken", "<i class='icon-clock'></i>" . JText::sprintf("TIME_TAKEN_DISP", $hours, $mins)); } else { $parser->SetVar("time_taken", "<i class='icon-clock'></i>" . JText::sprintf("TIME_TAKEN_DISP", "0", "00")); } } else { $parser->SetVar("time_taken", ''); } $group_names = array(); if (isset($ticket->groups)) { foreach ($ticket->groups as $group) { $group_names[] = $group->groupname; } } $parser->SetVar('groups', implode(", ", $group_names)); if (empty($ticket->custom) && !empty($ticket->fields)) { $ticket->custom = $ticket->fields; } if (isset($ticket->customfields)) { foreach ($ticket->customfields as $field) { if ($field['type'] != "plugin") { continue; } $aparams = FSSCF::GetValues($field); $plugin = FSSCF::get_plugin($aparams['plugin']); $id = $field['id']; $value = ""; if (isset($ticket->custom) && array_key_exists($field['id'], $ticket->custom)) { $value = $ticket->custom[$field['id']]; } if (is_array($value)) { $value = $value['value']; } $text = $plugin->Display($value, $aparams['plugindata'], array('ticketid' => $ticket->id, 'userid' => $ticket->user_id, 'ticket' => $ticket, 'inlist' => 1), $field['id']); $parser->SetVar("custom" . $id, $text); $parser->SetVar("custom_" . $id, $text); $cf_alias = $field['alias']; $parser->SetVar("custom_" . $cf_alias, $text); $parser->SetVar("custom_" . $id . "_name", $field['description']); } } if (isset($ticket->custom)) { $allcustom = array(); if (count($ticket->custom) > 0) { foreach ($ticket->custom as $id => $value) { if (is_array($value)) { $value = $value['value']; } if (isset($ticket->customfields) && array_key_exists($id, $ticket->customfields)) { $field = $ticket->customfields[$id]; if ($field['inlist'] < 1) { continue; } if ($field['type'] == "plugin") { $aparams = FSSCF::GetValues($field); if (array_key_exists("plugin", $aparams) && array_key_exists("plugindata", $aparams)) { $plugin = FSSCF::get_plugin($aparams['plugin']); $value = $plugin->Display($value, $aparams['plugindata'], array('ticketid' => $ticket->id, 'userid' => $ticket->user_id, 'ticket' => $ticket, 'inlist' => 1), $field['id']); } } $prefix = "<span class='cust_field_label cust_field_label_{$cf_alias} cust_field_label_{$id}'>" . $ticket->customfields[$id]['description'] . ":</span> "; if ($ticket->customfields[$id]['type'] == "checkbox") { if ($value == "on") { $text = JText::_("Yes"); } else { $text = JText::_("No"); } } else { $text = $value; } $parser->SetVar("custom" . $id, $text); $parser->SetVar("custom_" . $id, $text); $cf_alias = $ticket->customfields[$id]['alias']; $parser->SetVar("custom_" . $cf_alias, $text); $parser->SetVar("custom_" . $id . "_name", $ticket->customfields[$id]['description']); $allcustom[] = $prefix . "<span class='cust_field_value cust_field_value_{$cf_alias} cust_field_value_{$id}'>" . $text . "</span>"; } } } $parser->SetVar("custom", implode(", ", $allcustom)); } if ($ticket->assigned == '') { $parser->SetVar('handlername', JText::_("UNASSIGNED")); } else { $parser->SetVar('handlername', $ticket->assigned); } $parser->SetVar('username', $ticket->username); $parser->SetVar('email', $ticket->useremail); $parser->SetVar('handlerusername', $ticket->handlerusername); $parser->SetVar('handleremail', $ticket->handleremail); // product image $prod = self::getProduct($ticket); if ($prod) { $parser->SetVar('product_img', JURI::root(true) . "/images/fss/products/" . $prod->image); } $dept = self::getDepartment($ticket); if ($dept) { $parser->SetVar('department_img', JURI::root(true) . "/images/fss/departments/" . $dept->image); } if (strpos($parser->template, "{last_poster}") !== false || strpos($parser->template, "{last_poster_username}") !== false) { $parser->SetVar('last_poster', ''); $parser->SetVar('last_poster_username', ''); $db = JFactory::getDBO(); $qry = "SELECT user_id, posted FROM #__fss_ticket_messages WHERE ticket_ticket_id = " . $db->escape($ticket->id) . " AND admin IN (0, 1) ORDER BY posted DESC LIMIT 1"; $db->setQuery($qry); $rows = $db->loadObjectList(); if ($rows) { $row = reset($rows); if ($row) { $user_id = $row->user_id; $user = JFactory::getUser($user_id); $parser->SetVar('last_poster', $user->name); $parser->SetVar('last_poster_username', $user->username); } } } } }
<?php echo FSS_Helper::PageTitlePopup("SUPPORT", "EDIT_TICKET"); ?> <?php $input = FSSCF::FieldInput($this->field, $this->errors, "ticket", array('ticketid' => FSS_Input::getInt('ticketid', 0), 'userid' => $this->ticket['user_id'], 'ticket' => $this->ticket)); ?> <div class="control-group" style="min-height:<?php echo $this->field['min_popup_height']; ?> px;"> <label class="control-label"> <?php echo FSSCF::FieldHeader($this->field, false, false); ?> </label> <div class="controls"> <?php echo $input; ?> </div> </div> <input type="hidden" name="what" value="savefield"> <input type="hidden" name="savefield" value="<?php echo $this->field['id']; ?> ">
function &getTickets() { $db = JFactory::getDBO(); $user = JFactory::getUser(); $userid = $user->get('id'); $uidlist = $this->getUIDS($userid); $tidlist = $this->getTIDS($userid); $query = "SELECT t.*, s.title as status, s.color, u.name, au.name as assigned, u.email as useremail, u.username as username, au.email as handleremail, au.username as handlerusername, "; $query .= " dept.title as department, cat.title as category, prod.title as product, pri.title as priority, pri.color as pricolor, "; $query .= " grp.groupname as groupname, grp.id as group_id "; $query .= " , pri.translation as ptl, dept.translation as dtr, s.translation as str, cat.translation as ctr, prod.translation as prtr"; $query .= " FROM #__fss_ticket_ticket as t "; $query .= " LEFT JOIN #__fss_ticket_status as s ON t.ticket_status_id = s.id "; $query .= " LEFT JOIN #__users as u ON t.user_id = u.id "; $query .= " LEFT JOIN #__users as au ON t.admin_id = au.id "; $query .= " LEFT JOIN #__fss_ticket_dept as dept ON t.ticket_dept_id = dept.id "; $query .= " LEFT JOIN #__fss_ticket_cat as cat ON t.ticket_cat_id = cat.id "; $query .= " LEFT JOIN #__fss_prod as prod ON t.prod_id = prod.id "; $query .= " LEFT JOIN #__fss_ticket_pri as pri ON t.ticket_pri_id = pri.id "; $query .= " LEFT JOIN (SELECT group_id, user_id FROM #__fss_ticket_group_members GROUP BY user_id) as mem ON t.user_id = mem.user_id "; $query .= " LEFT JOIN #__fss_ticket_group as grp ON grp.id = mem.group_id "; // add product, department and category $query .= " WHERE ( t.user_id IN (" . implode(", ", $uidlist) . ") OR t.id IN (" . implode(", ", $tidlist) . ") ) "; $query .= " AND " . SupportSource::user_list_sql(); $tickets = FSS_Input::getCmd('tickets', 'open'); if (FSS_Settings::get('support_simple_userlist_tabs')) { $tickets = "all"; } if (FSS_Input::getCmd('search_all')) { $tickets = ""; } if ($tickets == 'open') { $allopen = FSS_Ticket_Helper::GetStatusIDs("is_closed", true); // tickets that arent closed $query .= " AND ticket_status_id IN ( " . implode(", ", $allopen) . ") "; } if ($tickets == 'closed') { $allopen = FSS_Ticket_Helper::GetStatusIDs("is_closed"); // remove the archived tickets from the list to deal with $def_archive = FSS_Ticket_Helper::GetStatusID('def_archive'); foreach ($allopen as $offset => $value) { if ($value == $def_archive) { unset($allopen[$offset]); } } // tickets that are closed $query .= " AND ticket_status_id IN ( " . implode(", ", $allopen) . ") "; } else { if ($tickets > 0) { $statuss = SupportHelper::getStatuss(false); $status_list = array(); $status_list[] = (int) $tickets; foreach ($statuss as $status) { if ($status->combine_with == (int) $tickets) { $status_list[] = $status->id; } } $query .= " AND ticket_status_id IN (" . implode(", ", $status_list) . ")"; } } $search = FSS_Input::getString('search'); if ($search != "") { FSS_Helper::AllowCache(); // We have the nearly full query here, so use it to get a list of ticket ids $db->setQuery($query); $recs = $db->loadObjectList(); $ids = array(); $ids[] = 0; foreach ($recs as $rec) { $ids[] = $rec->id; } $mode = ""; if (FSS_Helper::contains($search, array('*', '+', '-', '<', '>', '(', ')', '~', '"'))) { $mode = "IN BOOLEAN MODE"; } $msgsrch = "SELECT ticket_ticket_id FROM #__fss_ticket_messages WHERE ticket_ticket_id IN (" . implode(", ", $ids) . ") AND admin < 3 AND "; $msgsrch .= " MATCH (body) AGAINST ('" . $db->escape($search) . "' {$mode}) "; $db->setQuery($msgsrch); $results = $db->loadObjectList(); $ids = array(); $ids[] = 0; foreach ($results as $rec) { $ids[] = $rec->ticket_ticket_id; } // search custom fields that are set to be searched $fields = FSSCF::GetAllCustomFields(true); foreach ($fields as $field) { if (!$field["basicsearch"]) { continue; } if ($field['permissions'] > 1 && $field['permissions'] < 5) { continue; } $fieldid = $field['id']; if ($field['type'] == "checkbox") { if ($search == "1") { $search = "on"; } else { $search = ""; } } if ($field['peruser']) { continue; } if ($field['type'] == "plugin") { // try to do a plugin based search $data = array(); foreach ($field['values'] as $item) { list($key, $value) = explode("=", $item, 2); $data[$key] = $value; } if (array_key_exists("plugin", $data)) { $plugins = FSSCF::get_plugins(); if (array_key_exists($data['plugin'], $plugins)) { $po = $plugins[$data['plugin']]; if (method_exists($po, "Search")) { $res = $po->Search($data['plugindata'], $search, false, false); if ($res !== false) { foreach ($res as $item) { $ids[] = (int) $item->ticket_id; } continue; } } } } } $qry = "SELECT ticket_id FROM #__fss_ticket_field WHERE field_id = '" . FSSJ3Helper::getEscaped($db, $fieldid) . "' AND value LIKE '%" . FSSJ3Helper::getEscaped($db, $search) . "%'"; $db->setQuery($qry); $data = $db->loadObjectList(); foreach ($data as $item) { $id = (int) $item->ticket_id; if ($id > 0) { $ids[] = $id; } } } //"MATCH (question, answer) AGAINST ('" . $db->escape($search) . "')" $query .= " AND ( t.id IN (" . implode(", ", $ids) . ") OR MATCH (t.title) AGAINST ('" . $db->escape($search) . "' {$mode}) OR t.reference LIKE '%" . $db->escape($search) . "%' ) "; } $order = FSS_Input::getCmd('order'); $order_dir = FSS_Input::getCmd('order_dir', 'asc'); $order_dir_allowed = array('asc', 'desc'); if (!in_array($order_dir, $order_dir_allowed)) { $order_dir = 'asc'; } $order_allowed = array('t.title', 'lastupdate', 'status', 'assigned', 'lastupdate', 'u.name'); if (!in_array($order, $order_allowed)) { $order = ''; } if ($order != "") { $query .= " ORDER BY {$order} {$order_dir}"; } else { $query .= " ORDER BY lastupdate DESC "; } $mainframe = JFactory::getApplication(); $limit = $mainframe->getUserStateFromRequest('global.list.limit_ticket', 'limit', FSS_Settings::Get('ticket_per_page'), 'int'); $limitstart = FSS_Input::getInt('limitstart'); $limitstart = $limit != 0 ? floor($limitstart / $limit) * $limit : 0; $db->setQuery($query); $db->query(); //echo $query . "<br>"; $count = $db->getNumRows(); $result['pagination'] = new JPaginationJs($count, $limitstart, $limit); $db->setQuery($query, $limitstart, $limit); $result['tickets'] = $db->loadObjectList(); foreach ($result['tickets'] as &$ticket) { $fields = FSSCF::GetCustomFields($ticket->id, $ticket->prod_id, $ticket->ticket_dept_id); $values = FSSCF::GetTicketValues($ticket->id, $ticket); $ticket->fields = array(); foreach ($fields as &$field) { $ticket->fields[$field['id']] = array(); $ticket->fields[$field['id']]['name'] = $field['description']; $ticket->fields[$field['id']]['value'] = ''; if (isset($values[$field['id']])) { $ticket->fields[$field['id']]['value'] = $values[$field['id']]['value']; } } } return $result; }
" class="control-group <?php echo FSSCF::FieldClass($field); ?> <?php if (FSSCF::HasErrors($field, $this->errors)) { echo "error"; } ?> "> <label class="control-label"><?php echo FSSCF::FieldHeader($field, true, false); ?> </label> <div class="controls"> <?php echo FSSCF::FieldInput($field, $this->errors, 'ticket', array('ticketid' => 0, 'userid' => $ticket_user_id), true); ?> </div> </div> <?php $has_message_details = true; ?> <?php } ?> <?php if (count($this->cats) > 0 && !FSS_Settings::get('support_hide_category')) { ?>
function doReply() { $this->ticketid = FSS_Input::getInt('ticketid'); $this->ticket = new SupportTicket(); if (!$this->ticket->load($this->ticketid)) { return JError::raiseWarning(404, JText::_('Ticket not found')); } $this->ticket->loadAll(); if (FSS_Settings::get('time_tracking') != "") { if (FSS_Settings::get('time_tracking_type') == 'se') { $this->time_start = FSS_Helper::Date(time(), FSS_DATE_CUSTOM, "H:i:s"); $this->time_end = FSS_Helper::Date(time(), FSS_DATE_CUSTOM, "H:i:s"); } elseif (FSS_Settings::get('time_tracking_type') == 'tm') { $this->time_start = FSS_Helper::Date(time(), FSS_DATE_CUSTOM, FSS_Helper::getFormat()); $this->time_end = FSS_Helper::Date(time(), FSS_DATE_CUSTOM, FSS_Helper::getFormat()); } else { $this->taken_hours = 0; $this->taken_mins = 0; } } if (FSS_Settings::get('time_tracking') == "auto") { $session = JFactory::getSession(); $taken = $session->get('ticket_' . $this->ticket->id . "_opened"); if (FSS_Settings::get('time_tracking_type') == 'se') { $document = JFactory::getDocument(); $document->addScript(JURI::root() . 'components/com_fss/assets/js/bootstrap/bootstrap-timepicker.min.js'); $document->addScriptDeclaration("jQuery(document).ready(function () {jQuery('#timetaken_start').timepicker({minuteStep:5, showMeridian: false});jQuery('#timetaken_end').timepicker({minuteStep:5, showMeridian: false});});"); $this->time_start = FSS_Helper::Date($taken, FSS_DATE_CUSTOM, "H:i:s"); } else { if ($taken > 0) { $taken = time() - $taken; } $this->time_taken = $taken; $taken = ceil($taken / 60); $this->taken_hours = floor($taken / 60); $this->taken_mins = $taken % 60 + 1; } } $this->fields = FSSCF::GetCustomFields($this->ticket->id, $this->ticket->prod_id, $this->ticket->ticket_dept_id, 3); $this->fieldvalues = FSSCF::GetTicketValues($this->ticket->id, $this->ticket); $pathway = JFactory::getApplication()->getPathway(); $pathway->addItem(JText::_("SUPPORT"), FSSRoute::_('index.php?option=com_fss&view=admin_support&tickets=' . $this->ticket_view, false)); $pathway->addItem(JText::_("VIEW_TICKET") . " : " . $this->ticket->reference . " - " . $this->ticket->title, FSSRoute::_('index.php?option=com_fss&view=admin_support&tickets=' . $this->ticket_view . "&ticketid=" . $this->ticket->id, false)); $this->reply_type = FSS_Input::getCmd('type', 'reply'); if ($this->reply_type == "") { $this->reply_type = "reply"; } switch ($this->reply_type) { case 'reply': $this->reply_title = "REPLY_TO_SUPORT_TICKET"; $this->reply_button = "POST_REPLY"; $pathway->addItem(JText::_("POST_REPLY")); break; case 'private': $this->reply_title = "ADD_HANDLER_COMMENT_TO_TICKET"; $this->reply_button = "POST_COMMENT"; $pathway->addItem(JText::_("ADD_COMMENT")); break; case 'user': $this->reply_title = "FORWARD_TICKET_TO_A_DIFFERENT_USER"; $this->reply_button = "FORWARD_TICKET"; if ($this->ticket->user_id > 0) { $user = JFactory::getUser($this->ticket->user_id); } else { $user = new stdClass(); $user->username = $this->ticket->email; $user->name = $this->ticket->unregname; } $this->user = $user; $pathway->addItem(JText::_("FORWARD_TO_USER")); break; case 'product': $this->reply_title = "FORWARD_TICKET_TO_A_DIFFERENT_DEPARTMENT"; $this->reply_button = "FORWARD_TICKET"; $this->handlers = SupportUsers::getHandlers(false, true); $pathway->addItem(JText::_("FORWARD_TO_DEPARTMENT")); break; case 'handler': $this->reply_title = "FORWARD_TICKET_TO_A_DIFFERENT_HANDLER"; $this->reply_button = "FORWARD_TICKET"; $this->handlers = SupportUsers::getHandlers(false, true); $pathway->addItem(JText::_("FORWARD_TO_HANDLER")); break; } $this->draft = FSS_Input::getInt('draft'); $this->user_message = $this->loadDraft($this->draft); $this->support_assign_reply = FSS_Settings::get('support_assign_reply'); FSS_Helper::IncludeModal(); FSS_Helper::AddSCEditor(); parent::_display(); }
?> "> <i class="icon-search fssTip" title="<?php echo JText::_("SIMILAR_TICKETS"); ?> "></i> </a> <?php } ?> <?php } ?> <?php echo FSSCF::FieldOutput($field, $this->ticket->custom, array('ticketid' => $this->ticket->id, 'userid' => $this->ticket->user_id, 'ticket' => $this->ticket)); ?> </td> <?php FSS_Table::ColEnd(); } } if ($open) { FSS_Table::TableClose(); } ?> </td> </tr> </table> <div class="modal fss_modal" id="time_take_popup" style='display: none'>
function updateCustomField($fieldid, $value, $max_permission = 3) { // TODO: Dont like how this works, needs the field data to be stored in the class object! if (empty($this->fields)) { $this->fields = FSSCF::GetCustomFields($this->id, $this->prod_id, $this->ticket_dept_id, $max_permission); } list($old, $new) = FSSCF::StoreField($fieldid, $this->id, $this, $value); if ($old != $new) { $field = FSSCF::GetField($fieldid); if ($field->type == 'checkbox') { if ($old == "") { $old = "No"; } if ($old == "on") { $old = "Yes"; } if ($new == "") { $new = "No"; } if ($new == "on") { $new = "Yes"; } } $this->addAuditNote("Custom field '" . $field->description . "' changed from '" . $old . "' to '" . $new . "'"); $this->updateLastUpdated(); SupportActions::DoAction_Ticket("updateCustomField", $this, array('field_id' => $fieldid, 'old' => $old, 'new' => $new)); } }