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) . ")"));
 }
Exemple #3
0
 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']);
 }
Exemple #5
0
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>";
}
?>
Exemple #8
0
 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
        ?>
'>
Exemple #11
0
 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);
 }
Exemple #12
0
 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;
 }
Exemple #13
0
    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());
     }
 }
Exemple #15
0
 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);
     }
 }
Exemple #16
0
 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();
 }
Exemple #17
0
 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;
 }
Exemple #18
0
 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);
 }
Exemple #20
0
">
			<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 
Exemple #21
0
 * @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'>&nbsp;" . 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;
 }