function staffviewall_display() { global $xoopsOption, $xoopsTpl, $xoopsConfig, $xoopsUser, $xoopsLogger, $xoopsUserIsAdmin; global $xhelp_isStaff, $sort_order, $start, $limit, $xhelp_module_header, $state_opt, $aSavedSearches; if (!$xhelp_isStaff) { redirect_header(XHELP_BASE_URL . "/" . basename(__FILE__), 3, _NOPERM); } //Sanity Check: sort / order column valid $sort = @$_REQUEST['sort']; $order = @$_REQUEST['order']; $sort_columns = array('id' => 'DESC', 'priority' => 'DESC', 'elapsed' => 'ASC', 'lastupdate' => 'ASC', 'status' => 'ASC', 'subject' => 'ASC', 'department' => 'ASC', 'ownership' => 'ASC', 'uid' => 'ASC'); $sort = array_key_exists(strtolower($sort), $sort_columns) ? $sort : 'id'; $order = in_array(strtoupper($order), $sort_order) ? $order : $sort_columns[$sort]; $uid = $xoopsUser->getVar('uid'); $dept = intval(isset($_REQUEST['dept']) ? $_REQUEST['dept'] : 0); $status = intval(isset($_REQUEST['status']) ? $_REQUEST['status'] : -1); $ownership = intval(isset($_REQUEST['ownership']) ? $_REQUEST['ownership'] : -1); $state = intval(isset($_REQUEST['state']) ? $_REQUEST['state'] : -1); $xhelpConfig =& xhelpGetModuleConfig(); $hTickets =& xhelpGetHandler('ticket'); $hMembership =& xhelpGetHandler('membership'); if ($limit == 0) { $limit = $xhelpConfig['xhelp_staffTicketCount']; } elseif ($limit == -1) { $limit = 0; } //Prepare Database Query and Querystring $crit = new CriteriaCompo(new Criteria('uid', $uid, '=', 'j')); $qs = array('op' => 'staffViewAll', 'start' => $start, 'limit' => $limit); if ($dept) { $qs['dept'] = $dept; $crit->add(new Criteria('department', $dept, '=', 't')); } if ($status != -1) { $qs['status'] = $status; $crit->add(new Criteria('status', $status, '=', 't')); } if ($ownership != -1) { $qs['ownership'] = $ownership; $crit->add(new Criteria('ownership', $ownership, '=', 't')); } if ($state != -1) { $qs['state'] = $state; $crit->add(new Criteria('state', $state, '=', 's')); } $crit->setLimit($limit); $crit->setStart($start); $crit->setSort($sort); $crit->setOrder($order); //Setup Column Sorting Vars $tpl_cols = array(); foreach ($sort_columns as $col => $initsort) { $col_qs = array('sort' => $col); //Check if we need to sort by current column if ($sort == $col) { $col_qs['order'] = $order == $sort_order[0] ? $sort_order[1] : $sort_order[0]; $col_sortby = true; } else { $col_qs['order'] = $initsort; $col_sortby = false; } $tpl_cols[$col] = array('url' => xhelpMakeURI(basename(__FILE__), array_merge($qs, $col_qs)), 'urltitle' => _XHELP_TEXT_SORT_TICKETS, 'sortby' => $col_sortby, 'sortdir' => strtolower($col_qs['order'])); } $allTickets = $hTickets->getObjectsByStaff($crit, true); $count = $hTickets->getCountByStaff($crit); $nav = new XoopsPageNav($count, $limit, $start, 'start', "op=staffViewAll&limit={$limit}&sort={$sort}&order={$order}&dept={$dept}&status={$status}&ownership={$ownership}"); $tickets = array(); $allUsers = array(); $depts =& $hMembership->membershipByStaff($xoopsUser->getVar('uid'), true); //All Departments for Staff Member foreach ($allTickets as $ticket) { $deptid = $ticket->getVar('department'); $tickets[] = array('id' => $ticket->getVar('id'), 'uid' => $ticket->getVar('uid'), 'subject' => xoops_substr($ticket->getVar('subject'), 0, 35), 'full_subject' => $ticket->getVar('subject'), 'description' => $ticket->getVar('description'), 'department' => _safeDepartmentName($depts[$deptid]), 'departmentid' => $deptid, 'departmenturl' => xhelpMakeURI('index.php', array('op' => 'staffViewAll', 'dept' => $deptid)), 'priority' => $ticket->getVar('priority'), 'status' => xhelpGetStatus($ticket->getVar('status')), 'posted' => $ticket->posted(), 'ownership' => _XHELP_MESSAGE_NOOWNER, 'ownerid' => $ticket->getVar('ownership'), 'closedBy' => $ticket->getVar('closedBy'), 'closedByUname' => '', 'totalTimeSpent' => $ticket->getVar('totalTimeSpent'), 'uname' => '', 'userinfo' => XHELP_SITE_URL . '/userinfo.php?uid=' . $ticket->getVar('uid'), 'ownerinfo' => '', 'url' => XHELP_BASE_URL . '/ticket.php?id=' . $ticket->getVar('id'), 'elapsed' => $ticket->elapsed(), 'lastUpdate' => $ticket->lastUpdate(), 'overdue' => $ticket->isOverdue()); $allUsers[$ticket->getVar('uid')] = ''; $allUsers[$ticket->getVar('ownership')] = ''; $allUsers[$ticket->getVar('closedBy')] = ''; } $has_allTickets = count($allTickets) > 0; unset($allTickets); //Get all member information needed on this page $crit = new Criteria('uid', "(" . implode(array_keys($allUsers), ',') . ")", 'IN'); $users =& xhelpGetUsers($crit, $xhelpConfig['xhelp_displayName']); unset($allUsers); $staff_opt =& xhelpGetStaff($xhelpConfig['xhelp_displayName']); for ($i = 0; $i < count($tickets); $i++) { if (isset($users[$tickets[$i]['uid']])) { $tickets[$i]['uname'] = $users[$tickets[$i]['uid']]; } else { $tickets[$i]['uname'] = $xoopsConfig['anonymous']; } if ($tickets[$i]['ownerid']) { if (isset($users[$tickets[$i]['ownerid']])) { $tickets[$i]['ownership'] = $users[$tickets[$i]['ownerid']]; $tickets[$i]['ownerinfo'] = XHELP_SITE_URL . '/userinfo.php?uid=' . $tickets[$i]['ownerid']; } } if ($tickets[$i]['closedBy']) { if (isset($users[$tickets[$i]['closedBy']])) { $tickets[$i]['closedByUname'] = $users[$tickets[$i]['closedBy']]; } } } $xoopsOption['template_main'] = 'xhelp_staff_viewall.html'; // Set template require XOOPS_ROOT_PATH . '/header.php'; // Include the page header $javascript = "<script type=\"text/javascript\" src=\"" . XHELP_BASE_URL . "/include/functions.js\"></script>\r\n<script type=\"text/javascript\" src='" . XHELP_SCRIPT_URL . "/changeSelectedState.php?client'></script>\r\n<script type=\"text/javascript\">\r\n<!--\r\nfunction states_onchange()\r\n{\r\n state = xoopsGetElementById('state');\r\n var sH = new xhelpweblib(stateHandler);\r\n sH.statusesbystate(state.value);\r\n}\r\n\r\nvar stateHandler = {\r\n statusesbystate: function(result){\r\n var statuses = gE('status');\r\n xhelpFillSelect(statuses, result);\r\n }\r\n}\r\n\r\nfunction window_onload()\r\n{\r\n xhelpDOMAddEvent(xoopsGetElementById('state'), 'change', states_onchange, true);\r\n}\r\n\r\nwindow.setTimeout('window_onload()', 1500);\r\n//-->\r\n</script>"; $xoopsTpl->assign('xhelp_baseURL', XHELP_BASE_URL); $xoopsTpl->assign('xhelp_imagePath', XHELP_IMAGE_URL . '/'); $xoopsTpl->assign('xhelp_cols', $tpl_cols); $xoopsTpl->assign('xhelp_allTickets', $tickets); $xoopsTpl->assign('xhelp_has_tickets', $has_allTickets); $xoopsTpl->assign('xhelp_priorities', array(5, 4, 3, 2, 1)); $xoopsTpl->assign('xoops_module_header', $javascript . $xhelp_module_header); $xoopsTpl->assign('xhelp_priorities_desc', array('5' => _XHELP_PRIORITY5, '4' => _XHELP_PRIORITY4, '3' => _XHELP_PRIORITY3, '2' => _XHELP_PRIORITY2, '1' => _XHELP_PRIORITY1)); if ($limit != 0) { $xoopsTpl->assign('xhelp_pagenav', $nav->renderNav()); } $xoopsTpl->assign('xhelp_limit_options', array(-1 => _XHELP_TEXT_SELECT_ALL, 10 => '10', 15 => '15', 20 => '20', 30 => '30')); $xoopsTpl->assign('xhelp_filter', array('department' => $dept, 'status' => $status, 'state' => $state, 'ownership' => $ownership, 'limit' => $limit, 'start' => $start, 'sort' => $sort, 'order' => $order)); $xoopsTpl->append('xhelp_department_values', 0); $xoopsTpl->append('xhelp_department_options', _XHELP_TEXT_SELECT_ALL); if ($xhelpConfig['xhelp_deptVisibility'] == 1) { // Apply dept visibility to staff members? $hMembership =& xhelpGetHandler('membership'); $depts =& $hMembership->getVisibleDepartments($xoopsUser->getVar('uid')); } foreach ($depts as $xhelp_id => $obj) { $xoopsTpl->append('xhelp_department_values', $xhelp_id); $xoopsTpl->append('xhelp_department_options', $obj->getVar('department')); } $xoopsTpl->assign('xhelp_ownership_options', array_values($staff_opt)); $xoopsTpl->assign('xhelp_ownership_values', array_keys($staff_opt)); $xoopsTpl->assign('xhelp_state_options', array_keys($state_opt)); $xoopsTpl->assign('xhelp_state_values', array_values($state_opt)); $xoopsTpl->assign('xhelp_savedSearches', $aSavedSearches); $hStatus =& xhelpGetHandler('status'); $crit = new Criteria('', ''); $crit->setSort('description'); $crit->setOrder('ASC'); $statuses =& $hStatus->getObjects($crit); $xoopsTpl->append('xhelp_status_options', _XHELP_TEXT_SELECT_ALL); $xoopsTpl->append('xhelp_status_values', -1); foreach ($statuses as $status) { $xoopsTpl->append('xhelp_status_options', $status->getVar('description')); $xoopsTpl->append('xhelp_status_values', $status->getVar('id')); } $xoopsTpl->assign('xhelp_department_current', $dept); $xoopsTpl->assign('xhelp_status_current', $status); $xoopsTpl->assign('xhelp_current_file', basename(__FILE__)); $xoopsTpl->assign('xhelp_text_allTickets', _XHELP_TEXT_ALL_TICKETS); require XOOPS_ROOT_PATH . '/footer.php'; }
$col_sortby = true; } else { $col_qs_order = $order; $col_sortby = false; } $tpl_cols[$col] = array('url' => "search.php?{$pagenav_vars}&start={$start}&sort={$col}&order={$col_qs_order}", 'urltitle' => _XHELP_TEXT_SORT_TICKETS, 'sortby' => $col_sortby, 'sortdir' => strtolower($col_qs_order)); } $xoopsTpl->assign('xhelp_cols', $tpl_cols); } else { $xoopsTpl->assign('xhelp_viewResults', $viewResults); } $xoopsTpl->assign('xhelp_savedSearches', $aSavedSearches); $xoopsTpl->assign('xhelp_text_allTickets', _XHELP_TEXT_SEARCH_RESULTS); $xoopsTpl->assign('xhelp_priorities', array(5, 4, 3, 2, 1)); $xoopsTpl->assign('xhelp_priorities_desc', array('5' => _XHELP_PRIORITY5, '4' => _XHELP_PRIORITY4, '3' => _XHELP_PRIORITY3, '2' => _XHELP_PRIORITY2, '1' => _XHELP_PRIORITY1)); $staff =& xhelpGetStaff($displayName); $xoopsTpl->assign('xhelp_staff', $staff); $hMember =& xhelpGetHandler('membership'); if ($xoopsModuleConfig['xhelp_deptVisibility'] == 1) { // Apply dept visibility to staff members? $hMembership =& xhelpGetHandler('membership'); $depts =& $hMembership->getVisibleDepartments($xoopsUser->getVar('uid')); } else { $depts =& $hMember->membershipByStaff($xoopsUser->getVar('uid')); } foreach ($depts as $dept) { $myDepts[$dept->getVar('id')] = $dept->getVar('department'); } unset($depts); asort($myDepts); $myDepts[-1] = _XHELP_TEXT_SELECT_ALL;