You are here

function radioactivity_deferred_incident_storage::process_incidents in Radioactivity 7

Overrides radioactivity_incident_storage::process_incidents

File

storage/radioactivity_deferred_incident_storage.php, line 45

Class

radioactivity_deferred_incident_storage

Code

function process_incidents() {

  // grab rows from table and push them to fields
  $query = db_select("radioactivity_deferred_storage", "rds")
    ->fields("rds", array(
    "entity_type",
    "entity_id",
    "field_id",
  ))
    ->condition("field_id", $this->field_id)
    ->groupBy("rds.entity_type")
    ->groupBy("rds.entity_id");
  $query
    ->addExpression("SUM(rds.energy)", "energy");
  $result = $query
    ->execute();
  $now = time() - 10;
  while ($row = $result
    ->fetch()) {
    $entities_loaded = entity_load($row->entity_type, array(
      $row->entity_id,
    ));
    $entity = array_shift($entities_loaded);
    $l = $entity->language;
    if (!isset($entity->{$this->field_name})) {
      $value = 0;
      $entity->{$this->field_name} = array(
        $l => array(
          0 => array(
            RADIOACTIVITY_FIELD_ENERGY => 0,
            RADIOACTIVITY_FIELD_TIMESTAMP => $now,
          ),
        ),
      );
    }
    else {
      $value = $entity->{$this->field_name}[$l][0][RADIOACTIVITY_FIELD_ENERGY];
      $time = $entity->{$this->field_name}[$l][0][RADIOACTIVITY_FIELD_TIMESTAMP];
      if (!$time || $time == 0) {
        $time = $now;
      }
    }
    $value += $row->energy;
    $entity->{$this->field_name}[$l][0][RADIOACTIVITY_FIELD_ENERGY] = $value;
    $entity->{$this->field_name}[$l][0][RADIOACTIVITY_FIELD_TIMESTAMP] = $time;
    field_attach_update($row->entity_type, $entity);
  }
  db_delete("radioactivity_deferred_storage")
    ->condition("field_id", $this->field_id)
    ->execute();

  /*
  static $time_now = NULL;

  if ($time_now == NULL) {
    $time_now = time();
  }

  if ($energy == NULL) {
     $energy = $this->incident_energy;
  }

  $query = db_update($this->table_name)
    ->expression($this->energy_column_name, $this->energy_column_name . ' + ' . $energy)
    ->fields(array($this->timestamp_column_name => $time_now))
    ->condition("deleted", "0")
    ->condition("entity_id", $entities_id, "IN")
    ->execute();
  */
}