private function _getListAction($path, $params = array()) { @($p_page = DevblocksPlatform::importGPC($_REQUEST['p'], 'integer', 0)); @($p_group_id = DevblocksPlatform::importGPC($_REQUEST['group_id'], 'string', '')); @($p_bucket_id = DevblocksPlatform::importGPC($_REQUEST['bucket_id'], 'string', '')); @($p_is_closed = DevblocksPlatform::importGPC($_REQUEST['is_closed'], 'string', '')); @($p_is_deleted = DevblocksPlatform::importGPC($_REQUEST['is_deleted'], 'string', '')); // Group if (0 != strlen($p_group_id)) { // cannot allow override by Worker search to invalid team if (isset($params[SearchFields_Ticket::TEAM_ID])) { // this is a Worker search if (false !== array_search($p_group_id, $params[SearchFields_Ticket::TEAM_ID]->value)) { } // worker is member of group_id $params[SearchFields_Ticket::TEAM_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TEAM_ID, 'eq', intval($p_group_id)); } else { // app-level key search $params[SearchFields_Ticket::TEAM_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TEAM_ID, 'eq', intval($p_group_id)); } } // Bucket if (0 != strlen($p_bucket_id)) { $params[SearchFields_Ticket::TICKET_CATEGORY_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CATEGORY_ID, 'eq', intval($p_bucket_id)); } // Closed if (0 != strlen($p_is_closed)) { $params[SearchFields_Ticket::TICKET_CLOSED] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CLOSED, 'eq', intval($p_is_closed)); } // Deleted if (0 != strlen($p_is_deleted)) { $params[SearchFields_Ticket::TICKET_DELETED] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_DELETED, 'eq', intval($p_is_deleted)); } list($results, $null) = DAO_Ticket::search(array(), $params, 50, $p_page, SearchFields_Ticket::TICKET_UPDATED_DATE, true, false); $this->_renderResults($results, SearchFields_Ticket::getFields(), 'ticket', 'tickets'); }
function render() { $this->_sanitize(); $tpl = DevblocksPlatform::getTemplateService(); $tpl->assign('id', $this->id); $tpl->assign('view', $this); $tpl->cache_lifetime = "0"; $tpl->assign('view_fields', $this->getColumns()); $workers = DAO_Worker::getAll(); $tpl->assign('workers', $workers); $groups = DAO_Group::getAll(); $tpl->assign('groups', $groups); $buckets = DAO_Bucket::getAll(); $tpl->assign('buckets', $buckets); $ticket_fields = SearchFields_Ticket::getFields(); $tpl->assign('ticket_fields', $ticket_fields); $tpl->display('file:' . DEVBLOCKS_PLUGIN_PATH . 'cerberusweb.auditlog/templates/display/log/log_view.tpl'); }
static function getFields() { return SearchFields_Ticket::getFields(); }
static function search($columns, $params, $limit = 10, $page = 0, $sortBy = null, $sortAsc = null, $withCounts = true) { $db = DevblocksPlatform::getDatabaseService(); $fields = SearchFields_Ticket::getFields(); $total = -1; // Sanitize if (!isset($fields[$sortBy])) { $sortBy = null; } list($tables, $wheres) = parent::_parseSearchParams($params, $columns, $fields, $sortBy); $start = $page * $limit; // [JAS]: 1-based $select_sql = sprintf("SELECT " . "t.id as %s, " . "t.mask as %s, " . "t.subject as %s, " . "t.is_waiting as %s, " . "t.is_closed as %s, " . "t.is_deleted as %s, " . "t.first_wrote_address_id as %s, " . "t.last_wrote_address_id as %s, " . "t.first_message_id as %s, " . "a1.email as %s, " . "a1.num_spam as %s, " . "a1.num_nonspam as %s, " . "a2.email as %s, " . "a1.contact_org_id as %s, " . "t.created_date as %s, " . "t.updated_date as %s, " . "t.due_date as %s, " . "t.spam_training as %s, " . "t.spam_score as %s, " . "t.last_action_code as %s, " . "t.last_worker_id as %s, " . "t.next_worker_id as %s, " . "t.team_id as %s, " . "t.category_id as %s ", SearchFields_Ticket::TICKET_ID, SearchFields_Ticket::TICKET_MASK, SearchFields_Ticket::TICKET_SUBJECT, SearchFields_Ticket::TICKET_WAITING, SearchFields_Ticket::TICKET_CLOSED, SearchFields_Ticket::TICKET_DELETED, SearchFields_Ticket::TICKET_FIRST_WROTE_ID, SearchFields_Ticket::TICKET_LAST_WROTE_ID, SearchFields_Ticket::TICKET_FIRST_MESSAGE_ID, SearchFields_Ticket::TICKET_FIRST_WROTE, SearchFields_Ticket::TICKET_FIRST_WROTE_SPAM, SearchFields_Ticket::TICKET_FIRST_WROTE_NONSPAM, SearchFields_Ticket::TICKET_LAST_WROTE, SearchFields_Ticket::TICKET_FIRST_CONTACT_ORG_ID, SearchFields_Ticket::TICKET_CREATED_DATE, SearchFields_Ticket::TICKET_UPDATED_DATE, SearchFields_Ticket::TICKET_DUE_DATE, SearchFields_Ticket::TICKET_SPAM_TRAINING, SearchFields_Ticket::TICKET_SPAM_SCORE, SearchFields_Ticket::TICKET_LAST_ACTION_CODE, SearchFields_Ticket::TICKET_LAST_WORKER_ID, SearchFields_Ticket::TICKET_NEXT_WORKER_ID, SearchFields_Ticket::TICKET_TEAM_ID, SearchFields_Ticket::TICKET_CATEGORY_ID); $join_sql = "FROM ticket t " . "INNER JOIN address a1 ON (t.first_wrote_address_id=a1.id) " . "INNER JOIN address a2 ON (t.last_wrote_address_id=a2.id) " . (isset($tables['ra']) ? "INNER JOIN requester r ON (r.ticket_id=t.id) " : " ") . (isset($tables['ra']) ? "INNER JOIN address ra ON (ra.id=r.address_id) " : " ") . (isset($tables['msg']) || isset($tables['mc']) ? "INNER JOIN message msg ON (msg.ticket_id=t.id) " : " ") . (isset($tables['mh']) ? "INNER JOIN message_header mh ON (mh.message_id=t.first_message_id) " : " ") . (isset($tables['mc']) ? "INNER JOIN message_content mc ON (mc.message_id=msg.id) " : " "); // Org joins if (isset($tables['o'])) { $select_sql .= ", o.name as o_name "; $join_sql .= "LEFT JOIN contact_org o ON (a1.contact_org_id=o.id) "; } // Custom field joins list($select_sql, $join_sql, $has_multiple_values) = self::_appendSelectJoinSqlForCustomFieldTables($tables, $params, 't.id', $select_sql, $join_sql); $where_sql = "" . (!empty($wheres) ? sprintf("WHERE %s ", implode(' AND ', $wheres)) : ""); $sort_sql = !empty($sortBy) ? sprintf("ORDER BY %s %s ", $sortBy, $sortAsc || is_null($sortAsc) ? "ASC" : "DESC") : " "; $sql = $select_sql . $join_sql . $where_sql . ($has_multiple_values ? 'GROUP BY t.id ' : '') . $sort_sql; $rs = $db->SelectLimit($sql, $limit, $start) or die(__CLASS__ . '(' . __LINE__ . ')' . ':' . $db->ErrorMsg()); /* @var $rs ADORecordSet */ $results = array(); if (is_a($rs, 'ADORecordSet')) { while (!$rs->EOF) { $result = array(); foreach ($rs->fields as $f => $v) { $result[$f] = $v; } $ticket_id = intval($rs->fields[SearchFields_Ticket::TICKET_ID]); $results[$ticket_id] = $result; $rs->MoveNext(); } } // [JAS]: Count all if ($withCounts) { $count_sql = ($has_multiple_values ? "SELECT COUNT(DISTINCT t.id) " : "SELECT COUNT(t.id) ") . $join_sql . $where_sql; $total = $db->GetOne($count_sql); } return array($results, $total); }