function create($data) { $db = JFactory::getDBO(); $base_data = array('ticket_status_id' => FSS_Ticket_Helper::GetStatusID('def_open'), 'opened' => date("Y-m-d H:i:s"), 'lastupdate' => date("Y-m-d H:i:s")); foreach ($base_data as $key => $value) { if (!array_key_exists($key, $data)) { $data[$key] = $value; } } $keys = array(); $values = array(); foreach ($data as $key => $value) { $keys[] = $db->escape($key); $values[] = "'" . $db->escape($value) . "'"; } $qry = "INSERT INTO #__fss_ticket_ticket (" . implode(", ", $keys) . ") VALUES (" . implode(", ", $values) . ")"; $db->setQuery($qry); $db->query(); $id = $db->insertid(); $this->load($id, true); $fields = FSSCF::GetCustomFields($this->id, $this->prod_id, $this->ticket_dept_id); FSSCF::StoreFields($fields, $this->id); $this->reference = FSS_Ticket_Helper::createRef($this->id); $qry = "UPDATE #__fss_ticket_ticket SET reference = '" . $db->escape($this->reference) . "' WHERE id = " . (int) $id; $db->setQuery($qry); $db->query(); }
function loadTicketList($userid) { $this->tickets = new SupportTickets(); $this->tickets->limitstart = 0; $this->tickets->limit = 250; $status_list = FSS_Ticket_Helper::GetStatusIDs("is_closed", true); // Get all open ticket status if (count($status_list) < 1) { $status_list[] = 0; } $this->tickets->loadTicketsByQuery(array("t.admin_id = " . $userid, "t.ticket_status_id IN (" . implode(", ", $status_list) . ")")); }
function init() { $user = JFactory::getUser(); $this->userid = $user->get('id'); $this->model = $this->getModel("admin_support"); if (!FSS_Permission::auth("fss.handler", "com_fss.support_admin")) { return FSS_Admin_Helper::NoPerm(); } $this->def_open = FSS_Ticket_Helper::GetStatusID('def_open'); $this->ticket_view = FSS_Input::getCmd('tickets', $this->def_open); $this->count = SupportTickets::getTicketCount(); FSS_Helper::StylesAndJS(array('calendar', 'base64')); if (Task_Helper::HandleTasks($this)) { return false; } return true; }
function delete() { // load in tickets to do $ticketid = FSS_Input::getInt('ticketid'); $tickets = FSS_Input::getCmd('tickets'); $def_archive = FSS_Ticket_Helper::GetStatusID('def_archive'); if ($ticketid > 0) { $ticket = new SupportTicket(); if ($ticket->load($ticketid)) { $ticket->delete(); } } else { if ($tickets != '') { $tickets = new SupportTickets(); $tickets->limitstart = 0; $tickets->limit = 100; $tickets->loadTicketsByStatus($tickets); foreach ($tickets->tickets as $ticket) { $ticket->delete(); } } } JFactory::getApplication()->redirect($_SERVER['HTTP_REFERER']); }
if ($this->merge) { ?> <?php include $this->snippet(JPATH_SITE . DS . 'components' . DS . 'com_fss' . DS . 'views' . DS . 'admin_support' . DS . 'snippet' . DS . '_merge_notice.php'); ?> <?php } ?> <?php include $this->snippet(JPATH_SITE . DS . 'components' . DS . 'com_fss' . DS . 'views' . DS . 'admin_support' . DS . 'snippet' . DS . '_search.php'); ?> <?php $def_archive = FSS_Ticket_Helper::GetStatusID('def_archive'); $closed = FSS_Ticket_Helper::GetClosedStatus(); if (array_key_exists($this->ticket_view, $closed) || $this->ticket_view == "closed") { ?> <p> <a class="btn btn-default btn-small" href="<?php echo FSSRoute::_('index.php?option=com_fss&view=admin_support&task=archive.archive&tickets=' . $this->ticket_view); ?> " onclick="return confirm('<?php echo JText::_('ARCHIVE_CONFIRM'); ?> ');"> <?php echo JText::_("ARCHIVE_ALL_CLOSED_TICKETS"); ?> </a> <?php
static function &getTicketCount($foradmin = true, $current_handler_only = false) { $key = 0; if ($foradmin) { $key += 1; } if ($current_handler_only) { $key += 2; } if (empty(self::$counts)) { self::$counts = array(); } if (!array_key_exists($key, self::$counts)) { $db = JFactory::getDBO(); $query = "SELECT count( * ) AS count, ticket_status_id FROM #__fss_ticket_ticket as t WHERE 1 "; $query .= " AND " . SupportUsers::getAdminWhere(); if ($foradmin) { $query .= " AND " . SupportSource::admin_list_sql(); } else { $query .= " AND " . SupportSource::user_list_sql(); } if ($current_handler_only) { $query .= " AND admin_id = " . JFactory::getUser()->id; } $query .= " GROUP BY ticket_status_id"; $db->setQuery($query); $rows = $db->loadAssocList(); $out = array(); FSS_Ticket_Helper::GetStatusList(); foreach (FSS_Ticket_Helper::$status_list as $status) { $out[$status->id] = 0; } if (count($rows) > 0) { foreach ($rows as $row) { $out[$row['ticket_status_id']] = $row['count']; } } // work out counts for allopen, closed, all, archived $archived = FSS_Ticket_Helper::GetStatusID("def_archive"); $out['archived'] = 0; if (array_key_exists($archived, $out)) { $out['archived'] = $out[$archived]; } $allopen = FSS_Ticket_Helper::GetStatusIDs("is_closed", true); $out['allopen'] = 0; foreach ($allopen as $id) { if (array_key_exists($id, $out)) { $out['allopen'] += $out[$id]; } } $allclosed = FSS_Ticket_Helper::GetClosedStatus(); $out['allclosed'] = 0; foreach ($allclosed as $id) { if (array_key_exists($id, $out)) { $out['allclosed'] += $out[$id]; } } $all = FSS_Ticket_Helper::GetStatusIDs("def_archive", true); $out['all'] = 0; foreach ($all as $id) { if (array_key_exists($id, $out)) { $out['all'] += $out[$id]; } } self::$counts[$key] = $out; } return self::$counts[$key]; }
* @author Freestyle Joomla * @copyright (C) 2013 Freestyle Joomla * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html **/ defined('_JEXEC') or die; ?> <div class="control-group"> <label class="control-label"><?php echo JText::_("NEW_STATUS"); ?> </label> <div class="controls"> <select name="reply_status" class="select-color"> <?php FSS_Ticket_Helper::GetStatusList(); $def_admin = FSS_Ticket_Helper::GetStatusID('def_admin'); if ($def_admin < 1) { $def_admin = $this->ticket->ticket_status_id; } FSS_Translate_Helper::Tr(FSS_Ticket_Helper::$status_list); foreach (FSS_Ticket_Helper::$status_list as $status) { if ($status->def_archive) { continue; } if (!$this->can_Close() && $status->is_closed) { continue; } $sel = $status->id == $def_admin ? "SELECTED" : ""; echo "<option value='{$status->id}' style='color:{$status->color};' {$sel}>{$status->title}</option>"; } ?>
function TestRef() { $format = JRequest::getVar('ref'); $ref = FSS_Ticket_Helper::createRef(1234, $format); echo $ref; exit; }
?> <th><?php echo JText::_("LAST_UPDATE"); ?> </th> <td> <?php echo FSS_Helper::TicketTime($this->ticket->lastupdate, FSS_DATETIME_MID); ?> </td> <?php FSS_Table::ColEnd(); ?> <?php $st = FSS_Ticket_Helper::GetStatusByID($this->ticket->ticket_status_id); if ($st->is_closed && strtotime($this->ticket->closed) > 0) { FSS_Table::ColStart(); ?> <th><?php echo JText::_("CLOSED"); ?> </th> <td> <?php echo FSS_Helper::TicketTime($this->ticket->closed, FSS_DATETIME_MID); ?> </td> <?php FSS_Table::ColEnd(); }
if (FSS_Settings::get('glossary_support')) { require_once JPATH_SITE . DS . 'components' . DS . 'com_fss' . DS . 'helper' . DS . 'glossary.php'; } if (!FSS_Settings::get('user_hide_all_details')) { ?> <?php echo FSS_Helper::PageSubTitle("MESSAGES"); } ?> <?php FSS_Helper::HelpText("support_user_view_mes_header"); ?> <?php $st = FSS_Ticket_Helper::GetStatusByID($this->ticket['sid']); ?> <?php if ((!$st->is_closed || FSS_Settings::get('support_user_can_reopen')) && $this->ticket['can_edit'] && $this->ticket['merged'] == 0 && !$this->readonly) { ?> <p> <?php if (FSS_Settings::get('support_actions_as_buttons')) { ?> <button class="btn btn-default ticketrefresh pull-right" href='<?php echo FSSRoute::_('&view=ticket&what=messages&ticketid=' . $this->ticket['id']); // FIX LINK ?> '>
function saveReply() { $this->removeDraft(FSS_Input::getInt('draft')); // get posted data $ticketid = FSS_Input::getInt('ticketid'); $reply_type = FSS_Input::getCmd('reply_type'); $user_message = FSS_Input::getBBCode('body'); $handler_message = FSS_Input::getBBCode('body2'); $subject = FSS_Input::getString('subject'); // load ticket $ticket = new SupportTicket(); if (!$ticket->load($ticketid)) { exit; } // set up some variables $user_id = JFactory::getUser()->id; $handler_id = $user_id; $old_st = $ticket->getStatus(); $action_name = ""; $action_params = array(); $message_id = 0; $files_private = 0; // add signatures to messages if (FSS_Input::getInt('signature')) { if ($user_message) { $user_message .= SupportCanned::AppendSig(FSS_Input::getInt('signature'), $ticket); } if ($handler_message) { $handler_message .= SupportCanned::AppendSig(FSS_Input::getInt('signature'), $ticket); } } $extra_time = 0; $timestart = 0; $timeend = 0; if (FSS_Settings::Get('time_tracking') != "") { if (FSS_Settings::get('time_tracking_type') == 'se') { $timestart = strtotime("1970-01-01 " . FSS_Input::getString('timetaken_start')); $timeend = strtotime("1970-01-01 " . FSS_Input::getString('timetaken_end')); $extra_time = (int) (($timeend - $timestart) / 60); } elseif (FSS_Settings::get('time_tracking_type') == 'tm') { $timestart = strtotime(FSS_Input::getString('timetaken_start')); $timeend = strtotime(FSS_Input::getString('timetaken_end')); $extra_time = (int) (($timeend - $timestart) / 60); } else { $extra_time = (int) (FSS_Input::getInt('timetaken_hours') * 60 + FSS_Input::getInt('timetaken_mins')); } } // different reply types switch ($reply_type) { case 'reply': // post reply to user if ($user_message) { $message_id = $ticket->addMessage($user_message, $subject, $user_id, TICKET_MESSAGE_ADMIN, $extra_time, $timestart, $timeend); $ticket->addTime($extra_time); } elseif ($extra_time > 0) { // no message, add time if needed $ticket->addTime($extra_time, "", true, $timestart, $timeend); } // update status $new_status = FSS_Input::getInt('reply_status'); $ticket->updateStatus($new_status); // reassign ticket if needed if (FSS_Settings::get('support_assign_reply') == 1 && FSS_Input::getInt('dontassign') == 0) { $ticket->assignHandler($handler_id, TICKET_ASSIGN_TOOK_OWNER); } elseif (FSS_Settings::get('support_autoassign') == 3 && $ticket->admin_id == 0 && FSS_Input::getInt('dontassign') == 0) { $ticket->assignHandler($handler_id, TICKET_ASSIGN_ASSIGNED); } // call SupportActions handler for admin reply $action_name = "Admin_Reply"; $action_params = array('subject' => $subject, 'user_message' => $user_message, 'status' => $new_status); break; case 'private': // add message to ticket if ($handler_message) { $message_id = $ticket->addMessage($handler_message, $subject, $user_id, TICKET_MESSAGE_PRIVATE, $extra_time, $timestart, $timeend); $ticket->addTime($extra_time); } else { if ($extra_time > 0) { $ticket->addTime($extra_time, "", true, $timestart, $timeend); } } $files_private = 1; // call support actions for private comment $action_name = "Admin_Private"; $action_params = array('subject' => $subject, 'handler_message' => $handler_message); break; case 'user': // update user on ticket $new_user_id = FSS_Input::getInt("user_id"); $ticket->updateUser($new_user_id); if ($user_message) { $message_id = $ticket->addMessage($user_message, $subject, $user_id, TICKET_MESSAGE_ADMIN, $extra_time, $timestart, $timeend); $ticket->addTime($extra_time); } else { if ($extra_time > 0) { $ticket->addTime($extra_time, "", true, $timestart, $timeend); $extra_time = 0; } } $action_name = "Admin_ForwardUser"; $action_params = array('subject' => $subject, 'user_message' => $user_message, 'user_id' => $new_user_id); // break; case 'product': $new_handler_id = FSS_Input::getInt('new_handler'); // update product and department $new_product_id = FSS_Input::getInt("new_product_id"); $new_department_id = FSS_Input::getInt("new_department_id"); $ticket->updateProduct($new_product_id); $ticket->updateDepartment($new_department_id); /** * -2 - Auto Assign * -1 - Unchanged * 0 - Unassigned * X - Hander **/ if ($new_handler_id == -1) { //$ticket->assignHandler($new_handler_id, TICKET_ASSIGN_FORWARD); } else { if ($new_handler_id == 0) { $ticket->assignHandler(0, -1); } else { if ($new_handler_id > 0) { $ticket->assignHandler($new_handler_id, TICKET_ASSIGN_FORWARD); } else { if ($new_handler_id == -2) { // auto assign new handler $admin_id = FSS_Ticket_Helper::AssignHandler($new_product_id, $new_department_id, $ticket->ticket_cat_id, true); $ticket->assignHandler($admin_id, TICKET_ASSIGN_FORWARD); } } } } if ($user_message) { $message_id = $ticket->addMessage($user_message, $subject, $user_id, TICKET_MESSAGE_ADMIN, $extra_time, $timestart, $timeend); $ticket->addTime($extra_time); $extra_time = 0; } if ($handler_message) { $ticket->addMessage($handler_message, $subject, $user_id, TICKET_MESSAGE_PRIVATE, $extra_time, $timestart, $timeend); $ticket->addTime($extra_time); $extra_time = 0; } if ($extra_time > 0) { $ticket->addTime($extra_time, "", true, $timestart, $timeend); } $action_name = "Admin_ForwardProduct"; $action_params = array('subject' => $subject, 'user_message' => $user_message, 'handler_message' => $handler_message, 'product_id' => $new_product_id, 'department_id' => $new_department_id); break; case 'handler': $new_handler_id = FSS_Input::getInt('new_handler'); if ($new_handler_id == -2) { // auto assign new handler $admin_id = FSS_Ticket_Helper::AssignHandler($ticket->prod_id, $ticket->ticket_dept_id, $ticket->ticket_cat_id, true); $ticket->assignHandler($admin_id, TICKET_ASSIGN_FORWARD); } else { if ($new_handler_id != -1) { $ticket->assignHandler($new_handler_id, TICKET_ASSIGN_FORWARD); } } // update status $new_status = FSS_Input::getCmd('reply_status'); $ticket->updateStatus($new_status); if ($user_message) { $message_id = $ticket->addMessage($user_message, $subject, $user_id, TICKET_MESSAGE_ADMIN, $extra_time, $timestart, $timeend); $ticket->addTime($extra_time); $extra_time = 0; } if ($handler_message) { $ticket->addMessage($handler_message, $subject, $user_id, TICKET_MESSAGE_PRIVATE, $extra_time, $timestart, $timeend); $ticket->addTime($extra_time); $extra_time = 0; } if ($extra_time > 0) { $ticket->addTime($extra_time, "", true, $timestart, $timeend); } $action_name = "Admin_ForwardHandler"; $action_params = array('subject' => $subject, 'user_message' => $user_message, 'handler_message' => $handler_message, 'handler_id' => $new_handler_id); break; } // add posted files $files = $ticket->addFilesFromPost($message_id, -1, $files_private); $ticket->stripImagesFromMessage($message_id); $action_params['files'] = $files; // call action handler SupportActions::DoAction($action_name, $ticket, $action_params); // Redirect to new page $link = FSSRoute::_('index.php?option=com_fss&view=admin_support&layout=ticket&ticketid=' . $ticket->id, false); $new_st = $ticket->getStatus(); if ($reply_type == "reply") { if ($new_st->is_closed && SupportUsers::getSetting("return_on_close")) { $link = SupportHelper::parseRedirectType($old_st->id, SupportUsers::getSetting("return_on_close")); } else { if (SupportUsers::getSetting("return_on_reply")) { $link = SupportHelper::parseRedirectType($old_st->id, SupportUsers::getSetting("return_on_reply")); } } } JFactory::getApplication()->redirect($link); }
function &getTicketCount() { $user = JFactory::getUser(); $userid = $user->get('id'); if (empty(self::$ticket_counts)) { self::$ticket_counts = array(); } if (array_key_exists($userid, self::$ticket_counts)) { $this->_counts = self::$ticket_counts[$userid]; return $this->_counts; } $uidlist = $this->getUIDS($userid); $tidlist = $this->getTIDS($userid); $db = JFactory::getDBO(); $query = "SELECT count( * ) AS count, ticket_status_id FROM #__fss_ticket_ticket WHERE (user_id IN (" . implode(", ", $uidlist) . ") OR id IN ( " . implode(", ", $tidlist) . ")) "; $query .= " AND " . SupportSource::user_list_sql(); $query .= " GROUP BY ticket_status_id"; $db->setQuery($query); $rows = $db->loadAssocList(); $out = array(); FSS_Ticket_Helper::GetStatusList(); foreach (FSS_Ticket_Helper::$status_list as $status) { $out[$status->id] = 0; } if (count($rows) > 0) { foreach ($rows as $row) { $out[$row['ticket_status_id']] = $row['count']; } } // work out counts for allopen, closed, all, archived $archived = FSS_Ticket_Helper::GetStatusID("def_archive"); if (array_key_exists($archived, $out)) { $out['archived'] = $out[$archived]; } else { $out['archived'] = 0; } $allopen = FSS_Ticket_Helper::GetStatusIDs("is_closed", true); $out['open'] = 0; foreach ($allopen as $id) { if (array_key_exists($id, $out)) { $out['open'] += $out[$id]; } } $allclosed = FSS_Ticket_Helper::GetClosedStatus(); $out['closed'] = 0; foreach ($allclosed as $id) { if (array_key_exists($id, $out)) { $out['closed'] += $out[$id]; } } $all = FSS_Ticket_Helper::GetStatusIDs("def_archive"); $out['all'] = 0; foreach ($rows as $row) { if ($row['ticket_status_id'] != $all) { $out['all'] += $row['count']; } } $this->_counts = $out; self::$ticket_counts[$userid] = $out; return $this->_counts; }
function merge() { $source_id = FSS_Input::getInt('source_id'); $dest_id = FSS_Input::getInt('dest_id'); if ($source_id < 1) { return $this->cancel(); } if ($dest_id < 1) { return $this->cancel(); } $source = new SupportTicket(); if (!$source->load($source_id)) { return $this->cancel(); } $dest = new SupportTicket(); if (!$dest->load($dest_id)) { return $this->cancel(); } //print_p($source); // need to copy messages $db = JFactory::getDBO(); $sql = "SELECT * FROM #__fss_ticket_messages WHERE ticket_ticket_id = " . $db->escape($source_id); $db->setQuery($sql); $messages = $db->loadObjectList(); $msg_map = array(); foreach ($messages as $message) { $old_id = $message->id; unset($message->id); $message->ticket_ticket_id = $dest_id; $new_id = $this->Insert("#__fss_ticket_messages", $message); $msg_map[$old_id] = $new_id; } // add time $qry = "UPDATE #__fss_ticket_ticket SET timetaken = timetaken + " . (int) $source->timetaken . " WHERE id = " . $dest_id; $db->setQuery($qry); $db->Query(); if ($source->timetaken > 0) { $qry = "UPDATE #__fss_ticket_ticket SET timetaken = 0 WHERE id = " . $source_id; $db->setQuery($qry); $db->Query(); $source->addAuditNote("Time taken cleared as merged with another ticket"); } // copy files $sql = "SELECT * FROM #__fss_ticket_attach WHERE ticket_ticket_id = " . $db->escape($source_id); $db->setQuery($sql); $attachments = $db->loadObjectList(); foreach ($attachments as $attachment) { unset($attachment->id); $attachment->ticket_ticket_id = $dest_id; // change id to that of new message if (array_key_exists($attachment->message_id, $msg_map)) { $attachment->message_id = $msg_map[$attachment->message_id]; } $new_id = $this->Insert("#__fss_ticket_attach", $attachment); } // add audit messages to both $source->addAuditNote("Ticket merged into another ticket then closed. Dest Ticket: " . $dest->reference . " - " . $dest->title); $dest->addAuditNote("Ticket merged into this one. Merged Ticket: " . $source->reference . " - " . $source->title); // close source ticket $closed = FSS_Ticket_Helper::GetStatusID('def_closed'); // add merge tag to source ticket $now = FSS_Helper::CurDate(); $qry = "UPDATE #__fss_ticket_ticket SET merged = " . (int) $dest_id . ", ticket_status_id = " . (int) $closed . ", lastupdate = '{$now}', closed = '{$now}' WHERE id = " . (int) $source_id; $db->setQuery($qry); $db->Query(); // redirect to new ticket // TODO: /* Need to copy cc information on the ticket */ $session = JFactory::getSession(); $session->clear('merge'); $session->clear('merge_ticket_id'); ?> <script> window.location = '<?php echo FSSRoute::_('index.php?option=com_fss&view=admin_support&layout=ticket&ticketid=' . $dest_id, false); ?> '; </script> <?php exit; }
function DoTicketReply($ticketid, $userid, $isadmin, &$messageid) { $db = JFactory::getDBO(); $subject = $this->subject; $body = $this->plainmsg; $now = FSS_Helper::CurDate(); if ($body) { $qry = "INSERT INTO #__fss_ticket_messages (ticket_ticket_id, subject, body, user_id, admin, posted) VALUES ('"; $qry .= FSSJ3Helper::getEscaped($db, $ticketid) . "','" . FSSJ3Helper::getEscaped($db, $subject) . "','" . FSSJ3Helper::getEscaped($db, $body) . "','" . FSSJ3Helper::getEscaped($db, $userid) . "', '" . FSSJ3Helper::getEscaped($db, $isadmin) . "', '{$now}')"; $db->setQuery($qry); $db->Query(); $messageid = $db->insertid(); $qry = "SELECT ticket_status_id FROM #__fss_ticket_ticket WHERE id = '" . FSSJ3Helper::getEscaped($db, $ticketid) . "'"; $db->setQuery($qry); $status = $db->loadAssoc(); if ($isadmin) { $newstatus = FSS_Ticket_Helper::GetStatusID('def_admin'); } else { $newstatus = FSS_Ticket_Helper::GetStatusID('def_user'); } if ($newstatus > 0) { $qry = "UPDATE #__fss_ticket_ticket SET ticket_status_id = '" . FSSJ3Helper::getEscaped($db, $newstatus) . "', closed = NULL WHERE id = '" . FSSJ3Helper::getEscaped($db, $ticketid) . "'"; } else { $qry = "UPDATE #__fss_ticket_ticket SET closed = NULL WHERE id = '" . FSSJ3Helper::getEscaped($db, $ticketid) . "'"; } $db->setQuery($qry); $db->Query(); if ($newstatus > 0) { $oldstatus = $this->GetStatus($status['ticket_status_id']); $newstatus = $this->GetStatus($newstatus); $this->AddTicketAuditNote($ticketid, "Status changed from '" . $oldstatus['title'] . "' to '" . $newstatus['title'] . "'", $userid); } } $qry = "UPDATE #__fss_ticket_ticket SET lastupdate = '{$now}' WHERE id = '" . FSSJ3Helper::getEscaped($db, $ticketid) . "'"; $db->setQuery($qry); $db->Query(); $ticket = $this->getTicket($ticketid); if ($isadmin) { FSS_EMail::Admin_Reply($ticket, $subject, $body, array()); } else { FSS_EMail::User_Reply($ticket, $subject, $body, array()); } }
function setupParserView() { $this->parser->SetVar('view', $this->ticket_view); $this->cst = FSS_Ticket_Helper::GetStatusByID($this->ticket_view); if ($this->cst) { if ($this->cst->is_closed) { $this->parser->SetVar('view', 'closed'); } if ($this->cst->def_archive) { $this->parser->SetVar('view', 'archived'); } } // set up merge // if we are merging, then need to display a message at top of list about whats going on, with a cancel button if ($this->merge) { $this->parser->SetVar('merge', 1); } }
function OutputHeader() { if (empty($this->parser)) { $this->parser = new FSSParser(); } if (empty($this->db_time)) { $this->getDBTime(); } $this->getCustomFields(); /*if ($this->layoutpreview) { $this->parser->Load('preview',1); } else {*/ $this->parser->Load(FSS_Settings::get('support_user_template'), 1); //} $this->parser->multiuser = $this->multiuser; /*$this->parser->ticket_view = $this->ticket_view; $this->parser->customfields = $this->customfields;*/ FSSParserTicket::forUser($this->parser, null); //$this->parser->ParserPopulateUserTicket($this->parser,null); $this->cst = FSS_Ticket_Helper::GetStatusByID($this->ticket_view); if ($this->cst) { if ($this->cst->is_closed) { $this->parser->SetVar('view', 'closed'); } if ($this->cst->def_archive) { $this->parser->SetVar('view', 'archived'); } } echo $this->parser->Parse(); }
static function GetClosedStatus() { FSS_Ticket_Helper::GetStatusList(); $ids = array(); foreach (FSS_Ticket_Helper::$status_list as $status) { if ($status->is_closed && !$status->def_archive) { $ids[(int) $status->id] = (int) $status->id; } } if (count($ids) == 0) { $ids[] = 0; } return $ids; }
function Execute($aparams) { $debug = 0; $this->Log("Auto closing tickets"); $db = JFactory::getDBO(); $can_close = FSS_Ticket_Helper::GetStatusIDs('can_autoclose'); $def_close = FSS_Ticket_Helper::GetStatusID('def_closed'); if ($debug) { $this->Log("Can Close : " . implode(", ", $can_close)); } if ($debug) { $this->Log("Close To : " . $def_close); } $now = FSS_Helper::CurDate(); // if no audit log to be created, then can just close all tickets in a single query, this is quicker! if (!$aparams['addaudit'] && !$aparams['emailuser']) { if ($debug) { echo "No audit required, just closing<br>"; } $qry = "UPDATE #__fss_ticket_ticket SET closed = '{$now}', ticket_status_id = {$def_close} WHERE DATE_ADD(`lastupdate` ,INTERVAL " . FSSJ3Helper::getEscaped($db, $aparams['closeinterval']) . " DAY) < '{$now}' AND ticket_status_id IN (" . implode(", ", $can_close) . ")"; $db->setQuery($qry); $db->Query(); // UNCOMMENT $rows = $db->getAffectedRows(); if ($debug) { $this->Log($qry); } // COMMENT $this->Log("Auto closed {$rows} tickets"); return; } $qry = "SELECT * FROM #__fss_ticket_ticket WHERE DATE_ADD(`lastupdate` ,INTERVAL " . FSSJ3Helper::getEscaped($db, $aparams['closeinterval']) . " DAY) < '{$now}' AND ticket_status_id IN (" . implode(", ", $can_close) . ")"; $db->setQuery($qry); if ($debug) { $this->Log($qry); } $rows = $db->loadAssocList(); $this->Log("Found " . count($rows) . " tickets to close"); if (count($rows) == 0) { return; } $ids = array(); $auditrows = array(); foreach ($rows as $row) { $ids[] = FSSJ3Helper::getEscaped($db, $row['id']); if ($aparams['addaudit']) { // add audit log to the ticket $auditqry[] = "(" . FSSJ3Helper::getEscaped($db, $row['id']) . ", 'Audit Message', 'Ticket auto-closed after " . FSSJ3Helper::getEscaped($db, $aparams['closeinterval']) . " days of inactivity', 0, 3, '{$now}')"; } if ($aparams['emailuser']) { FSS_EMail::Admin_AutoClose($row); } } if ($aparams['addaudit']) { $qry = "INSERT INTO #__fss_ticket_messages (ticket_ticket_id, subject, body, user_id, admin, posted) VALUES \n"; $qry .= implode(",\n ", $auditqry); if ($debug) { $this->Log("Saving Audit Messages"); } if ($debug) { $this->Log($qry); } $db->setQuery($qry); $db->Query(); } $qry = "UPDATE #__fss_ticket_ticket SET closed = '{$now}', ticket_status_id = {$def_close} WHERE id IN (" . implode(", ", $ids) . ")"; if ($debug) { $this->Log("Closing Tickets"); } if ($debug) { $this->Log($qry); } $db->setQuery($qry); $db->Query(); $this->Log("Closed " . count($rows) . " tickets"); /*echo "<pre style='background-color:white;'>"; echo $qry; echo "</pre>";*/ }
function loadPDC() { $this->products = SupportHelper::getProducts(); $this->departments = SupportHelper::getDepartments(); $this->categories = SupportHelper::getCategories(); $prods = array(); $prods[] = JHTML::_('select.option', '0', JText::_("SELECT_PRODUCT"), 'id', 'title'); $prods = array_merge($prods, $this->products); $this->products_select = JHTML::_('select.genericlist', $prods, 'prodid', 'class="input-medium" size="1" onchange="document.mainform.submit( );"', 'id', 'title', $this->prodid); $depts = array(); $depts[] = JHTML::_('select.option', '0', JText::_("SELECT_DEPARTMENT"), 'id', 'title'); $depts = array_merge($depts, $this->departments); $this->departments_select = JHTML::_('select.genericlist', $depts, 'deptid', 'class="input-medium" size="1" onchange="document.mainform.submit( );"', 'id', 'title', $this->deptid); $cats = array(); $cats[] = JHTML::_('select.option', '0', JText::_("SELECT_CATEGORY"), 'id', 'title'); $cats = array_merge($cats, $this->categories); $this->categories_select = JHTML::_('select.genericlist', $cats, 'catid', 'class="input-medium" size="1" onchange="document.mainform.submit( );"', 'id', 'title', $this->catid); $modes = array(); $modes[] = JHTML::_('select.option', '0', JText::_("VIEW_TICKETS"), 'id', 'title'); $modes[] = JHTML::_('select.option', '1', JText::_("ASSIGN_TICKETS"), 'id', 'title'); $this->mode_select = JHTML::_('select.genericlist', $modes, 'mode', 'class="input-medium" size="1" onchange="document.mainform.submit( );"', 'id', 'title', $this->mode); $this->statuss = SupportHelper::getStatuss(); FSS_Translate_Helper::Tr($this->statuss); $this->status_select = JHTML::_('select.genericlist', $this->statuss, 'status', 'class="input-medium hide" size="1" onchange="document.mainform.submit( );" id="cur_status"', 'id', 'title', $this->status); $this->status_obj = FSS_Ticket_Helper::GetStatusByID($this->status); FSS_Translate_Helper::TrSingle($this->status_obj); }
"> <a href='<?php echo strpos($tab->link, 'index.php') === FALSE ? $tab->link : FSSRoute::_($tab->link); ?> '> <?php echo $tab->tabname; ?> </a> </li> <?php } ?> <?php $nottabs = FSS_Ticket_Helper::GetStatuss("own_tab", true); FSS_Translate_Helper::Tr($nottabs); $showother = count($nottabs) > 0; if ($showother || !FSS_Settings::get('support_tabs_allopen') || !FSS_Settings::get('support_tabs_allclosed') || !FSS_Settings::get('support_tabs_all')) { ?> <!-- <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#" onclick="return false;"> <?php echo JText::_('OTHER'); ?> <b class="caret bottom-up"></b> </a> <ul class="dropdown-menu bottom-up pull-left"> <?php
* @copyright (C) 2013 Freestyle Joomla * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html **/ defined('_JEXEC') or die; require_once JPATH_SITE . DS . 'components' . DS . 'com_fss' . DS . 'helper' . DS . 'translate.php'; require_once JPATH_SITE . DS . 'components' . DS . 'com_fss' . DS . 'helper' . DS . 'support_tickets.php'; require_once JPATH_SITE . DS . 'components' . DS . 'com_fss' . DS . 'helper' . DS . 'support_source.php'; ?> <?php echo FSS_Helper::PageSubTitle("<a href='" . FSSRoute::_('index.php?option=com_fss&view=admin_support') . "'><img src='" . JURI::root(true) . "/components/com_fss/assets/images/support/support_24.png'> " . JText::_("SUPPORT_TICKETS") . "</a>", false); ?> <ul> <?php FSS_Ticket_Helper::GetStatusList(); $counts = SupportTickets::getTicketCount(); FSS_Translate_Helper::Tr(FSS_Ticket_Helper::$status_list); foreach (FSS_Ticket_Helper::$status_list as $status) { if ($status->def_archive) { continue; } if ($status->is_closed) { continue; } if (!array_key_exists($status->id, $counts)) { continue; } if ($counts[$status->id] < 1) { continue; }
static function getUserTicketCounts($userid, $email) { $db = JFactory::getDBO(); if ($userid) { $qry = "SELECT count(*) as cnt, ticket_status_id FROM #__fss_ticket_ticket WHERE user_id = '" . FSSJ3Helper::getEscaped($db, $userid) . "' GROUP BY ticket_status_id"; } else { $qry = "SELECT count(*) as cnt, ticket_status_id FROM #__fss_ticket_ticket WHERE email = '" . FSSJ3Helper::getEscaped($db, $email) . "' GROUP BY ticket_status_id"; } $db->setQuery($qry); $rows = $db->loadObjectList(); $out = array(); FSS_Ticket_Helper::GetStatusList(); $out['total'] = 0; if (count($rows) > 0) { foreach ($rows as $row) { $out[$row->ticket_status_id] = $row->cnt; $out['total'] += $row->cnt; } } return $out; }