Beispiel #1
0
 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;
 }
Beispiel #2
0
 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'];
         }
     }
 }
Beispiel #3
0
 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;
 }
Beispiel #4
0
 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;
 }
Beispiel #5
0
 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;
 }
Beispiel #6
0
 function pluginForm()
 {
     $plugin = JRequest::GetVar('plugin', '');
     if ($plugin == "") {
         exit;
     }
     $plugin = FSSCF::get_plugin($plugin);
     echo $plugin->DisplaySettings(null);
     exit;
 }
Beispiel #7
0
                ?>
					<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 
    }
    ?>
Beispiel #8
0
 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">&nbsp;
<input class='button' type="submit" name="store" value="<?php 
Beispiel #10
0
 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", ""));
 }
Beispiel #11
0
 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;
 }
Beispiel #12
0
 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;
 }
Beispiel #13
0
        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>
Beispiel #14
0
			<?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'];
        }
        ?>
Beispiel #15
0
 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;
 }
Beispiel #16
0
 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);
                 }
             }
         }
     }
 }
Beispiel #17
0
	<?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'];
?>
">
Beispiel #18
0
 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;
 }
Beispiel #19
0
" 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')) {
    ?>
	
Beispiel #20
0
 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();
 }
Beispiel #21
0
                ?>
">
						<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'>
Beispiel #22
0
 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));
     }
 }