Example #1
0
 /**
  * @param Model_Sensor[] $sensors
  */
 function run($sensors)
 {
     $fields = array();
     $field_values = array();
     // Custom fields
     $custom_fields = DAO_CustomField::getAll();
     // Action extensions
     $alert_action_exts = DevblocksPlatform::getExtensions('portsensor.alert.action', false);
     // actions
     if (is_array($this->actions)) {
         foreach ($this->actions as $action => $params) {
             switch ($action) {
                 //				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;
                     } elseif (isset($alert_action_exts[$action])) {
                         // criteria extensions
                         try {
                             $act_ext = $alert_action_exts[$action]->createInstance();
                             $act_ext->run($this, $sensors);
                         } catch (Exception $e) {
                             // Oops!
                             //print_r($e);
                         }
                     }
                     break;
             }
         }
     }
     if (!empty($sensors)) {
         if (!empty($fields)) {
             DAO_Sensor::update(array_keys($sensors), $fields);
         }
         // Custom Fields
         Ps_AbstractView::_doBulkSetCustomFields(PsCustomFieldSource_Sensor::ID, $field_values, array_keys($sensors));
     }
 }