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. |