3 namespace Drupal\Core\Entity;
6 * Provides an implementation of a content entity type and its metadata.
8 class ContentEntityType extends EntityType implements ContentEntityTypeInterface {
11 * An array of entity revision metadata keys.
15 protected $revision_metadata_keys = [];
20 public function __construct($definition) {
21 parent::__construct($definition);
23 'storage' => 'Drupal\Core\Entity\Sql\SqlContentEntityStorage',
24 'view_builder' => 'Drupal\Core\Entity\EntityViewBuilder',
31 public function getConfigDependencyKey() {
38 * @throws \InvalidArgumentException
39 * If the provided class does not implement
40 * \Drupal\Core\Entity\ContentEntityStorageInterface.
42 * @see \Drupal\Core\Entity\ContentEntityStorageInterface
44 protected function checkStorageClass($class) {
45 $required_interface = ContentEntityStorageInterface::class;
46 if (!is_subclass_of($class, $required_interface)) {
47 throw new \InvalidArgumentException("$class does not implement $required_interface");
54 public function getRevisionMetadataKeys($include_backwards_compatibility_field_names = TRUE) {
55 // Provide backwards compatibility in case the revision metadata keys are
56 // not defined in the entity annotation.
57 if (!$this->revision_metadata_keys && $include_backwards_compatibility_field_names) {
58 $base_fields = \Drupal::service('entity_field.manager')->getBaseFieldDefinitions($this->id());
59 if ((isset($base_fields['revision_uid']) && $revision_user = 'revision_uid') || (isset($base_fields['revision_user']) && $revision_user = 'revision_user')) {
60 @trigger_error('The revision_user revision metadata key is not set.', E_USER_DEPRECATED);
61 $this->revision_metadata_keys['revision_user'] = $revision_user;
63 if ((isset($base_fields['revision_timestamp']) && $revision_timestamp = 'revision_timestamp') || (isset($base_fields['revision_created'])) && $revision_timestamp = 'revision_created') {
64 @trigger_error('The revision_created revision metadata key is not set.', E_USER_DEPRECATED);
65 $this->revision_metadata_keys['revision_created'] = $revision_timestamp;
67 if ((isset($base_fields['revision_log']) && $revision_log = 'revision_log') || (isset($base_fields['revision_log_message']) && $revision_log = 'revision_log_message')) {
68 @trigger_error('The revision_log_message revision metadata key is not set.', E_USER_DEPRECATED);
69 $this->revision_metadata_keys['revision_log_message'] = $revision_log;
72 return $this->revision_metadata_keys;
78 public function getRevisionMetadataKey($key) {
79 $keys = $this->getRevisionMetadataKeys();
80 return isset($keys[$key]) ? $keys[$key] : FALSE;
86 public function hasRevisionMetadataKey($key) {
87 $keys = $this->getRevisionMetadataKeys();
88 return isset($keys[$key]);