You are here

public function RadioactivityProcessor::processDecay in Radioactivity 8.3

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

Apply decay to entities.

Return value

int The number of decays processed.

Overrides RadioactivityProcessorInterface::processDecay

File

src/RadioactivityProcessor.php, line 102

Class

RadioactivityProcessor
Class RadioactivityProcessor.

Namespace

Drupal\radioactivity

Code

public function processDecay() {
  $resultCount = 0;
  $processed = FALSE;

  /** @var \Drupal\field\Entity\FieldStorageConfig[] $fieldConfigs */
  $fieldConfigs = $this->entityTypeManager
    ->getStorage('field_storage_config')
    ->loadByProperties([
    'type' => 'radioactivity',
  ]);
  if (empty($fieldConfigs)) {
    return 0;
  }
  foreach ($fieldConfigs as $fieldConfig) {
    $profile = $fieldConfig
      ->getSetting('profile');
    if ($fieldConfig
      ->hasData() && ($profile === 'linear' || $profile === 'decay') && $this
      ->hasReachedGranularityThreshold($fieldConfig)) {
      $resultCount += $this
        ->processFieldDecay($fieldConfig);
      $processed = TRUE;
    }
  }
  if ($processed) {
    $this->state
      ->set(self::LAST_PROCESSED_STATE_KEY, $this->requestTime);
  }
  $this->log
    ->notice('Processed @count radioactivity decays.', [
    '@count' => $resultCount,
  ]);
  return $resultCount;
}