Example #1
0
 /**
  * @param array
  * @param array
  * @return boolean
  * [TODO] Find a better home for this?
  */
 function doBulkUpdate($filter, $filter_param, $data, $do, $ticket_ids = array())
 {
     @set_time_limit(600);
     // Make sure we have checked items if we want a checked list
     if (0 == strcasecmp($filter, "checks") && empty($ticket_ids)) {
         return;
     }
     $rule = new Model_GroupInboxFilter();
     $rule->actions = $do;
     $params = $this->params;
     if (empty($filter)) {
         $data[] = '*';
         // All, just to permit a loop in foreach($data ...)
     }
     switch ($filter) {
         default:
         case 'subject':
         case 'sender':
         case 'header':
             if (is_array($data)) {
                 foreach ($data as $v) {
                     $new_params = array();
                     $do_header = null;
                     switch ($filter) {
                         case 'subject':
                             $new_params = array(new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_SUBJECT, DevblocksSearchCriteria::OPER_LIKE, $v));
                             $do_header = 'subject';
                             $ticket_ids = array();
                             break;
                         case 'sender':
                             $new_params = array(new DevblocksSearchCriteria(SearchFields_Ticket::SENDER_ADDRESS, DevblocksSearchCriteria::OPER_LIKE, $v));
                             $do_header = 'from';
                             $ticket_ids = array();
                             break;
                         case 'header':
                             $new_params = array(new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_MESSAGE_HEADER, DevblocksSearchCriteria::OPER_EQ, $filter_param), new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_MESSAGE_HEADER_VALUE, DevblocksSearchCriteria::OPER_EQ, $v));
                             $ticket_ids = array();
                             break;
                     }
                     $new_params = array_merge($new_params, $params);
                     $pg = 0;
                     if (empty($ticket_ids)) {
                         do {
                             list($tickets, $null) = DAO_Ticket::search(array(), $new_params, 100, $pg++, SearchFields_Ticket::TICKET_ID, true, false);
                             $ticket_ids = array_merge($ticket_ids, array_keys($tickets));
                         } while (!empty($tickets));
                     }
                     $batch_total = count($ticket_ids);
                     for ($x = 0; $x <= $batch_total; $x += 200) {
                         $batch_ids = array_slice($ticket_ids, $x, 200);
                         $rule->run($batch_ids);
                         unset($batch_ids);
                     }
                 }
             }
             break;
     }
     unset($ticket_ids);
 }