function display($tpl = NULL) { parent::init(); $this->plugins = $this->load_plugins(); $this->mode = FSS_Input::getcmd('mode', 'pick'); $this->usergroup = FSS_Input::getInt('usergroup'); foreach ($this->plugins as $plugin) { $plugin->mode = $this->mode; } $limitstart = FSS_Input::getInt('limitstart'); $mainframe = JFactory::getApplication(); $limit = $mainframe->getUserStateFromRequest('users.limit', 'limit', 10, 'int'); $search = FSS_Input::getString('search'); $this->lists = array(); $this->lists['order_Dir'] = FSS_Input::getCmd('filter_order_Dir'); $this->lists['order'] = FSS_Input::getCmd('filter_order'); $ticket_has_groups = false; // load in ticket if there is one $this->ticketid = FSS_Input::getInt("ticketid"); if ($this->mode == "user" || $this->mode == "admin") { $this->ticket = new SupportTicket(); $this->ticket->load($this->ticketid); $this->ticket->loadCC(); $this->ticket->loadGroups(); if (count($this->ticket->groups) > 0) { $ticket_has_groups = true; } } // ticket group, default to t if we are in user or admin mode $this->ticketgroup = null; if ($ticket_has_groups && $this->mode == "user") { $this->ticketgroup = "t"; } $this->ticketgroup = FSS_Input::getcmd('ticketgroup', $this->ticketgroup); $db = JFactory::getDBO(); $qry = "SELECT * FROM #__users "; $where = array(); if ($search != "") { $search_parts = array(); $search_parts[] = "username LIKE '%" . $db->escape($search) . "%'"; $search_parts[] = "name LIKE '%" . $db->escape($search) . "%'"; $search_parts[] = "email LIKE '%" . $db->escape($search) . "%'"; $this->searchFields($search_parts); foreach ($this->plugins as $plugin) { $ids = $plugin->search($search); if (count($ids) > 0) { $search_parts[] = "id IN ('" . implode("', '", $ids) . "')"; } } $where[] = "( " . implode(" OR ", $search_parts) . " )"; } // filter by usergroup if ($this->usergroup > 0) { $where[] = "id IN (SELECT user_id FROM #__user_usergroup_map WHERE group_id = " . $db->escape($this->usergroup) . ")"; } // filter by ticket group if ($this->ticketgroup == "t") { $group_ids = array(); $group_ids[] = 0; foreach ($this->ticket->groups as $group) { $group_ids[] = $group->id; } $where[] = "id IN (SELECT user_id FROM #__fss_ticket_group_members WHERE group_id IN (" . implode(", ", $group_ids) . "))"; } elseif ($this->ticketgroup > 0) { $where[] = "id IN (SELECT user_id FROM #__fss_ticket_group_members WHERE group_id = " . $db->escape($this->ticketgroup) . ")"; } if ($this->mode == "admin") { $handlers = SupportUsers::getHandlers(false, false); $ids = array(); $ids[] = 0; foreach ($handlers as $handler) { $ids[] = $handler->id; } $where[] = "id IN (" . implode(", ", $ids) . ")"; } // add where if (count($where) > 0) { $qry .= " WHERE " . implode(" AND ", $where); } $order = FSS_Input::getCmd('filter_order'); $dir = FSS_Input::getCmd('filter_order_Dir', 'asc'); if ($order == "username" || $order == "name" || $order == "email") { // Sort ordering $qry .= " ORDER BY {$order} {$dir} "; } else { $qry .= " ORDER BY name "; } //echo $qry . "<br>"; // get max items $db->setQuery($qry); $db->query(); $maxitems = $db->getNumRows(); // select picked items $db->setQuery($qry, $limitstart, $limit); $this->users = $db->loadObjectList(); //print_p(reset($this->users)); // build pagination $this->pagination = new JPaginationEx($maxitems, $limitstart, $limit); $this->search = $search; if ($this->mode != "admin") { // load in joomla user groups $qry = "SELECT * FROM #__usergroups ORDER BY lft"; $db->setQuery($qry); $this->groups = $db->loadObjectList(); $group_index = array(); foreach ($this->groups as &$group) { $group_index[$group->id] =& $group; if ($group->parent_id == 0) { $group->level = 0; } else { $group->level = $group_index[$group->parent_id]->level + 1; } $group->display = str_repeat("- ", $group->level) . $group->title; } array_unshift($this->groups, JHTML::_('select.option', '', JText::_("JOOMLA_USERGROUP"), 'id', 'display')); $this->jgroup_select = JHTML::_('select.genericlist', $this->groups, 'usergroup', 'class="inputbox" size="1" onchange="document.fssForm.submit( );"', 'id', 'display', $this->usergroup); // load ticket groups $qry = "SELECT * FROM #__fss_ticket_group ORDER BY groupname"; $db->setQuery($qry); $this->ticketgroups = $db->loadObjectList(); if ($this->ticketid > 0 && $ticket_has_groups) { array_unshift($this->ticketgroups, JHTML::_('select.option', 't', JText::_("CURRENT_TICKET"), 'id', 'groupname')); } array_unshift($this->ticketgroups, JHTML::_('select.option', '', JText::_("ALL_TICKET_GROUPS"), 'id', 'groupname')); $this->ticketgroup_select = JHTML::_('select.genericlist', $this->ticketgroups, 'ticketgroup', 'class="inputbox" size="1" onchange="document.fssForm.submit( );"', 'id', 'groupname', $this->ticketgroup); } $this->_display(); }
<div class="controls"> <select name="batch_handler"> <option value=""><?php echo JText::_('UNCHANGED'); ?> </option> <optgroup label="<?php echo JText::_('NEW_HANDLER_'); ?> "> <option value="0"><?php echo JText::_('UNASSIGNED__TICKET_HEADER'); ?> </option> <?php $handlers = SupportUsers::getHandlers(false, true); foreach ($handlers as $handler) { echo "<option value='{$handler->id}'>{$handler->name} ({$handler->username})</option>"; } ?> </optgroup> </select> </div> </div> <!--<div class="control-group"> <label class="control-label"><?php echo JText::_("Send EMails"); ?> </label>
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(); }
function displayTicketList() { $this->getDBTime(); // load in data for search forms $this->handlers = SupportUsers::getHandlers(false, false); $this->products = SupportHelper::getProducts(); $this->statuss = SupportHelper::getStatuss(); $this->departments = SupportHelper::getDepartments(); $this->categories = SupportHelper::getCategories(); $this->priorities = SupportHelper::getPriorities(); $this->ticketgroups = SupportHelper::getTicketGroups(); $this->taglist = SupportHelper::getTags(); // load extra data for the list of tickets we have $this->ticket_list->loadTags(); $this->ticket_list->loadAttachments(); $this->ticket_list->loadGroups(); $this->ticket_list->loadLockedUsers(); $this->ticket_list->loadCustomFields(); if (FSS_Settings::get('support_show_msg_counts')) { $this->ticket_list->loadMessageCounts(); } // load in custom fields $this->customfields = FSSCF::GetAllCustomFields(true); // set the list of tickets to this->tickets $this->tickets = $this->ticket_list->tickets; $session = JFactory::getSession(); $preview = FSS_Input::getInt('preview'); if ($preview == -1) { $preview = ""; $session->clear('preview'); } if ($preview == 1 || $session->Get('preview') == 1) { $this->enablePreview(); } if ($this->refresh == 2) { include $this->snippet(JPATH_SITE . DS . 'components' . DS . 'com_fss' . DS . 'views' . DS . 'admin_support' . DS . 'snippet' . DS . '_ticket_list.php'); return; } elseif ($this->refresh) { ob_start(); include $this->snippet(JPATH_SITE . DS . 'components' . DS . 'com_fss' . DS . 'views' . DS . 'admin_support' . DS . 'snippet' . DS . '_ticket_list.php'); $contents = ob_get_clean(); $output = array(); $output['count'] = $this->count; $output['tickets'] = $contents; header("Content-Type: application/json"); echo json_encode($output); return; } return $this->_display(); }
function display($tpl = null) { global $mainframe; $document = JFactory::getDocument(); //JHTML::_( 'behavior.mootools' ); //$document->addStyleSheet( JURI::base() . 'components/com_fss/assets/slimbox/slimbox.css' ); //$document->addScript( JURI::base() .'components/com_fss/assets/slimbox/slimbox.js'); $item = $this->get('Data'); $isNew = $item->id < 1; $text = $isNew ? JText::_('New') : JText::_('Edit'); JToolBarHelper::title(JText::_('TICKET_EMAIL_ACCOUNT') . ': <small><small>[ ' . $text . ' ]</small></small>', 'fss_emailaccounts'); JToolBarHelper::apply(); JToolBarHelper::save(); JToolBarHelper::save2new(); if ($isNew) { JToolBarHelper::cancel(); } else { JToolBarHelper::cancel('cancel', 'Close'); } FSSAdminHelper::DoSubToolbar(); $db = JFactory::getDBO(); $combo = array(); $combo[] = JHTML::_('select.option', 'pop3', JText::_('POP3'), 'id', 'value'); $combo[] = JHTML::_('select.option', 'imap', JText::_('IMAP'), 'id', 'value'); $lists['type'] = JHTML::_('select.genericlist', $combo, 'type', 'class="inputbox" size="1" ', 'id', 'value', $item->type); $combo = array(); $combo[] = JHTML::_('select.option', 'markread', JText::_('MARK_EMAIL_AS_READ'), 'id', 'value'); $combo[] = JHTML::_('select.option', 'delete', JText::_('DELETE_EMAIL'), 'id', 'value'); $lists['onimport'] = JHTML::_('select.genericlist', $combo, 'onimport', 'class="inputbox" size="1" ', 'id', 'value', $item->onimport); $combo = array(); $combo[] = JHTML::_('select.option', 'registered', JText::_('REGISTERED_USERS_ONLY'), 'id', 'value'); $combo[] = JHTML::_('select.option', 'everyone', JText::_('EVERYONE'), 'id', 'value'); $lists['newticketsfrom'] = JHTML::_('select.genericlist', $combo, 'newticketsfrom', 'class="inputbox" size="1" ', 'id', 'value', $item->newticketsfrom); $query = 'SELECT id, title' . ' FROM #__fss_prod' . ' ORDER BY title'; $db->setQuery($query); $sections_prod_id = $db->loadObjectList(); $prods = array(); $prods[] = JHTML::_('select.option', '', JText::_('NO_PRODUCT'), 'id', 'title'); $sections_prod_id = array_merge($prods, $sections_prod_id); $lists['prod_id'] = JHTML::_('select.genericlist', $sections_prod_id, 'prod_id', 'class="inputbox" size="1" ', 'id', 'title', intval($item->prod_id)); $query = 'SELECT id, title' . ' FROM #__fss_ticket_dept' . ' ORDER BY title'; $db->setQuery($query); $sections_dept_id = $db->loadObjectList(); $prods = array(); $prods[] = JHTML::_('select.option', '', JText::_('NO_DEPARTMENT'), 'id', 'title'); $sections_dept_id = array_merge($prods, $sections_dept_id); $lists['dept_id'] = JHTML::_('select.genericlist', $sections_dept_id, 'dept_id', 'class="inputbox" size="1" ', 'id', 'title', intval($item->dept_id)); $query = 'SELECT id, title' . ' FROM #__fss_ticket_cat ' . ' ORDER BY title'; $db->setQuery($query); $sections_cat_id = $db->loadObjectList(); $prods = array(); $prods[] = JHTML::_('select.option', '', JText::_('NO_CATEGORY'), 'id', 'title'); $sections_cat_id = array_merge($prods, $sections_cat_id); $lists['cat_id'] = JHTML::_('select.genericlist', $sections_cat_id, 'cat_id', 'class="inputbox" size="1" ', 'id', 'title', intval($item->cat_id)); $query = 'SELECT id, title' . ' FROM #__fss_ticket_pri' . ' ORDER BY id'; $db->setQuery($query); $sections_pri_id = $db->loadObjectList(); $lists['pri_id'] = JHTML::_('select.genericlist', $sections_pri_id, 'pri_id', 'class="inputbox" size="1" ', 'id', 'title', intval($item->pri_id)); $sections_handler = SupportUsers::getHandlers(); $prods = array(); $prods[] = JHTML::_('select.option', '', JText::_('LEAVE_UNASSIGNED'), 'id', 'name'); $prods[] = JHTML::_('select.option', '-1', JText::_('AUTO_ASSIGN'), 'id', 'name'); $sections_handler = array_merge($prods, $sections_handler); $lists['handler'] = JHTML::_('select.genericlist', $sections_handler, 'handler', 'class="inputbox" size="1" ', 'id', 'name', intval($item->handler)); $combo = array(); $combo[] = JHTML::_('select.option', '0', JText::_('UNSET'), 'id', 'value'); $combo[] = JHTML::_('select.option', '1', JText::_('USE_TLS'), 'id', 'value'); $combo[] = JHTML::_('select.option', '2', JText::_('DONT_USE_TLS'), 'id', 'value'); $lists['usetls'] = JHTML::_('select.genericlist', $combo, 'usetls', 'class="inputbox" size="1" ', 'id', 'value', $item->usetls); $this->item = $item; $this->lists = $lists; parent::display($tpl); }
function showUserIn() { FSS_Helper::AddSCEditor(); $this->handlers = SupportUsers::getHandlers(false, true); $this->_display("in"); }