コード例 #1
0
ファイル: Model.class.php プロジェクト: rmiddle/cerb4
 function doBulkUpdate($filter, $do, $ids = array())
 {
     @set_time_limit(0);
     $change_fields = array();
     $deleted = false;
     // Make sure we have actions
     if (empty($do)) {
         return;
     }
     // Make sure we have checked items if we want a checked list
     if (0 == strcasecmp($filter, "checks") && empty($ids)) {
         return;
     }
     if (is_array($do)) {
         foreach ($do as $k => $v) {
             switch ($k) {
                 case 'deleted':
                     $deleted = true;
                     break;
                 default:
                     break;
             }
         }
     }
     $pg = 0;
     if (empty($ids)) {
         do {
             list($objects, $null) = DAO_Attachment::search($this->params, 100, $pg++, SearchFields_Attachment::ID, true, false);
             $ids = array_merge($ids, array_keys($objects));
         } while (!empty($objects));
     }
     $batch_total = count($ids);
     for ($x = 0; $x <= $batch_total; $x += 100) {
         $batch_ids = array_slice($ids, $x, 100);
         if (!$deleted) {
             DAO_Attachment::update($batch_ids, $change_fields);
         } else {
             DAO_Attachment::delete($batch_ids);
         }
         unset($batch_ids);
     }
     unset($ids);
 }
コード例 #2
0
ファイル: UmScApp.php プロジェクト: Hildy/cerb5
 function downloadFileAction(DevblocksHttpRequest $request)
 {
     $umsession = UmPortalHelper::getSession();
     $stack = $request->path;
     if (null == ($active_user = $umsession->getProperty('sc_login', null))) {
         return;
     }
     // Attachment ID + display name
     @($ticket_mask = array_shift($stack));
     @($hash = array_shift($stack));
     @($display_name = array_shift($stack));
     if (empty($ticket_mask) || empty($hash) || empty($display_name)) {
         return;
     }
     if (null == ($ticket_id = DAO_Ticket::getTicketIdByMask($ticket_mask))) {
         return;
     }
     // Load attachments by ticket mask
     list($attachments) = DAO_Attachment::search(array(SearchFields_Attachment::TICKET_MASK => new DevblocksSearchCriteria(SearchFields_Attachment::TICKET_MASK, '=', $ticket_mask)), -1, 0, null, null, false);
     $attachment = null;
     if (is_array($attachments)) {
         foreach ($attachments as $possible_file) {
             // Compare the hash
             $fingerprint = md5($possible_file[SearchFields_Attachment::ID] . $possible_file[SearchFields_Attachment::MESSAGE_ID] . $possible_file[SearchFields_Attachment::DISPLAY_NAME]);
             if (0 == strcmp($fingerprint, $hash)) {
                 if (null == ($attachment = DAO_Attachment::get($possible_file[SearchFields_Attachment::ID]))) {
                     return;
                 }
                 break;
             }
         }
     }
     // No hit (bad hash)
     if (null == $attachment) {
         return;
     }
     // Load requesters
     if (null == ($requesters = DAO_Ticket::getRequestersByTicket($ticket_id))) {
         return;
     }
     // Security: Make sure the active user is a requester on the proper ticket
     if (!isset($requesters[$active_user->id])) {
         return;
     }
     // Set headers
     header("Expires: Mon, 26 Nov 1962 00:00:00 GMT\n");
     header("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT\n");
     header("Cache-control: private\n");
     header("Pragma: no-cache\n");
     header("Content-Type: " . $attachment->mime_type . "\n");
     header("Content-transfer-encoding: binary\n");
     header("Content-Length: " . $attachment->getFileSize() . "\n");
     // Dump contents
     echo $attachment->getFileContents();
     exit;
 }
コード例 #3
0
ファイル: history.php プロジェクト: Hildy/cerb5
 function writeResponse(DevblocksHttpResponse $response)
 {
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl_path = dirname(dirname(dirname(dirname(__FILE__)))) . '/templates/';
     $umsession = UmPortalHelper::getSession();
     $active_user = $umsession->getProperty('sc_login', null);
     $stack = $response->path;
     array_shift($stack);
     // history
     $mask = array_shift($stack);
     if (empty($mask)) {
         // Open Tickets
         if (null == ($open_view = UmScAbstractViewLoader::getView('', 'sc_history_open'))) {
             $open_view = new UmSc_TicketHistoryView();
             $open_view->id = 'sc_history_open';
         }
         // Lock to current visitor and open tickets
         $open_view->params = array(new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_FIRST_WROTE_ID, '=', $active_user->id), new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CLOSED, '=', 0), new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_DELETED, '=', 0));
         $open_view->name = "";
         $open_view->renderSortBy = SearchFields_Ticket::TICKET_UPDATED_DATE;
         $open_view->renderSortAsc = false;
         $open_view->renderLimit = 10;
         UmScAbstractViewLoader::setView($open_view->id, $open_view);
         $tpl->assign('open_view', $open_view);
         // Closed Tickets
         if (null == ($closed_view = UmScAbstractViewLoader::getView('', 'sc_history_closed'))) {
             $closed_view = new UmSc_TicketHistoryView();
             $closed_view->id = 'sc_history_closed';
         }
         // Lock to current visitor and closed tickets
         $closed_view->params = array(new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_FIRST_WROTE_ID, '=', $active_user->id), new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CLOSED, '=', 1), new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_DELETED, '=', 0));
         $closed_view->name = "";
         $closed_view->renderSortBy = SearchFields_Ticket::TICKET_UPDATED_DATE;
         $closed_view->renderSortAsc = false;
         $closed_view->renderLimit = 10;
         UmScAbstractViewLoader::setView($closed_view->id, $closed_view);
         $tpl->assign('closed_view', $closed_view);
         $tpl->display("devblocks:usermeet.core:support_center/history/index.tpl:portal_" . UmPortalHelper::getCode());
     } elseif ('search' == $mask) {
         @($q = DevblocksPlatform::importGPC($_REQUEST['q'], 'string', ''));
         $tpl->assign('q', $q);
         if (null == ($view = UmScAbstractViewLoader::getView('', 'sc_history_search'))) {
             $view = new UmSc_TicketHistoryView();
             $view->id = 'sc_history_search';
         }
         $view->name = "";
         $view->view_columns = array(SearchFields_Ticket::TICKET_MASK, SearchFields_Ticket::TICKET_SUBJECT, SearchFields_Ticket::TICKET_UPDATED_DATE, SearchFields_Ticket::TICKET_CLOSED);
         $view->params = array(array(DevblocksSearchCriteria::GROUP_OR, new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_MESSAGE_CONTENT, DevblocksSearchCriteria::OPER_FULLTEXT, $q), new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_MASK, DevblocksSearchCriteria::OPER_LIKE, $q . '%')), new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_FIRST_WROTE_ID, '=', $active_user->id), new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_DELETED, '=', 0));
         UmScAbstractViewLoader::setView($view->id, $view);
         $tpl->assign('view', $view);
         $tpl->display("devblocks:usermeet.core:support_center/history/search_results.tpl:portal_" . UmPortalHelper::getCode());
     } else {
         // Secure retrieval (address + mask)
         list($tickets) = DAO_Ticket::search(array(), array(new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_MASK, '=', $mask), new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_FIRST_WROTE_ID, '=', $active_user->id)), 1, 0, null, null, false);
         $ticket = array_shift($tickets);
         // Security check (mask compare)
         if (0 == strcasecmp($ticket[SearchFields_Ticket::TICKET_MASK], $mask)) {
             $messages = DAO_Ticket::getMessagesByTicket($ticket[SearchFields_Ticket::TICKET_ID]);
             $messages = array_reverse($messages, true);
             $attachments = array();
             // Attachments
             if (is_array($messages) && !empty($messages)) {
                 list($msg_attachments) = DAO_Attachment::search(array(SearchFields_Attachment::MESSAGE_ID => new DevblocksSearchCriteria(SearchFields_Attachment::MESSAGE_ID, 'in', array_keys($messages))), -1, 0, null, null, false);
                 if (is_array($msg_attachments)) {
                     foreach ($msg_attachments as $attach_id => $attach) {
                         if (null == ($msg_id = intval($attach[SearchFields_Attachment::MESSAGE_ID]))) {
                             continue;
                         }
                         if (0 == strcasecmp('original_message.html', $attach[SearchFields_Attachment::DISPLAY_NAME])) {
                             continue;
                         }
                         if (!isset($attachments[$msg_id])) {
                             $attachments[$msg_id] = array();
                         }
                         $attachments[$msg_id][$attach_id] = $attach;
                         unset($attach);
                     }
                 }
             }
             $tpl->assign('ticket', $ticket);
             $tpl->assign('messages', $messages);
             $tpl->assign('attachments', $attachments);
             $tpl->display("devblocks:usermeet.core:support_center/history/display.tpl:portal_" . UmPortalHelper::getCode());
         }
     }
 }