示例#1
0
 /**
  * @param integer[] $ticket_ids
  */
 function run($ticket_ids)
 {
     if (!is_array($ticket_ids)) {
         $ticket_ids = array($ticket_ids);
     }
     $fields = array();
     $field_values = array();
     $groups = DAO_Group::getAll();
     $buckets = DAO_Bucket::getAll();
     //		$workers = DAO_Worker::getAll();
     $custom_fields = DAO_CustomField::getAll();
     // actions
     if (is_array($this->actions)) {
         foreach ($this->actions as $action => $params) {
             switch ($action) {
                 //				case 'status':
                 //					if(isset($params['is_waiting']))
                 //						$fields[DAO_Ticket::IS_WAITING] = intval($params['is_waiting']);
                 //					if(isset($params['is_closed']))
                 //						$fields[DAO_Ticket::IS_CLOSED] = intval($params['is_closed']);
                 //					if(isset($params['is_deleted']))
                 //						$fields[DAO_Ticket::IS_DELETED] = intval($params['is_deleted']);
                 //					break;
                 //				case 'assign':
                 //					if(isset($params['worker_id'])) {
                 //						$w_id = intval($params['worker_id']);
                 //						if(0 == $w_id || isset($workers[$w_id]))
                 //							$fields[DAO_Ticket::NEXT_WORKER_ID] = $w_id;
                 //					}
                 //					break;
                 case 'move':
                     if (isset($params['group_id']) && isset($params['bucket_id'])) {
                         $g_id = intval($params['group_id']);
                         $b_id = intval($params['bucket_id']);
                         if (isset($groups[$g_id]) && (0 == $b_id || isset($buckets[$b_id]))) {
                             $fields[DAO_Ticket::TEAM_ID] = $g_id;
                             $fields[DAO_Ticket::CATEGORY_ID] = $b_id;
                         }
                     }
                     break;
                     //				case 'spam':
                     //					if(isset($params['is_spam'])) {
                     //						if(intval($params['is_spam'])) {
                     //							foreach($ticket_ids as $ticket_id)
                     //								CerberusBayes::markTicketAsSpam($ticket_id);
                     //						} else {
                     //							foreach($ticket_ids as $ticket_id)
                     //								CerberusBayes::markTicketAsNotSpam($ticket_id);
                     //						}
                     //					}
                     //					break;
                 //				case 'spam':
                 //					if(isset($params['is_spam'])) {
                 //						if(intval($params['is_spam'])) {
                 //							foreach($ticket_ids as $ticket_id)
                 //								CerberusBayes::markTicketAsSpam($ticket_id);
                 //						} else {
                 //							foreach($ticket_ids as $ticket_id)
                 //								CerberusBayes::markTicketAsNotSpam($ticket_id);
                 //						}
                 //					}
                 //					break;
                 default:
                     // Custom fields
                     if (substr($action, 0, 3) == "cf_") {
                         $field_id = intval(substr($action, 3));
                         if (!isset($custom_fields[$field_id]) || !isset($params['value'])) {
                             break;
                         }
                         $field_values[$field_id] = $params;
                     }
                     break;
             }
         }
     }
     if (!empty($ticket_ids)) {
         if (!empty($fields)) {
             DAO_Ticket::updateTicket($ticket_ids, $fields);
         }
         // Custom Fields
         C4_AbstractView::_doBulkSetCustomFields(ChCustomFieldSource_Ticket::ID, $field_values, $ticket_ids);
     }
 }