Example #1
0
 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();
 }
Example #2
0
		<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>
Example #3
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();
 }
Example #4
0
 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();
 }
Example #5
0
 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");
 }