abstract class ImmutableInvalidationBase in Purge 8.3
Provides base implementations the immutable invalidation object.
Immutable invalidations are not used in real-life cache invalidation, as \Drupal\purge\Plugin\Purge\Purger\PurgersServiceInterface doesn't accept them. However, as they are read-only, they are used by user interfaces to see what is in the queue without actually claiming or changing it.
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait- class \Drupal\purge\Plugin\Purge\Invalidation\ImmutableInvalidationBase implements ImmutableInvalidationInterface
 
 
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of ImmutableInvalidationBase
1 file declares its use of ImmutableInvalidationBase
- PluginTestBase.php in tests/src/ Kernel/ Invalidation/ PluginTestBase.php 
File
- src/Plugin/ Purge/ Invalidation/ ImmutableInvalidationBase.php, line 15 
Namespace
Drupal\purge\Plugin\Purge\InvalidationView source
abstract class ImmutableInvalidationBase extends PluginBase implements ImmutableInvalidationInterface {
  /**
   * Unique runtime ID for this instance.
   *
   * @var int
   */
  protected $id;
  /**
   * The instance ID of the purger that is about to process this object.
   *
   * @var string|null
   */
  protected $context = NULL;
  /**
   * Mixed expression (or NULL) that describes what needs to be invalidated.
   *
   * @var mixed|null
   */
  protected $expression = NULL;
  /**
   * Purger metadata.
   *
   * This property is a associative array, each purger has its own key. Values
   * are also associated arrays, in which metadata is stored key-value.
   *
   * @var array[]
   */
  protected $properties = [];
  /**
   * Invalidation states per purger.
   *
   * Associative list of which the keys refer to purger instances and the values
   * are \Drupal\purge\Plugin\Purge\Invalidation\InvStatesInterface constants.
   *
   * @var int[]
   */
  protected $states = [];
  /**
   * Valid post-processing states.
   *
   * When a purger is done processing, it can't leave objects as FRESH. This
   * list is basically a whitelist that's checked after processing.
   *
   * @var int[]
   */
  protected $statesAfterProcessing = [
    self::NOT_SUPPORTED,
    self::PROCESSING,
    self::SUCCEEDED,
    self::FAILED,
  ];
  /**
   * {@inheritdoc}
   */
  public function __toString() {
    return is_null($this->expression) ? '' : $this->expression;
  }
  /**
   * {@inheritdoc}
   */
  public function getExpression() {
    return $this->expression;
  }
  /**
   * {@inheritdoc}
   */
  public function getProperties() {
    if (!is_null($this->context)) {
      throw new \LogicException('Cannot retrieve properties in purger context.');
    }
    return $this->properties;
  }
  /**
   * {@inheritdoc}
   */
  public function getProperty($key) {
    if (is_null($this->context)) {
      throw new \LogicException('Call ::setStateContext() before retrieving properties!');
    }
    if (isset($this->properties[$this->context][$key])) {
      return $this->properties[$this->context][$key];
    }
    return NULL;
  }
  /**
   * {@inheritdoc}
   */
  public function getState() {
    // Regardless of the context, when there are no states stored we're FRESH.
    if (empty($this->states)) {
      return self::FRESH;
    }
    // In general context, we need to resolve what the invalidation state is.
    if ($this->context === NULL) {
      $totals = [
        self::SUCCEEDED => 0,
        self::NOT_SUPPORTED => 0,
      ];
      $total = count($this->states);
      foreach ($this->states as $state) {
        if (isset($totals[$state])) {
          $totals[$state]++;
        }
      }
      // If all purgers failed to support it, its unsupported.
      if ($totals[self::NOT_SUPPORTED] === $total) {
        return self::NOT_SUPPORTED;
      }
      elseif ($totals[self::SUCCEEDED] === $total) {
        return self::SUCCEEDED;
      }
      elseif (in_array(self::FAILED, $this->states)) {
        return self::FAILED;
      }
      elseif (in_array(self::PROCESSING, $this->states)) {
        return self::PROCESSING;
      }
      elseif (in_array(self::NOT_SUPPORTED, $this->states)) {
        if (in_array(self::FAILED, $this->states)) {
          return self::FAILED;
        }
        elseif (in_array(self::PROCESSING, $this->states)) {
          return self::PROCESSING;
        }
        elseif (in_array(self::SUCCEEDED, $this->states)) {
          return self::SUCCEEDED;
        }
      }
      throw new \LogicException("Invalidation state data integrity violation");
    }
    else {
      if (isset($this->states[$this->context])) {
        return $this->states[$this->context];
      }
      return self::FRESH;
    }
  }
  /**
   * {@inheritdoc}
   */
  public function getStateString() {
    $mapping = [
      self::FRESH => 'FRESH',
      self::PROCESSING => 'PROCESSING',
      self::SUCCEEDED => 'SUCCEEDED',
      self::FAILED => 'FAILED',
      self::NOT_SUPPORTED => 'NOT_SUPPORTED',
    ];
    return $mapping[$this
      ->getState()];
  }
  /**
   * {@inheritdoc}
   */
  public function getStateStringTranslated() {
    $mapping = [
      self::FRESH => $this
        ->t('New'),
      self::PROCESSING => $this
        ->t('Currently invalidating'),
      self::SUCCEEDED => $this
        ->t('Succeeded'),
      self::FAILED => $this
        ->t('Failed'),
      self::NOT_SUPPORTED => $this
        ->t('Not supported'),
    ];
    return $mapping[$this
      ->getState()];
  }
  /**
   * {@inheritdoc}
   */
  public function getStates() {
    return $this->states;
  }
  /**
   * {@inheritdoc}
   */
  public function getStateContexts() {
    if (!is_null($this->context)) {
      throw new \LogicException('Cannot retrieve state contexts in purger context.');
    }
    return array_keys($this->states);
  }
  /**
   * {@inheritdoc}
   */
  public function getType() {
    return $this
      ->getPluginId();
  }
}Members
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| DependencySerializationTrait:: | protected | property | An array of entity type IDs keyed by the property name of their storages. | |
| DependencySerializationTrait:: | protected | property | An array of service IDs keyed by property name used for serialization. | |
| DependencySerializationTrait:: | public | function | 1 | |
| DependencySerializationTrait:: | public | function | 2 | |
| ImmutableInvalidationBase:: | protected | property | The instance ID of the purger that is about to process this object. | |
| ImmutableInvalidationBase:: | protected | property | Mixed expression (or NULL) that describes what needs to be invalidated. | 1 | 
| ImmutableInvalidationBase:: | protected | property | Unique runtime ID for this instance. | |
| ImmutableInvalidationBase:: | protected | property | Purger metadata. | |
| ImmutableInvalidationBase:: | protected | property | Invalidation states per purger. | |
| ImmutableInvalidationBase:: | protected | property | Valid post-processing states. | |
| ImmutableInvalidationBase:: | public | function | Get the invalidation expression. Overrides ImmutableInvalidationInterface:: | 1 | 
| ImmutableInvalidationBase:: | public | function | Get all stored properties. Overrides ImmutableInvalidationInterface:: | |
| ImmutableInvalidationBase:: | public | function | Retrieve a purger specific property value. Overrides ImmutableInvalidationInterface:: | |
| ImmutableInvalidationBase:: | public | function | Get the current or general state of the invalidation. Overrides ImmutableInvalidationInterface:: | 1 | 
| ImmutableInvalidationBase:: | public | function | Get all stored state contexts. Overrides ImmutableInvalidationInterface:: | |
| ImmutableInvalidationBase:: | public | function | Get all invalidation states. Overrides ImmutableInvalidationInterface:: | |
| ImmutableInvalidationBase:: | public | function | Get the current state as string. Overrides ImmutableInvalidationInterface:: | 1 | 
| ImmutableInvalidationBase:: | public | function | Get the current state as user translated string. Overrides ImmutableInvalidationInterface:: | |
| ImmutableInvalidationBase:: | public | function | Get the type of invalidation. Overrides ImmutableInvalidationInterface:: | |
| ImmutableInvalidationBase:: | public | function | Return the string expression of the invalidation. Overrides ImmutableInvalidationInterface:: | 1 | 
| InvStatesInterface:: | constant | The invalidation failed and will be offered again later. | ||
| InvStatesInterface:: | constant | Invalidation is new and no processing has been attempted on it yet. | ||
| InvStatesInterface:: | constant | The type of invalidation isn't supported and will be offered again later. | ||
| InvStatesInterface:: | constant | The invalidation is processing. | ||
| InvStatesInterface:: | constant | The invalidation succeeded. | ||
| MessengerTrait:: | protected | property | The messenger. | 29 | 
| MessengerTrait:: | public | function | Gets the messenger. | 29 | 
| MessengerTrait:: | public | function | Sets the messenger. | |
| PluginBase:: | protected | property | Configuration information passed into the plugin. | 1 | 
| PluginBase:: | protected | property | The plugin implementation definition. | 1 | 
| PluginBase:: | protected | property | The plugin_id. | |
| PluginBase:: | constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
| PluginBase:: | public | function | Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: | |
| PluginBase:: | public | function | Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: | |
| PluginBase:: | public | function | Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: | 3 | 
| PluginBase:: | public | function | Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: | |
| PluginBase:: | public | function | Determines if the plugin is configurable. | |
| PluginBase:: | public | function | Constructs a \Drupal\Component\Plugin\PluginBase object. | 92 | 
| StringTranslationTrait:: | protected | property | The string translation service. | 1 | 
| StringTranslationTrait:: | protected | function | Formats a string containing a count of items. | |
| StringTranslationTrait:: | protected | function | Returns the number of plurals supported by a given language. | |
| StringTranslationTrait:: | protected | function | Gets the string translation service. | |
| StringTranslationTrait:: | public | function | Sets the string translation service to use. | 2 | 
| StringTranslationTrait:: | protected | function | Translates a string to the current language or to a given language. | 
