示例#1
0
文件: App.php 项目: joegeck/cerb4
 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');
 }
示例#2
0
文件: App.php 项目: jsjohnst/cerb4
 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');
 }
示例#3
0
 static function getFields()
 {
     return SearchFields_Ticket::getFields();
 }
示例#4
0
 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);
 }