Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0 / 0 |
|
100.00% |
0 / 0 |
CRAP | |
100.00% |
0 / 0 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\Entity\EntityDefinitionUpdateManagerInterface. | |
*/ | |
namespace Drupal\Core\Entity; | |
use Drupal\Core\Field\FieldStorageDefinitionInterface; | |
/** | |
* Defines an interface for managing entity definition updates. | |
* | |
* During the application lifetime, the definitions of various entity types and | |
* their data components (e.g., fields for fieldable entity types) can change. | |
* For example, updated code can be deployed. Some entity handlers may need to | |
* perform complex or long-running logic in response to the change. For | |
* example, a SQL-based storage handler may need to update the database schema. | |
* | |
* To support this, \Drupal\Core\Entity\EntityManagerInterface has methods to | |
* retrieve the last installed definitions as well as the definitions specified | |
* by the current codebase. It also has create/update/delete methods to bring | |
* the former up to date with the latter. | |
* | |
* However, it is not the responsibility of the entity manager to decide how to | |
* report the differences or when to apply each update. This interface is for | |
* managing that. | |
* | |
* This interface also provides methods to retrieve instances of the definitions | |
* to be updated ready to be manipulated. In fact when definitions change in | |
* code the system needs to be notified about that and the definitions stored in | |
* state need to be reconciled with the ones living in code. This typically | |
* happens in Update API functions, which need to take the system from a known | |
* state to another known state. Relying on the definitions living in code might | |
* prevent this, as the system might transition directly to the last available | |
* state, and thus skipping the intermediate steps. Manipulating the definitions | |
* in state allows to avoid this and ensures that the various steps of the | |
* update process are predictable and repeatable. | |
* | |
* @see \Drupal\Core\Entity\EntityManagerInterface::getDefinition() | |
* @see \Drupal\Core\Entity\EntityManagerInterface::getLastInstalledDefinition() | |
* @see \Drupal\Core\Entity\EntityManagerInterface::getFieldStorageDefinitions() | |
* @see \Drupal\Core\Entity\EntityManagerInterface::getLastInstalledFieldStorageDefinitions() | |
* @see hook_update_N() | |
*/ | |
interface EntityDefinitionUpdateManagerInterface { | |
/** | |
* Indicates that a definition has just been created. | |
* | |
* @var int | |
*/ | |
const DEFINITION_CREATED = 1; | |
/** | |
* Indicates that a definition has changes. | |
* | |
* @var int | |
*/ | |
const DEFINITION_UPDATED = 2; | |
/** | |
* Indicates that a definition has just been deleted. | |
* | |
* @var int | |
*/ | |
const DEFINITION_DELETED = 3; | |
/** | |
* Checks if there are any definition updates that need to be applied. | |
* | |
* @return bool | |
* TRUE if updates are needed. | |
*/ | |
public function needsUpdates(); | |
/** | |
* Gets a human readable summary of the detected changes. | |
* | |
* @return array | |
* An associative array keyed by entity type id. Each entry is an array of | |
* human-readable strings, each describing a change. | |
*/ | |
public function getChangeSummary(); | |
/** | |
* Applies all the detected valid changes. | |
* | |
* Use this with care, as it will apply updates for any module, which will | |
* lead to unpredictable results. | |
* | |
* @throws \Drupal\Core\Entity\EntityStorageException | |
* This exception is thrown if a change cannot be applied without | |
* unacceptable data loss. In such a case, the site administrator needs to | |
* apply some other process, such as a custom update function or a | |
* migration via the Migrate module. | |
*/ | |
public function applyUpdates(); | |
/** | |
* Returns an entity type definition ready to be manipulated. | |
* | |
* When needing to apply updates to existing entity type definitions, this | |
* method should always be used to retrieve a definition ready to be | |
* manipulated. | |
* | |
* @param string $entity_type_id | |
* The entity type identifier. | |
* | |
* @return \Drupal\Core\Entity\EntityTypeInterface | |
* The entity type definition. | |
*/ | |
public function getEntityType($entity_type_id); | |
/** | |
* Installs a new entity type definition. | |
* | |
* @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | |
* The entity type definition. | |
*/ | |
public function installEntityType(EntityTypeInterface $entity_type); | |
/** | |
* Applies any change performed to the passed entity type definition. | |
* | |
* @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | |
* The entity type definition. | |
*/ | |
public function updateEntityType(EntityTypeInterface $entity_type); | |
/** | |
* Uninstalls an entity type definition. | |
* | |
* @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | |
* The entity type definition. | |
*/ | |
public function uninstallEntityType(EntityTypeInterface $entity_type); | |
/** | |
* Returns a field storage definition ready to be manipulated. | |
* | |
* When needing to apply updates to existing field storage definitions, this | |
* method should always be used to retrieve a storage definition ready to be | |
* manipulated. | |
* | |
* @param string $name | |
* The field name. | |
* @param string $entity_type_id | |
* The entity type identifier. | |
* | |
* @return \Drupal\Core\Field\FieldStorageDefinitionInterface | |
* The field storage definition. | |
* | |
* @todo Make this return a mutable storage definition interface when we have | |
* one. See https://www.drupal.org/node/2346329. | |
*/ | |
public function getFieldStorageDefinition($name, $entity_type_id); | |
/** | |
* Installs a new field storage definition. | |
* | |
* @param string $name | |
* The field storage definition name. | |
* @param string $entity_type_id | |
* The target entity type identifier. | |
* @param string $provider | |
* The name of the definition provider. | |
* @param \Drupal\Core\Field\FieldStorageDefinitionInterface $storage_definition | |
* The field storage definition. | |
*/ | |
public function installFieldStorageDefinition($name, $entity_type_id, $provider, FieldStorageDefinitionInterface $storage_definition); | |
/** | |
* Applies any change performed to the passed field storage definition. | |
* | |
* @param \Drupal\Core\Field\FieldStorageDefinitionInterface $storage_definition | |
* The field storage definition. | |
*/ | |
public function updateFieldStorageDefinition(FieldStorageDefinitionInterface $storage_definition); | |
/** | |
* Uninstalls a field storage definition. | |
* | |
* @param \Drupal\Core\Field\FieldStorageDefinitionInterface $storage_definition | |
* The field storage definition. | |
*/ | |
public function uninstallFieldStorageDefinition(FieldStorageDefinitionInterface $storage_definition); | |
} |