示例#1
0
文件: App.php 项目: Hildy/cerb5
 function showWatcherPanelAction()
 {
     @($id = DevblocksPlatform::importGPC($_REQUEST['id'], 'integer', 0));
     @($view_id = DevblocksPlatform::importGPC($_REQUEST['view_id']));
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('path', $this->_TPL_PATH);
     $tpl->assign('view_id', $view_id);
     $active_worker = CerberusApplication::getActiveWorker();
     if (null != ($filter = DAO_WatcherMailFilter::get($id))) {
         $tpl->assign('filter', $filter);
     }
     $groups = DAO_Group::getAll();
     $tpl->assign('groups', $groups);
     $buckets = DAO_Bucket::getAll();
     $tpl->assign('buckets', $buckets);
     $group_buckets = DAO_Bucket::getTeams();
     $tpl->assign('group_buckets', $group_buckets);
     $memberships = $active_worker->getMemberships();
     $tpl->assign('memberships', $memberships);
     if (null == @($worker_id = $filter->worker_id)) {
         $worker_id = $active_worker->id;
     }
     $addresses = DAO_AddressToWorker::getByWorker($worker_id);
     $tpl->assign('addresses', $addresses);
     $tpl->assign('workers', DAO_Worker::getAllActive());
     $tpl->assign('all_workers', DAO_Worker::getAll());
     // Custom Fields: Ticket
     $ticket_fields = DAO_CustomField::getBySource(ChCustomFieldSource_Ticket::ID);
     $tpl->assign('ticket_fields', $ticket_fields);
     // Custom Fields: Address
     $address_fields = DAO_CustomField::getBySource(ChCustomFieldSource_Address::ID);
     $tpl->assign('address_fields', $address_fields);
     // Custom Fields: Orgs
     $org_fields = DAO_CustomField::getBySource(ChCustomFieldSource_Org::ID);
     $tpl->assign('org_fields', $org_fields);
     $tpl->display('file:' . $this->_TPL_PATH . 'preferences/peek.tpl');
 }
示例#2
0
文件: groups.php 项目: Hildy/cerb5
 function showInboxFilterPanelAction()
 {
     @($id = DevblocksPlatform::importGPC($_REQUEST['id'], 'integer', 0));
     @($group_id = DevblocksPlatform::importGPC($_REQUEST['group_id'], 'integer', 0));
     @($ticket_id = DevblocksPlatform::importGPC($_REQUEST['ticket_id'], 'integer', 0));
     @($view_id = DevblocksPlatform::importGPC($_REQUEST['view_id'], 'string', ''));
     $active_worker = CerberusApplication::getActiveWorker();
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl_path = $this->_TPL_PATH;
     $tpl->assign('path', $tpl_path);
     $tpl->assign('group_id', $group_id);
     $tpl->assign('view_id', $view_id);
     if (null != ($filter = DAO_GroupInboxFilter::get($id))) {
         $tpl->assign('filter', $filter);
     }
     // Make sure we're allowed to change this group's setup
     if (!$active_worker->isTeamManager($group_id) && !$active_worker->is_superuser) {
         return;
     }
     // Load the example ticket + headers if provided
     if (!empty($ticket_id)) {
         $ticket = DAO_Ticket::getTicket($ticket_id);
         $tpl->assign('ticket', $ticket);
         $messages = $ticket->getMessages();
         $message = array_shift($messages);
         /* @var $message CerberusMessage */
         $message_headers = $message->getHeaders();
         $tpl->assign('message', $message);
         $tpl->assign('message_headers', $message_headers);
     }
     $category_name_hash = DAO_Bucket::getCategoryNameHash();
     $tpl->assign('category_name_hash', $category_name_hash);
     $groups = DAO_Group::getAll();
     $tpl->assign('groups', $groups);
     $team_categories = DAO_Bucket::getTeams();
     $tpl->assign('team_categories', $team_categories);
     $workers = DAO_Worker::getAll();
     $tpl->assign('workers', $workers);
     // Custom Fields: Address
     $address_fields = DAO_CustomField::getBySource(ChCustomFieldSource_Address::ID);
     $tpl->assign('address_fields', $address_fields);
     // Custom Fields: Orgs
     $org_fields = DAO_CustomField::getBySource(ChCustomFieldSource_Org::ID);
     $tpl->assign('org_fields', $org_fields);
     // Custom Fields: Tickets
     $ticket_fields = DAO_CustomField::getBySource(ChCustomFieldSource_Ticket::ID);
     $tpl->assign('ticket_fields', $ticket_fields);
     $tpl->display('file:' . $tpl_path . 'groups/manage/filters/peek.tpl');
 }
示例#3
0
 function showContactHistoryAction()
 {
     $translate = DevblocksPlatform::getTranslationService();
     @($ticket_id = DevblocksPlatform::importGPC($_REQUEST['ticket_id'], 'integer'));
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('path', $this->_TPL_PATH);
     $ticket = DAO_Ticket::getTicket($ticket_id);
     $requesters = $ticket->getRequesters();
     $contact = DAO_Address::get($ticket->first_wrote_address_id);
     $tpl->assign('contact', $contact);
     $visit = CerberusApplication::getVisit();
     /* @var $visit CerberusVisit */
     $view = C4_AbstractViewLoader::getView('', 'contact_history');
     if (null == $view) {
         $view = new C4_TicketView();
         $view->id = 'contact_history';
         $view->name = $translate->_('addy_book.history.view.title');
         $view->view_columns = array(SearchFields_Ticket::TICKET_LAST_ACTION_CODE, SearchFields_Ticket::TICKET_CREATED_DATE, SearchFields_Ticket::TICKET_TEAM_ID, SearchFields_Ticket::TICKET_CATEGORY_ID);
         $view->params = array();
         $view->renderLimit = 10;
         $view->renderSortBy = SearchFields_Ticket::TICKET_CREATED_DATE;
         $view->renderSortAsc = false;
     }
     $view->name = vsprintf($translate->_('addy_book.history.view.requester'), intval(count($requesters)));
     $view->params = array(SearchFields_Ticket::REQUESTER_ID => new DevblocksSearchCriteria(SearchFields_Ticket::REQUESTER_ID, 'in', array_keys($requesters)), SearchFields_Ticket::TICKET_DELETED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_DELETED, DevblocksSearchCriteria::OPER_EQ, 0));
     $view->renderPage = 0;
     $tpl->assign('view', $view);
     C4_AbstractViewLoader::setView($view->id, $view);
     $workers = DAO_Worker::getAll();
     $tpl->assign('workers', $workers);
     $teams = DAO_Group::getAll();
     $tpl->assign('teams', $teams);
     $buckets = DAO_Bucket::getAll();
     $tpl->assign('buckets', $buckets);
     $team_categories = DAO_Bucket::getTeams();
     $tpl->assign('team_categories', $team_categories);
     $tpl->display('file:' . $this->_TPL_PATH . 'display/modules/history/index.tpl');
 }
示例#4
0
文件: contacts.php 项目: Hildy/cerb5
 function showTabHistoryAction()
 {
     $translate = DevblocksPlatform::getTranslationService();
     @($org = DevblocksPlatform::importGPC($_REQUEST['org']));
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('path', $this->_TPL_PATH);
     $contact = DAO_ContactOrg::get($org);
     $tpl->assign('contact', $contact);
     $visit = CerberusApplication::getVisit();
     /* @var $visit CerberusVisit */
     $tickets_view = C4_AbstractViewLoader::getView('contact_history');
     // All org contacts
     $people = DAO_Address::getWhere(sprintf("%s = %d", DAO_Address::CONTACT_ORG_ID, $contact->id));
     if (null == $tickets_view) {
         $tickets_view = new C4_TicketView();
         $tickets_view->id = 'contact_history';
         $tickets_view->name = $translate->_('addy_book.history.view_title');
         $tickets_view->view_columns = array(SearchFields_Ticket::TICKET_LAST_ACTION_CODE, SearchFields_Ticket::TICKET_CREATED_DATE, SearchFields_Ticket::TICKET_TEAM_ID, SearchFields_Ticket::TICKET_CATEGORY_ID);
         $tickets_view->params = array();
         $tickets_view->renderLimit = 10;
         $tickets_view->renderPage = 0;
         $tickets_view->renderSortBy = SearchFields_Ticket::TICKET_CREATED_DATE;
         $tickets_view->renderSortAsc = false;
     }
     @($tickets_view->name = $translate->_('ticket.requesters') . ": " . htmlspecialchars($contact->name) . ' - ' . intval(count($people)) . ' contact(s)');
     $tickets_view->params = array(SearchFields_Ticket::REQUESTER_ID => new DevblocksSearchCriteria(SearchFields_Ticket::REQUESTER_ID, 'in', array_keys($people)), SearchFields_Ticket::TICKET_DELETED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_DELETED, DevblocksSearchCriteria::OPER_EQ, 0));
     $tpl->assign('contact_history', $tickets_view);
     C4_AbstractViewLoader::setView($tickets_view->id, $tickets_view);
     $workers = DAO_Worker::getAll();
     $tpl->assign('workers', $workers);
     $teams = DAO_Group::getAll();
     $tpl->assign('teams', $teams);
     $buckets = DAO_Bucket::getAll();
     $tpl->assign('buckets', $buckets);
     $team_categories = DAO_Bucket::getTeams();
     $tpl->assign('team_categories', $team_categories);
     $tpl->display('file:' . $this->_TPL_PATH . 'contacts/orgs/tabs/history.tpl');
     exit;
 }
示例#5
0
 function render()
 {
     $tpl = DevblocksPlatform::getTemplateService();
     $active_worker = CerberusApplication::getActiveWorker();
     $memberships = $active_worker->getMemberships();
     $response = DevblocksPlatform::getHttpResponse();
     @($section = $response->path[1]);
     //print_r($_REQUEST);exit();
     //@$page = DevblocksPlatform::importGPC($_GET['password']);
     @($page = DevblocksPlatform::importGPC($_REQUEST['page'], 'integer'));
     if ($page == NULL) {
         $page = 0;
     }
     if (isset($_POST['a2'])) {
         @($section = $_POST['a2']);
     } else {
         @($section = $response->path[2]);
     }
     //print_r($section);
     //echo $section;
     switch ($section) {
         case 'search':
             $title = 'Search';
             $query = $_POST['query'];
             if ($query && false === strpos($query, '*')) {
                 $query = '*' . $query . '*';
             }
             if (!is_null($query)) {
                 $params = array();
                 $type = $_POST['type'];
                 switch ($type) {
                     case "mask":
                         $params[SearchFields_Ticket::TICKET_MASK] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_MASK, DevblocksSearchCriteria::OPER_LIKE, strtoupper($query));
                         break;
                     case "sender":
                         $params[SearchFields_Ticket::TICKET_FIRST_WROTE] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_FIRST_WROTE, DevblocksSearchCriteria::OPER_LIKE, strtolower($query));
                         break;
                     case "subject":
                         $params[SearchFields_Ticket::TICKET_SUBJECT] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_SUBJECT, DevblocksSearchCriteria::OPER_LIKE, $query);
                         break;
                     case "content":
                         $params[SearchFields_Ticket::TICKET_MESSAGE_CONTENT] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_MESSAGE_CONTENT, DevblocksSearchCriteria::OPER_LIKE, $query);
                         break;
                 }
             } else {
                 //show the search form because no search has been submitted
                 $tpl->display('file:' . dirname(__FILE__) . '/templates/tickets/search.tpl');
                 return;
             }
             break;
         case 'sidebar':
             $groups = DAO_Group::getAll();
             $tpl->assign('groups', $groups);
             $group_buckets = DAO_Bucket::getTeams();
             $tpl->assign('group_buckets', $group_buckets);
             $workers = DAO_Worker::getAll();
             $tpl->assign('workers', $workers);
             $group_counts = DAO_Overview::getGroupTotals();
             $tpl->assign('group_counts', $group_counts);
             $waiting_counts = DAO_Overview::getWaitingTotals();
             $tpl->assign('waiting_counts', $waiting_counts);
             $worker_counts = DAO_Overview::getWorkerTotals();
             $tpl->assign('worker_counts', $worker_counts);
             $tpl->display('file:' . dirname(__FILE__) . '/templates/tickets/sidebar.tpl');
             return;
             break;
         case 'overview':
         default:
             $workers = DAO_Worker::getAll();
             $group_buckets = DAO_Bucket::getTeams();
             $groups = DAO_Group::getAll();
             @($filter = $response->path[3]);
             switch ($filter) {
                 case 'group':
                     @($filter_group_id = $response->path[4]);
                     $params = array(SearchFields_Ticket::TICKET_CLOSED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CLOSED, '=', CerberusTicketStatus::OPEN), SearchFields_Ticket::TICKET_WAITING => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_WAITING, '=', 0), SearchFields_Ticket::TICKET_NEXT_WORKER_ID => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_NEXT_WORKER_ID, '=', 0));
                     if (!is_null($filter_group_id) && isset($groups[$filter_group_id])) {
                         $tpl->assign('filter_group_id', $filter_group_id);
                         $title = $groups[$filter_group_id]->name;
                         $params[SearchFields_Ticket::TICKET_TEAM_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_TEAM_ID, '=', $filter_group_id);
                         @($filter_bucket_id = $response->path[5]);
                         if (!is_null($filter_bucket_id)) {
                             $tpl->assign('filter_bucket_id', $filter_bucket_id);
                             @($title .= ': ' . ($filter_bucket_id == 0 ? 'Inbox' : $group_buckets[$filter_group_id][$filter_bucket_id]->name));
                             $params[SearchFields_Ticket::TICKET_CATEGORY_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CATEGORY_ID, '=', $filter_bucket_id);
                         } else {
                             @($title .= ' (Spam Filtered)');
                             $params[SearchFields_Ticket::TICKET_SPAM_SCORE] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_SPAM_SCORE, '<=', '0.9000');
                         }
                     }
                     break;
                 case 'waiting':
                     @($filter_waiting_id = $response->path[4]);
                     $params = array(SearchFields_Ticket::TICKET_CLOSED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CLOSED, '=', CerberusTicketStatus::OPEN), SearchFields_Ticket::TICKET_WAITING => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_WAITING, '=', 1));
                     if (!is_null($filter_waiting_id) && isset($groups[$filter_waiting_id])) {
                         $tpl->assign('filter_waiting_id', $filter_waiting_id);
                         $title = '[Waiting] ' . $groups[$filter_waiting_id]->name;
                         $params[SearchFields_Ticket::TICKET_TEAM_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_TEAM_ID, '=', $filter_waiting_id);
                         @($filter_bucket_id = $response->path[5]);
                         if (!is_null($filter_bucket_id)) {
                             $tpl->assign('filter_bucket_id', $filter_bucket_id);
                             @($title .= ': ' . ($filter_bucket_id == 0 ? 'Inbox' : $group_buckets[$filter_waiting_id][$filter_bucket_id]->name));
                             $params[SearchFields_Ticket::TICKET_CATEGORY_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CATEGORY_ID, '=', $filter_bucket_id);
                         }
                     }
                     break;
                 case 'worker':
                     @($filter_worker_id = $response->path[4]);
                     $params = array(SearchFields_Ticket::TICKET_CLOSED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CLOSED, '=', CerberusTicketStatus::OPEN), SearchFields_Ticket::TICKET_WAITING => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_WAITING, '=', 0), $params[SearchFields_Ticket::TICKET_TEAM_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_TEAM_ID, 'in', array_keys($memberships)));
                     if (!is_null($filter_worker_id)) {
                         $tpl->assign('filter_bucket_id', $filter_bucket_id);
                         $title = "For " . $workers[$filter_worker_id]->getName();
                         $params[SearchFields_Ticket::TICKET_NEXT_WORKER_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_NEXT_WORKER_ID, '=', $filter_worker_id);
                         @($filter_group_id = $response->path[5]);
                         if (!is_null($filter_group_id) && isset($groups[$filter_group_id])) {
                             $title .= ' in ' . $groups[$filter_group_id]->name;
                             $params[SearchFields_Ticket::TICKET_TEAM_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_TEAM_ID, '=', $filter_group_id);
                         }
                     }
                     break;
                 case 'all':
                 default:
                     $title = 'All (Spam Filtered)';
                     $params = array(SearchFields_Ticket::TICKET_CLOSED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CLOSED, '=', CerberusTicketStatus::OPEN), SearchFields_Ticket::TICKET_WAITING => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_WAITING, '=', 0), SearchFields_Ticket::TICKET_NEXT_WORKER_ID => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_NEXT_WORKER_ID, '=', 0), SearchFields_Ticket::TICKET_SPAM_SCORE => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_SPAM_SCORE, '<=', '0.9000'), SearchFields_Ticket::TICKET_TEAM_ID => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_TEAM_ID, 'in', array_keys($memberships)));
                     break;
             }
             //				$params = array(
             //						new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CLOSED,'=',CerberusTicketStatus::OPEN),
             //						new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_NEXT_WORKER_ID,'=',0),
             //						new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_SPAM_SCORE,'<=','0.9000'),
             //						new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_TEAM_ID,'in',array_keys($memberships))
             //				);
             //				$title = "Overview";
             break;
     }
     $mobileView = C4_AbstractViewLoader::getView('', "VIEW_MOBILE");
     //print_r($mobileView);
     if ($mobileView == NULL) {
         $mobileView = new C4_MobileTicketView();
         //C4_TicketView();
     }
     $mobileView->id = "VIEW_MOBILE";
     $mobileView->name = $title;
     $mobileView->view_columns = array(SearchFields_Ticket::TICKET_LAST_ACTION_CODE);
     $mobileView->params = $params;
     $mobileView->renderLimit = 10;
     //$overViewDefaults->renderLimit;
     $mobileView->renderPage = $page;
     $mobileView->renderSortBy = SearchFields_Ticket::TICKET_UPDATED_DATE;
     $mobileView->renderSortAsc = 0;
     C4_AbstractViewLoader::setView($mobileView->id, $mobileView);
     $views[] = $mobileView;
     $tpl->assign('views', $views);
     if ($filter == null) {
         $filter = 'all';
     }
     $tpl->assign('filter', $filter);
     $fid = $response->path[4];
     if ($fid == null) {
         $fid = '0';
     }
     $tpl->assign('fid', $fid);
     $bucket_id = $response->path[5];
     if ($bucket_id == null) {
         $buket_id = 0;
     }
     $tpl->assign('bid', $bucket_id);
     $tpl->assign('title', $title);
     $tpl->assign('tickets', $tickets[0]);
     $tpl->assign('next_page', $page + 1);
     $tpl->assign('prev_page', $page - 1);
     //print_r($tickets);exit();
     $tpl->display('file:' . dirname(__FILE__) . '/templates/tickets.tpl');
 }
示例#6
0
文件: App.php 项目: joegeck/cerb4
 function showTab()
 {
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('path', $this->tpl_path);
     $tpl->cache_lifetime = "0";
     $worker = CerberusApplication::getActiveWorker();
     $tpl->assign('worker', $worker);
     $groups = DAO_Group::getAll();
     $tpl->assign('groups', $groups);
     $group_buckets = DAO_Bucket::getTeams();
     $tpl->assign('group_buckets', $group_buckets);
     $memberships = $worker->getMemberships();
     $tpl->assign('memberships', $memberships);
     $addresses = DAO_AddressToWorker::getByWorker($worker->id);
     $tpl->assign('addresses', $addresses);
     @($notifications = DAO_WorkerMailForward::getWhere(sprintf("%s = %d", DAO_WorkerMailForward::WORKER_ID, $worker->id)));
     $tpl->assign('notifications', $notifications);
     $assign_notify_email = DAO_WorkerPref::get($worker->id, ChWatchersPlugin::WORKER_PREF_ASSIGN_EMAIL, '');
     $tpl->assign('assign_notify_email', $assign_notify_email);
     $tpl->display('file:' . $this->tpl_path . '/preferences/watchers.tpl');
 }
示例#7
0
 function renderCriteria($field)
 {
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('id', $this->id);
     $tpl_path = DEVBLOCKS_PLUGIN_PATH . 'cerberusweb.core/templates/';
     switch ($field) {
         case SearchFields_Ticket::TICKET_ID:
         case SearchFields_Ticket::TICKET_MASK:
         case SearchFields_Ticket::TICKET_SUBJECT:
         case SearchFields_Ticket::TICKET_FIRST_WROTE:
         case SearchFields_Ticket::TICKET_LAST_WROTE:
         case SearchFields_Ticket::REQUESTER_ADDRESS:
         case SearchFields_Ticket::TICKET_INTERESTING_WORDS:
         case SearchFields_Ticket::ORG_NAME:
             $tpl->display('file:' . $tpl_path . 'internal/views/criteria/__string.tpl');
             break;
         case SearchFields_Ticket::TICKET_MESSAGE_CONTENT:
             $tpl->display('file:' . $tpl_path . 'internal/views/criteria/__fulltext.tpl');
             break;
         case SearchFields_Ticket::TICKET_FIRST_WROTE_SPAM:
         case SearchFields_Ticket::TICKET_FIRST_WROTE_NONSPAM:
             $tpl->display('file:' . $tpl_path . 'internal/views/criteria/__number.tpl');
             break;
         case SearchFields_Ticket::TICKET_WAITING:
         case SearchFields_Ticket::TICKET_DELETED:
         case SearchFields_Ticket::TICKET_CLOSED:
             $tpl->display('file:' . $tpl_path . 'internal/views/criteria/__bool.tpl');
             break;
         case SearchFields_Ticket::TICKET_CREATED_DATE:
         case SearchFields_Ticket::TICKET_UPDATED_DATE:
         case SearchFields_Ticket::TICKET_DUE_DATE:
             $tpl->display('file:' . $tpl_path . 'internal/views/criteria/__date.tpl');
             break;
         case SearchFields_Ticket::TICKET_SPAM_TRAINING:
             $tpl->display('file:' . $tpl_path . 'tickets/search/criteria/ticket_spam_training.tpl');
             break;
         case SearchFields_Ticket::TICKET_SPAM_SCORE:
             $tpl->display('file:' . $tpl_path . 'tickets/search/criteria/ticket_spam_score.tpl');
             break;
         case SearchFields_Ticket::TICKET_LAST_ACTION_CODE:
             $tpl->display('file:' . $tpl_path . 'tickets/search/criteria/ticket_last_action.tpl');
             break;
         case SearchFields_Ticket::TICKET_NEXT_WORKER_ID:
         case SearchFields_Ticket::TICKET_LAST_WORKER_ID:
             $workers = DAO_Worker::getAll();
             $tpl->assign('workers', $workers);
             $tpl->display('file:' . $tpl_path . 'internal/views/criteria/__worker.tpl');
             break;
         case SearchFields_Ticket::TICKET_TEAM_ID:
             $teams = DAO_Group::getAll();
             $tpl->assign('teams', $teams);
             $team_categories = DAO_Bucket::getTeams();
             $tpl->assign('team_categories', $team_categories);
             $tpl->display('file:' . $tpl_path . 'tickets/search/criteria/ticket_team.tpl');
             break;
         default:
             // Custom Fields
             if ('cf_' == substr($field, 0, 3)) {
                 $this->_renderCriteriaCustomField($tpl, substr($field, 3));
             } else {
                 echo ' ';
             }
             break;
     }
 }
示例#8
0
文件: tickets.php 项目: Hildy/cerb5
 function showBatchPanelAction()
 {
     @($ids = DevblocksPlatform::importGPC($_REQUEST['ids']));
     @($view_id = DevblocksPlatform::importGPC($_REQUEST['view_id']));
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('path', $this->_TPL_PATH);
     $tpl->assign('view_id', $view_id);
     $unique_sender_ids = array();
     $unique_subjects = array();
     if (!empty($ids)) {
         $ticket_ids = DevblocksPlatform::parseCsvString($ids);
         if (empty($ticket_ids)) {
             break;
         }
         $tickets = DAO_Ticket::getTickets($ticket_ids);
         if (is_array($tickets)) {
             foreach ($tickets as $ticket) {
                 /* @var $ticket CerberusTicket */
                 $ptr =& $unique_sender_ids[$ticket->first_wrote_address_id];
                 $ptr = intval($ptr) + 1;
                 $ptr =& $unique_subjects[$ticket->subject];
                 $ptr = intval($ptr) + 1;
             }
         }
         arsort($unique_subjects);
         // sort by occurrences
         $senders = DAO_Address::getWhere(sprintf("%s IN (%s)", DAO_Address::ID, implode(',', array_keys($unique_sender_ids))));
         foreach ($senders as $sender) {
             $ptr =& $unique_senders[$sender->email];
             $ptr = intval($ptr) + 1;
         }
         arsort($unique_senders);
         unset($senders);
         unset($unique_sender_ids);
         @$tpl->assign('ticket_ids', $ticket_ids);
         @$tpl->assign('unique_senders', $unique_senders);
         @$tpl->assign('unique_subjects', $unique_subjects);
     }
     // Teams
     $teams = DAO_Group::getAll();
     $tpl->assign('teams', $teams);
     // Categories
     $team_categories = DAO_Bucket::getTeams();
     // [TODO] Cache these
     $tpl->assign('team_categories', $team_categories);
     $workers = DAO_Worker::getAllActive();
     $tpl->assign('workers', $workers);
     // Custom Fields
     $custom_fields = DAO_CustomField::getBySource(ChCustomFieldSource_Ticket::ID);
     $tpl->assign('custom_fields', $custom_fields);
     $tpl->display('file:' . $this->_TPL_PATH . 'tickets/rpc/batch_panel.tpl');
 }
示例#9
0
文件: App.php 项目: joegeck/cerb4
 function getTopTicketsReportAction()
 {
     @($age = DevblocksPlatform::importGPC($_REQUEST['age'], 'string', '30d'));
     $db = DevblocksPlatform::getDatabaseService();
     @($start = DevblocksPlatform::importGPC($_REQUEST['start'], 'string', ''));
     @($end = DevblocksPlatform::importGPC($_REQUEST['end'], 'string', ''));
     @($countonly = DevblocksPlatform::importGPC($_REQUEST['countonly'], 'integer', 0));
     @($by_address = DevblocksPlatform::importGPC($_REQUEST['by_address'], 'integer', 0));
     // use date range if specified, else use duration prior to now
     $start_time = 0;
     $end_time = 0;
     if (empty($start) && empty($end)) {
         $start = "-30 days";
         $end = "now";
         $start_time = strtotime($start);
         $end_time = strtotime($end);
     } else {
         $start_time = strtotime($start);
         $end_time = strtotime($end);
     }
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->cache_lifetime = "0";
     $tpl->assign('path', $this->tpl_path);
     // Top Buckets
     $groups = DAO_Group::getAll();
     $tpl->assign('groups', $groups);
     $group_buckets = DAO_Bucket::getTeams();
     $tpl->assign('group_buckets', $group_buckets);
     if ($by_address) {
         $sql = sprintf("SELECT count(*) AS hits, a.id as contact_id, a.email as contact_name, t.team_id, t.category_id  " . "FROM ticket t  " . "INNER JOIN address a ON t.first_wrote_address_id = a.id  " . "WHERE created_date > %d AND created_date <= %d  " . "AND is_deleted = 0 " . "AND spam_score < 0.9000 " . "AND spam_training != 'S'  " . "AND t.team_id != 0 " . "GROUP BY a.email, t.team_id, t.category_id ORDER BY hits DESC ", $start_time, $end_time);
     } else {
         //default is by org
         $sql = sprintf("SELECT count(*) AS hits, a.contact_org_id as contact_id, o.name as contact_name, t.team_id, t.category_id " . "FROM ticket t " . "INNER JOIN address a ON t.first_wrote_address_id = a.id " . "INNER JOIN contact_org o ON a.contact_org_id = o.id " . "WHERE created_date > %d AND created_date <= %d " . "AND is_deleted = 0 " . "AND spam_score < 0.9000 " . "AND spam_training != 'S' " . "AND a.contact_org_id != 0 " . "AND t.team_id != 0 " . "GROUP BY a.contact_org_id, o.name, t.team_id, t.category_id " . "ORDER BY hits DESC  ", $start_time, $end_time);
     }
     $rs_buckets = $db->Execute($sql);
     $group_counts = array();
     $max_orgs = 100;
     $current_orgs = 0;
     while (!$rs_buckets->EOF && $current_orgs <= $max_orgs) {
         $org_id = intval($rs_buckets->fields['contact_id']);
         $org_name = $rs_buckets->fields['contact_name'];
         $team_id = intval($rs_buckets->fields['team_id']);
         $category_id = intval($rs_buckets->fields['category_id']);
         $hits = intval($rs_buckets->fields['hits']);
         if (!isset($group_counts[$org_id])) {
             $group_counts[$org_id] = array();
             $current_orgs++;
         }
         if (!isset($group_counts[$org_id]['teams'])) {
             $group_counts[$org_id]['teams'] = array();
         }
         if (!isset($group_counts[$org_id]['teams'][$team_id])) {
             $group_counts[$org_id]['teams'][$team_id] = array();
         }
         if (!isset($group_counts[$org_id]['teams'][$team_id]['buckets'])) {
             $group_counts[$org_id]['teams'][$team_id]['buckets'] = array();
         }
         $group_counts[$org_id]['name'] = $org_name;
         $group_counts[$org_id]['teams'][$team_id]['buckets'][$category_id] = $hits;
         @($group_counts[$org_id]['teams'][$team_id]['total'] = intval($group_counts[$org_id]['teams'][$team_id]['total']) + $hits);
         @($group_counts[$org_id]['total'] = intval($group_counts[$org_id]['total']) + $hits);
         $rs_buckets->MoveNext();
     }
     uasort($group_counts, array("ChReportTopTicketsByContact", "sortCountsArrayByHits"));
     //echo "<pre>";print_r($group_counts);echo "</pre>";
     $tpl->assign('group_counts', $group_counts);
     $tpl->display('file:' . $this->tpl_path . '/reports/ticket/top_contacts_tickets/html.tpl');
 }
示例#10
0
 function render()
 {
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->cache_lifetime = "0";
     $tpl->assign('path', $this->tpl_path);
     $tpl->assign('start', '-30 days');
     $tpl->assign('end', 'now');
     $db = DevblocksPlatform::getDatabaseService();
     $workers = DAO_Worker::getAll();
     $tpl->assign('workers', $workers);
     // Teams
     $teams = DAO_Group::getAll();
     $tpl->assign('teams', $teams);
     // Categories
     $team_categories = DAO_Bucket::getTeams();
     // [TODO] Cache these
     $tpl->assign('team_categories', $team_categories);
     // Security
     if (null == ($active_worker = CerberusApplication::getActiveWorker())) {
         die($translate->_('common.access_denied'));
     }
     $tpl->assign('active_worker', $active_worker);
     $filename = "report-plus1-" . $active_worker->id . ".csv";
     $href_filename = 'storage/answernet/' . $filename;
     $tpl->assign('href_filename', $href_filename);
     $tpl->display('file:' . $this->tpl_path . '/report_plus1_time.tpl');
 }
示例#11
0
文件: display.php 项目: rmiddle/cerb4
 function showContactHistoryAction()
 {
     $visit = CerberusApplication::getVisit();
     /* @var $visit CerberusVisit */
     $translate = DevblocksPlatform::getTranslationService();
     @($ticket_id = DevblocksPlatform::importGPC($_REQUEST['ticket_id'], 'integer'));
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('path', $this->_TPL_PATH);
     // Ticket
     $ticket = DAO_Ticket::getTicket($ticket_id);
     $tpl->assign('ticket', $ticket);
     $requesters = $ticket->getRequesters();
     // Addy
     $contact = DAO_Address::get($ticket->first_wrote_address_id);
     $tpl->assign('contact', $contact);
     // Scope
     $scope = $visit->get('display.history.scope', '');
     // [TODO] Sanitize scope preference
     // Defaults
     $defaults = new C4_AbstractViewModel();
     $defaults->class_name = 'C4_TicketView';
     $defaults->id = 'contact_history';
     $defaults->name = $translate->_('addy_book.history.view.title');
     $defaults->view_columns = array(SearchFields_Ticket::TICKET_LAST_ACTION_CODE, SearchFields_Ticket::TICKET_CREATED_DATE, SearchFields_Ticket::TICKET_TEAM_ID, SearchFields_Ticket::TICKET_CATEGORY_ID);
     $defaults->params = array();
     $defaults->renderLimit = 10;
     $defaults->renderSortBy = SearchFields_Ticket::TICKET_CREATED_DATE;
     $defaults->renderSortAsc = false;
     // View
     $view = C4_AbstractViewLoader::getView('contact_history', $defaults);
     // Sanitize scope options
     if ('org' == $scope) {
         if (empty($contact->contact_org_id)) {
             $scope = '';
         }
         if (null == ($contact_org = DAO_ContactOrg::get($contact->contact_org_id))) {
             $scope = '';
         }
     }
     if ('domain' == $scope) {
         $email_parts = explode('@', $contact->email);
         if (!is_array($email_parts) || 2 != count($email_parts)) {
             $scope = '';
         }
     }
     switch ($scope) {
         case 'org':
             $view->params = array(SearchFields_Ticket::TICKET_FIRST_CONTACT_ORG_ID => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_FIRST_CONTACT_ORG_ID, '=', $contact->contact_org_id), SearchFields_Ticket::TICKET_DELETED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_DELETED, '=', 0));
             $view->name = ucwords($translate->_('contact_org.name')) . ": " . $contact_org->name;
             break;
         case 'domain':
             $view->params = array(SearchFields_Ticket::REQUESTER_ADDRESS => new DevblocksSearchCriteria(SearchFields_Ticket::REQUESTER_ADDRESS, 'like', '*@' . $email_parts[1]), SearchFields_Ticket::TICKET_DELETED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_DELETED, '=', 0));
             $view->name = ucwords($translate->_('common.email')) . ": *@" . $email_parts[1];
             break;
         default:
         case 'email':
             $scope = 'email';
             $view->params = array(SearchFields_Ticket::REQUESTER_ID => new DevblocksSearchCriteria(SearchFields_Ticket::REQUESTER_ID, 'in', array_keys($requesters)), SearchFields_Ticket::TICKET_DELETED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_DELETED, '=', 0));
             $view->name = ucwords($translate->_('common.email')) . ": " . $contact->email;
             break;
     }
     $tpl->assign('scope', $scope);
     $view->renderPage = 0;
     $tpl->assign('view', $view);
     C4_AbstractViewLoader::setView($view->id, $view);
     $workers = DAO_Worker::getAll();
     $tpl->assign('workers', $workers);
     $teams = DAO_Group::getAll();
     $tpl->assign('teams', $teams);
     $buckets = DAO_Bucket::getAll();
     $tpl->assign('buckets', $buckets);
     $team_categories = DAO_Bucket::getTeams();
     $tpl->assign('team_categories', $team_categories);
     $tpl->display('file:' . $this->_TPL_PATH . 'display/modules/history/index.tpl');
 }
示例#12
0
文件: App.php 项目: Hildy/cerb5
 function render()
 {
     $db = DevblocksPlatform::getDatabaseService();
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('path', $this->tpl_path);
     // Year shortcuts
     $years = array();
     $sql = "SELECT date_format(from_unixtime(created_date),'%Y') as year FROM ticket WHERE created_date > 0 GROUP BY year having year <= date_format(now(),'%Y') ORDER BY year desc limit 0,10";
     $rs = $db->query($sql);
     if (is_a($rs, 'ADORecordSet')) {
         while (!$rs->EOF) {
             $years[] = intval($rs->fields['year']);
             $rs->MoveNext();
         }
     }
     $tpl->assign('years', $years);
     // Dates
     @($start = DevblocksPlatform::importGPC($_REQUEST['start'], 'string', '-30 days'));
     @($end = DevblocksPlatform::importGPC($_REQUEST['end'], 'string', 'now'));
     // use date range if specified, else use duration prior to now
     $start_time = 0;
     $end_time = 0;
     if (empty($start) && empty($end)) {
         $start = "-30 days";
         $end = "now";
         $start_time = strtotime($start);
         $end_time = strtotime($end);
     } else {
         $start_time = strtotime($start);
         $end_time = strtotime($end);
     }
     $tpl->assign('start', $start);
     $tpl->assign('end', $end);
     // Table
     @($age = DevblocksPlatform::importGPC($_REQUEST['age'], 'string', '30d'));
     @($by_address = DevblocksPlatform::importGPC($_REQUEST['by_address'], 'integer', 0));
     $tpl->assign('by_address', $by_address);
     // Top Buckets
     $groups = DAO_Group::getAll();
     $tpl->assign('groups', $groups);
     $group_buckets = DAO_Bucket::getTeams();
     $tpl->assign('group_buckets', $group_buckets);
     if ($by_address) {
         $sql = sprintf("SELECT count(*) AS hits, a.id as contact_id, a.email as contact_name, t.team_id, t.category_id  " . "FROM ticket t  " . "INNER JOIN address a ON t.first_wrote_address_id = a.id  " . "WHERE created_date > %d AND created_date <= %d  " . "AND is_deleted = 0 " . "AND spam_score < 0.9000 " . "AND spam_training != 'S'  " . "AND t.team_id != 0 " . "GROUP BY a.email, t.team_id, t.category_id ORDER BY hits DESC ", $start_time, $end_time);
     } else {
         //default is by org
         $sql = sprintf("SELECT count(*) AS hits, a.contact_org_id as contact_id, o.name as contact_name, t.team_id, t.category_id " . "FROM ticket t " . "INNER JOIN address a ON t.first_wrote_address_id = a.id " . "INNER JOIN contact_org o ON a.contact_org_id = o.id " . "WHERE created_date > %d AND created_date <= %d " . "AND is_deleted = 0 " . "AND spam_score < 0.9000 " . "AND spam_training != 'S' " . "AND a.contact_org_id != 0 " . "AND t.team_id != 0 " . "GROUP BY a.contact_org_id, o.name, t.team_id, t.category_id " . "ORDER BY hits DESC  ", $start_time, $end_time);
     }
     $rs_buckets = $db->Execute($sql);
     $group_counts = array();
     $max_orgs = 100;
     $current_orgs = 0;
     while (!$rs_buckets->EOF && $current_orgs <= $max_orgs) {
         $org_id = intval($rs_buckets->fields['contact_id']);
         $org_name = $rs_buckets->fields['contact_name'];
         $team_id = intval($rs_buckets->fields['team_id']);
         $category_id = intval($rs_buckets->fields['category_id']);
         $hits = intval($rs_buckets->fields['hits']);
         if (!isset($group_counts[$org_id])) {
             $group_counts[$org_id] = array();
             $current_orgs++;
         }
         if (!isset($group_counts[$org_id]['teams'])) {
             $group_counts[$org_id]['teams'] = array();
         }
         if (!isset($group_counts[$org_id]['teams'][$team_id])) {
             $group_counts[$org_id]['teams'][$team_id] = array();
         }
         if (!isset($group_counts[$org_id]['teams'][$team_id]['buckets'])) {
             $group_counts[$org_id]['teams'][$team_id]['buckets'] = array();
         }
         $group_counts[$org_id]['name'] = $org_name;
         $group_counts[$org_id]['teams'][$team_id]['buckets'][$category_id] = $hits;
         @($group_counts[$org_id]['teams'][$team_id]['total'] = intval($group_counts[$org_id]['teams'][$team_id]['total']) + $hits);
         @($group_counts[$org_id]['total'] = intval($group_counts[$org_id]['total']) + $hits);
         $rs_buckets->MoveNext();
     }
     uasort($group_counts, array("ChReportTopTicketsByContact", "sortCountsArrayByHits"));
     $tpl->assign('group_counts', $group_counts);
     // Chart
     if ($by_address) {
         $sql = sprintf("SELECT count(*) AS hits, a.id, a.email as name " . "FROM ticket t " . "INNER JOIN address a ON t.first_wrote_address_id = a.id " . "WHERE created_date > %d AND created_date <= %d " . "AND is_deleted = 0 " . "AND spam_score < 0.9000 " . "AND spam_training != 'S' " . "AND t.team_id != 0 " . "GROUP BY a.id, a.email " . "ORDER BY hits DESC LIMIT 25 ", $start_time, $end_time);
     } else {
         //default is by org
         $sql = sprintf("SELECT count(*) AS hits, a.contact_org_id, o.name " . "FROM ticket t " . "INNER JOIN address a ON t.first_wrote_address_id = a.id " . "INNER JOIN contact_org o ON a.contact_org_id = o.id " . "WHERE created_date > %d AND created_date <= %d " . "AND is_deleted = 0 " . "AND spam_score < 0.9000 " . "AND spam_training != 'S' " . "AND t.team_id != 0 " . "AND a.contact_org_id != 0 " . "GROUP BY a.contact_org_id, o.name " . "ORDER BY hits DESC LIMIT 25 ", $start_time, $end_time);
     }
     $rs = $db->Execute($sql);
     $sorted_result = array();
     $i = 0;
     if (is_a($rs, 'ADORecordSet')) {
         while (!$rs->EOF) {
             $hits = intval($rs->fields['hits']);
             $name = $rs->fields['name'];
             $sorted_result[$i]['name'] = $name;
             $sorted_result[$i]['hits'] = $hits;
             $i++;
             $rs->MoveNext();
         }
     }
     //reverse the descending result because yui charts draws from the bottom up on the y-axis
     $iter = 0;
     $data = array();
     $reversed = array_reverse($sorted_result);
     foreach ($reversed as $result) {
         $data[$iter++] = array('value' => $result['name'], 'hits' => $result['hits']);
     }
     $tpl->assign('data', $data);
     $tpl->display('file:' . $this->tpl_path . '/reports/ticket/top_contacts_tickets/index.tpl');
 }