You are here

public function RadioactivityProcessor::queueProcessIncidents in Radioactivity 8.3

Same name and namespace in other branches
  1. 4.0.x src/RadioactivityProcessor.php \Drupal\radioactivity\RadioactivityProcessor::queueProcessIncidents()

Queue processing of Radioactivity emission incidents.

Parameters

string $entityType: Incident entity type.

\Drupal\radioactivity\IncidentInterface[][] $entityIncidents: Radioactivity incidents grouped per entity ID (1st) and incident ID (2nd).

Overrides RadioactivityProcessorInterface::queueProcessIncidents

File

src/RadioactivityProcessor.php, line 288

Class

RadioactivityProcessor
Class RadioactivityProcessor.

Namespace

Drupal\radioactivity

Code

public function queueProcessIncidents($entityType, array $entityIncidents) {

  /** @var \Drupal\Core\Entity\ContentEntityInterface[] $entities */
  $entities = $this->entityTypeManager
    ->getStorage($entityType)
    ->loadMultiple(array_keys($entityIncidents));
  foreach ($entities as $entity) {

    /** @var \Drupal\radioactivity\IncidentInterface $incident */
    foreach ($entityIncidents[$entity
      ->id()] as $incident) {
      $entity
        ->get($incident
        ->getFieldName())->energy += $incident
        ->getEnergy();
    }
    if ($entity
      ->getEntityType()
      ->isRevisionable()) {
      $entity
        ->setNewRevision(FALSE);
    }

    // Set flag so we can identify this entity save as one that just updates
    // the radioactivity value.
    $entity->radioactivityUpdate = TRUE;
    $entity
      ->save();
  }
}