diff --git a/core/lib/Drupal/Core/Entity/ContentEntityType.php b/core/lib/Drupal/Core/Entity/ContentEntityType.php index 1c2b391015..143ff3757b 100644 --- a/core/lib/Drupal/Core/Entity/ContentEntityType.php +++ b/core/lib/Drupal/Core/Entity/ContentEntityType.php @@ -54,23 +54,22 @@ protected function checkStorageClass($class) { public function getRevisionMetadataKeys($include_backwards_compatibility_field_names = TRUE) { // Provide backwards compatibility in case the revision metadata keys are // not defined in the entity annotation. - if ($include_backwards_compatibility_field_names && count($this->revision_metadata_keys) < 4) { - $base_fields = \Drupal::service('entity_field.manager')->getBaseFieldDefinitions($this->id()); - if ((isset($base_fields['revision_uid']) && $revision_user = 'revision_uid') || (isset($base_fields['revision_user']) && $revision_user = 'revision_user')) { - @trigger_error('The revision_user revision metadata key is not set.', E_USER_DEPRECATED); - $this->revision_metadata_keys['revision_user'] = $revision_user; - } - if ((isset($base_fields['revision_timestamp']) && $revision_timestamp = 'revision_timestamp') || (isset($base_fields['revision_created'])) && $revision_timestamp = 'revision_created') { - @trigger_error('The revision_created revision metadata key is not set.', E_USER_DEPRECATED); - $this->revision_metadata_keys['revision_created'] = $revision_timestamp; - } - if ((isset($base_fields['revision_log']) && $revision_log = 'revision_log') || (isset($base_fields['revision_log_message']) && $revision_log = 'revision_log_message')) { - @trigger_error('The revision_log_message revision metadata key is not set.', E_USER_DEPRECATED); - $this->revision_metadata_keys['revision_log_message'] = $revision_log; - } - if (isset($base_fields['revision_default'])) { - @trigger_error('The revision_default revision metadata key is not set.', E_USER_DEPRECATED); - $this->revision_metadata_keys['revision_default'] = 'revision_default'; + if ($include_backwards_compatibility_field_names) { + $required_keys = [ + 'revision_user' => 'revision_uid', + 'revision_created' => 'revision_timestamp', + 'revision_log_message' => 'revision_log', + 'revision_default' => 'revision_default', + ]; + $missing_keys = array_diff_key($required_keys, $this->revision_metadata_keys); + if ($missing_keys) { + $base_fields = \Drupal::service('entity_field.manager')->getBaseFieldDefinitions($this->id()); + foreach ($missing_keys as $key => $field_name) { + if (isset($base_fields[$field_name]) || (isset($base_fields[$key]) && $field_name = $key)) { + @trigger_error("The $key revision metadata key is not set.", E_USER_DEPRECATED); + $this->revision_metadata_keys[$key] = $field_name; + } + } } } return $this->revision_metadata_keys;