Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Entity/EntityInterface.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/Entity/EntityInterface.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,508 @@ +<?php + +namespace Drupal\Core\Entity; + +use Drupal\Core\Access\AccessibleInterface; +use Drupal\Core\Cache\CacheableDependencyInterface; +use Drupal\Core\Cache\RefinableCacheableDependencyInterface; + +/** + * Defines a common interface for all entity objects. + * + * @ingroup entity_api + */ +interface EntityInterface extends AccessibleInterface, CacheableDependencyInterface, RefinableCacheableDependencyInterface { + + /** + * Gets the entity UUID (Universally Unique Identifier). + * + * The UUID is guaranteed to be unique and can be used to identify an entity + * across multiple systems. + * + * @return string|null + * The UUID of the entity, or NULL if the entity does not have one. + */ + public function uuid(); + + /** + * Gets the identifier. + * + * @return string|int|null + * The entity identifier, or NULL if the object does not yet have an + * identifier. + */ + public function id(); + + /** + * Gets the language of the entity. + * + * @return \Drupal\Core\Language\LanguageInterface + * The language object. + */ + public function language(); + + /** + * Determines whether the entity is new. + * + * Usually an entity is new if no ID exists for it yet. However, entities may + * be enforced to be new with existing IDs too. + * + * @return bool + * TRUE if the entity is new, or FALSE if the entity has already been saved. + * + * @see \Drupal\Core\Entity\EntityInterface::enforceIsNew() + */ + public function isNew(); + + /** + * Enforces an entity to be new. + * + * Allows migrations to create entities with pre-defined IDs by forcing the + * entity to be new before saving. + * + * @param bool $value + * (optional) Whether the entity should be forced to be new. Defaults to + * TRUE. + * + * @return $this + * + * @see \Drupal\Core\Entity\EntityInterface::isNew() + */ + public function enforceIsNew($value = TRUE); + + /** + * Gets the ID of the type of the entity. + * + * @return string + * The entity type ID. + */ + public function getEntityTypeId(); + + /** + * Gets the bundle of the entity. + * + * @return string + * The bundle of the entity. Defaults to the entity type ID if the entity + * type does not make use of different bundles. + */ + public function bundle(); + + /** + * Gets the label of the entity. + * + * @return string|null + * The label of the entity, or NULL if there is no label defined. + */ + public function label(); + + /** + * Gets the URL object for the entity. + * + * @param string $rel + * The link relationship type, for example: canonical or edit-form. + * @param array $options + * See \Drupal\Core\Routing\UrlGeneratorInterface::generateFromRoute() for + * the available options. + * + * @return \Drupal\Core\Url + * The URL object. + * + * @deprecated in Drupal 8.0.0, intended to be removed in Drupal 9.0.0 + * Use \Drupal\Core\Entity\EntityInterface::toUrl() instead. + * + * @see https://www.drupal.org/node/2614344 + * @see \Drupal\Core\Entity\EntityInterface::toUrl + */ + public function urlInfo($rel = 'canonical', array $options = []); + + /** + * Gets the URL object for the entity. + * + * The entity must have an id already. Content entities usually get their IDs + * by saving them. + * + * URI templates might be set in the links array in an annotation, for + * example: + * @code + * links = { + * "canonical" = "/node/{node}", + * "edit-form" = "/node/{node}/edit", + * "version-history" = "/node/{node}/revisions" + * } + * @endcode + * or specified in a callback function set like: + * @code + * uri_callback = "comment_uri", + * @endcode + * If the path is not set in the links array, the uri_callback function is + * used for setting the path. If this does not exist and the link relationship + * type is canonical, the path is set using the default template: + * entity/entityType/id. + * + * @param string $rel + * The link relationship type, for example: canonical or edit-form. + * @param array $options + * See \Drupal\Core\Routing\UrlGeneratorInterface::generateFromRoute() for + * the available options. + * + * @return \Drupal\Core\Url + * The URL object. + * + * @throws \Drupal\Core\Entity\EntityMalformedException + * @throws \Drupal\Core\Entity\Exception\UndefinedLinkTemplateException + */ + public function toUrl($rel = 'canonical', array $options = []); + + /** + * Gets the public URL for this entity. + * + * @param string $rel + * The link relationship type, for example: canonical or edit-form. + * @param array $options + * See \Drupal\Core\Routing\UrlGeneratorInterface::generateFromRoute() for + * the available options. + * + * @return string + * The URL for this entity. + * + * @deprecated in Drupal 8.0.0, intended to be removed in Drupal 9.0.0 + * Please use toUrl() instead. + * + * @see https://www.drupal.org/node/2614344 + * @see \Drupal\Core\Entity\EntityInterface::toUrl + */ + public function url($rel = 'canonical', $options = []); + + /** + * Deprecated way of generating a link to the entity. See toLink(). + * + * @param string|null $text + * (optional) The link text for the anchor tag as a translated string. + * If NULL, it will use the entity's label. Defaults to NULL. + * @param string $rel + * (optional) The link relationship type. Defaults to 'canonical'. + * @param array $options + * See \Drupal\Core\Routing\UrlGeneratorInterface::generateFromRoute() for + * the available options. + * + * @return string + * An HTML string containing a link to the entity. + * + * @deprecated in Drupal 8.0.0, intended to be removed in Drupal 9.0.0 + * Please use toLink() instead. + * + * @see https://www.drupal.org/node/2614344 + * @see \Drupal\Core\Entity\EntityInterface::toLink + */ + public function link($text = NULL, $rel = 'canonical', array $options = []); + + /** + * Generates the HTML for a link to this entity. + * + * @param string|null $text + * (optional) The link text for the anchor tag as a translated string. + * If NULL, it will use the entity's label. Defaults to NULL. + * @param string $rel + * (optional) The link relationship type. Defaults to 'canonical'. + * @param array $options + * See \Drupal\Core\Routing\UrlGeneratorInterface::generateFromRoute() for + * the available options. + * + * @return \Drupal\Core\Link + * A Link to the entity. + * + * @throws \Drupal\Core\Entity\EntityMalformedException + * @throws \Drupal\Core\Entity\Exception\UndefinedLinkTemplateException + */ + public function toLink($text = NULL, $rel = 'canonical', array $options = []); + + /** + * Indicates if a link template exists for a given key. + * + * @param string $key + * The link type. + * + * @return bool + * TRUE if the link template exists, FALSE otherwise. + */ + public function hasLinkTemplate($key); + + /** + * Gets a list of URI relationships supported by this entity. + * + * @return string[] + * An array of link relationships supported by this entity. + */ + public function uriRelationships(); + + /** + * Loads an entity. + * + * @param mixed $id + * The id of the entity to load. + * + * @return static + * The entity object or NULL if there is no entity with the given ID. + */ + public static function load($id); + + /** + * Loads one or more entities. + * + * @param array $ids + * An array of entity IDs, or NULL to load all entities. + * + * @return static[] + * An array of entity objects indexed by their IDs. + */ + public static function loadMultiple(array $ids = NULL); + + /** + * Constructs a new entity object, without permanently saving it. + * + * @param array $values + * (optional) An array of values to set, keyed by property name. If the + * entity type has bundles, the bundle key has to be specified. + * + * @return static + * The entity object. + */ + public static function create(array $values = []); + + /** + * Saves an entity permanently. + * + * When saving existing entities, the entity is assumed to be complete, + * partial updates of entities are not supported. + * + * @return int + * Either SAVED_NEW or SAVED_UPDATED, depending on the operation performed. + * + * @throws \Drupal\Core\Entity\EntityStorageException + * In case of failures an exception is thrown. + */ + public function save(); + + /** + * Deletes an entity permanently. + * + * @throws \Drupal\Core\Entity\EntityStorageException + * In case of failures an exception is thrown. + */ + public function delete(); + + /** + * Acts on an entity before the presave hook is invoked. + * + * Used before the entity is saved and before invoking the presave hook. Note + * that in case of translatable content entities this callback is only fired + * on their current translation. It is up to the developer to iterate + * over all translations if needed. This is different from its counterpart in + * the Field API, FieldItemListInterface::preSave(), which is fired on all + * field translations automatically. + * @todo Adjust existing implementations and the documentation according to + * https://www.drupal.org/node/2577609 to have a consistent API. + * + * @param \Drupal\Core\Entity\EntityStorageInterface $storage + * The entity storage object. + * + * @see \Drupal\Core\Field\FieldItemListInterface::preSave() + * + * @throws \Exception + * When there is a problem that should prevent saving the entity. + */ + public function preSave(EntityStorageInterface $storage); + + /** + * Acts on a saved entity before the insert or update hook is invoked. + * + * Used after the entity is saved, but before invoking the insert or update + * hook. Note that in case of translatable content entities this callback is + * only fired on their current translation. It is up to the developer to + * iterate over all translations if needed. + * + * @param \Drupal\Core\Entity\EntityStorageInterface $storage + * The entity storage object. + * @param bool $update + * TRUE if the entity has been updated, or FALSE if it has been inserted. + */ + public function postSave(EntityStorageInterface $storage, $update = TRUE); + + /** + * Changes the values of an entity before it is created. + * + * Load defaults for example. + * + * @param \Drupal\Core\Entity\EntityStorageInterface $storage + * The entity storage object. + * @param mixed[] $values + * An array of values to set, keyed by property name. If the entity type has + * bundles the bundle key has to be specified. + */ + public static function preCreate(EntityStorageInterface $storage, array &$values); + + /** + * Acts on a created entity before hooks are invoked. + * + * Used after the entity is created, but before saving the entity and before + * any of the presave hooks are invoked. + * + * See the @link entity_crud Entity CRUD topic @endlink for more information. + * + * @param \Drupal\Core\Entity\EntityStorageInterface $storage + * The entity storage object. + * + * @see \Drupal\Core\Entity\EntityInterface::create() + */ + public function postCreate(EntityStorageInterface $storage); + + /** + * Acts on entities before they are deleted and before hooks are invoked. + * + * Used before the entities are deleted and before invoking the delete hook. + * + * @param \Drupal\Core\Entity\EntityStorageInterface $storage + * The entity storage object. + * @param \Drupal\Core\Entity\EntityInterface[] $entities + * An array of entities. + */ + public static function preDelete(EntityStorageInterface $storage, array $entities); + + /** + * Acts on deleted entities before the delete hook is invoked. + * + * Used after the entities are deleted but before invoking the delete hook. + * + * @param \Drupal\Core\Entity\EntityStorageInterface $storage + * The entity storage object. + * @param \Drupal\Core\Entity\EntityInterface[] $entities + * An array of entities. + */ + public static function postDelete(EntityStorageInterface $storage, array $entities); + + /** + * Acts on loaded entities. + * + * @param \Drupal\Core\Entity\EntityStorageInterface $storage + * The entity storage object. + * @param \Drupal\Core\Entity\EntityInterface[] $entities + * An array of entities. + */ + public static function postLoad(EntityStorageInterface $storage, array &$entities); + + /** + * Creates a duplicate of the entity. + * + * @return static + * A clone of $this with all identifiers unset, so saving it inserts a new + * entity into the storage system. + */ + public function createDuplicate(); + + /** + * Gets the entity type definition. + * + * @return \Drupal\Core\Entity\EntityTypeInterface + * The entity type definition. + */ + public function getEntityType(); + + /** + * Gets a list of entities referenced by this entity. + * + * @return \Drupal\Core\Entity\EntityInterface[] + * An array of entities. + */ + public function referencedEntities(); + + /** + * Gets the original ID. + * + * @return int|string|null + * The original ID, or NULL if no ID was set or for entity types that do not + * support renames. + */ + public function getOriginalId(); + + /** + * Returns the cache tags that should be used to invalidate caches. + * + * This will not return additional cache tags added through addCacheTags(). + * + * @return string[] + * Set of cache tags. + * + * @see \Drupal\Core\Cache\RefinableCacheableDependencyInterface::addCacheTags() + * @see \Drupal\Core\Cache\CacheableDependencyInterface::getCacheTags() + */ + public function getCacheTagsToInvalidate(); + + /** + * Sets the original ID. + * + * @param int|string|null $id + * The new ID to set as original ID. If the entity supports renames, setting + * NULL will prevent an update from being considered a rename. + * + * @return $this + */ + public function setOriginalId($id); + + /** + * Gets an array of all property values. + * + * @return mixed[] + * An array of property values, keyed by property name. + */ + public function toArray(); + + /** + * Gets a typed data object for this entity object. + * + * The returned typed data object wraps this entity and allows dealing with + * entities based on the generic typed data API. + * + * @return \Drupal\Core\TypedData\ComplexDataInterface + * The typed data object for this entity. + * + * @see \Drupal\Core\TypedData\TypedDataInterface + */ + public function getTypedData(); + + /** + * Gets the key that is used to store configuration dependencies. + * + * @return string + * The key to be used in configuration dependencies when storing + * dependencies on entities of this type. + * + * @see \Drupal\Core\Entity\EntityTypeInterface::getConfigDependencyKey() + */ + public function getConfigDependencyKey(); + + /** + * Gets the configuration dependency name. + * + * Configuration entities can depend on content and configuration entities. + * They store an array of content and config dependency names in their + * "dependencies" key. + * + * @return string + * The configuration dependency name. + * + * @see \Drupal\Core\Config\Entity\ConfigDependencyManager + */ + public function getConfigDependencyName(); + + /** + * Gets the configuration target identifier for the entity. + * + * Used to supply the correct format for storing a reference targeting this + * entity in configuration. + * + * @return string + * The configuration target identifier. + */ + public function getConfigTarget(); + +}