Esempio n. 1
0
 function render()
 {
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->cache_lifetime = "0";
     $tpl->assign('path', $this->_TPL_PATH);
     $visit = CerberusApplication::getVisit();
     /* @var $visit CerberusVisit */
     $response = DevblocksPlatform::getHttpResponse();
     $active_worker = CerberusApplication::getActiveWorker();
     $translate = DevblocksPlatform::getTranslationService();
     $url = DevblocksPlatform::getUrlService();
     $stack = $response->path;
     @array_shift($stack);
     // display
     @($id = array_shift($stack));
     // Tabs
     $tab_manifests = DevblocksPlatform::getExtensions('cerberusweb.ticket.tab', false);
     $tpl->assign('tab_manifests', $tab_manifests);
     @($tab_selected = array_shift($stack));
     if (empty($tab_selected)) {
         $tab_selected = 'conversation';
     }
     $tpl->assign('tab_selected', $tab_selected);
     switch ($tab_selected) {
         case 'conversation':
             @($mail_always_show_all = DAO_WorkerPref::get($active_worker->id, 'mail_always_show_all', 0));
             @($tab_option = array_shift($stack));
             if ($mail_always_show_all || 0 == strcasecmp("read_all", $tab_option)) {
                 $tpl->assign('expand_all', true);
             }
             break;
     }
     // [JAS]: Translate Masks
     if (!is_numeric($id)) {
         $id = DAO_Ticket::getTicketIdByMask($id);
     }
     $ticket = DAO_Ticket::getTicket($id);
     if (empty($ticket)) {
         echo "<H1>" . $translate->_('display.invalid_ticket') . "</H1>";
         return;
     }
     // Permissions
     $active_worker_memberships = $active_worker->getMemberships();
     // Check group membership ACL
     if (!isset($active_worker_memberships[$ticket->team_id])) {
         echo "<H1>" . $translate->_('common.access_denied') . "</H1>";
         return;
     }
     $tpl->assign('ticket', $ticket);
     // TicketToolbarItem Extensions
     $ticketToolbarItems = DevblocksPlatform::getExtensions('cerberusweb.ticket.toolbaritem', true);
     if (!empty($ticketToolbarItems)) {
         $tpl->assign('ticket_toolbaritems', $ticketToolbarItems);
     }
     // Next+Prev: Does a series exist?
     if (null != ($series_info = $visit->get('ch_display_series', null))) {
         @($series = $series_info['series']);
         $cur = 1;
         $found = false;
         // Is this ID part of the series?  If not, invalidate
         if (is_array($series)) {
             while ($mask = current($series)) {
                 // Stop if we find it.
                 if ($mask == $ticket->mask) {
                     $found = true;
                     break;
                 }
                 next($series);
                 $cur++;
             }
         }
         if (!$found) {
             // not found
             $visit->set('ch_display_series', null);
         } else {
             // found
             $series_stats = array('title' => $series_info['title'], 'total' => $series_info['total'], 'count' => count($series));
             $series_stats['cur'] = $cur;
             if (false !== prev($series)) {
                 @($series_stats['prev'] = current($series));
                 next($series);
                 // skip to current
             } else {
                 reset($series);
             }
             next($series);
             // next
             @($series_stats['next'] = current($series));
             $tpl->assign('series_stats', $series_stats);
         }
     }
     $quick_search_type = $visit->get('quick_search_type');
     $tpl->assign('quick_search_type', $quick_search_type);
     // Comments [TODO] Eventually this can be cached on ticket.num_comments
     $comments_total = DAO_TicketComment::getCountByTicketId($id);
     $tpl->assign('comments_total', $comments_total);
     // Tasks Total [TODO] Eventually this can be ticket.num_tasks
     $tasks_total = DAO_Task::getCountBySourceObjectId('cerberusweb.tasks.ticket', $id);
     $tpl->assign('tasks_total', $tasks_total);
     $workers = DAO_Worker::getAll();
     $tpl->assign('workers', $workers);
     $teams = DAO_Group::getAll();
     $tpl->assign('teams', $teams);
     $team_categories = DAO_Bucket::getTeams();
     $tpl->assign('team_categories', $team_categories);
     // Log Activity
     DAO_Worker::logActivity($active_worker->id, new Model_Activity('activity.display_ticket', array(sprintf("<a href='%s' title='[%s] %s'>#%s</a>", $url->write("c=display&id=" . $ticket->mask), htmlspecialchars(@$teams[$ticket->team_id]->name, ENT_QUOTES, LANG_CHARSET_CODE), htmlspecialchars($ticket->subject, ENT_QUOTES, LANG_CHARSET_CODE), $ticket->mask))));
     $tpl->display('file:' . $this->_TPL_PATH . 'display/index.tpl');
 }