EntityChangesDetectionTrait.php

Same filename and directory in other branches
  1. 9 core/lib/Drupal/Core/Entity/EntityChangesDetectionTrait.php
  2. 8.9.x core/lib/Drupal/Core/Entity/EntityChangesDetectionTrait.php
  3. 10 core/lib/Drupal/Core/Entity/EntityChangesDetectionTrait.php

Namespace

Drupal\Core\Entity

File

core/lib/Drupal/Core/Entity/EntityChangesDetectionTrait.php

View source
<?php

namespace Drupal\Core\Entity;


/**
 * Provides helper methods to detect changes in an entity object.
 *
 * @internal This may be replaced by a proper entity comparison handler.
 */
trait EntityChangesDetectionTrait {
    
    /**
     * Returns an array of field names to skip when checking for changes.
     *
     * @param \Drupal\Core\Entity\ContentEntityInterface $entity
     *   A content entity object.
     *
     * @return string[]
     *   An array of field names.
     */
    protected function getFieldsToSkipFromTranslationChangesCheck(ContentEntityInterface $entity) {
        
        /** @var \Drupal\Core\Entity\ContentEntityTypeInterface $entity_type */
        $entity_type = $entity->getEntityType();
        // A list of known revision metadata fields which should be skipped from
        // the comparison.
        $fields = [
            $entity_type->getKey('revision'),
            $entity_type->getKey('revision_translation_affected'),
        ];
        $fields = array_merge($fields, array_values($entity_type->getRevisionMetadataKeys()));
        // Computed fields should be skipped by the check for translation changes.
        foreach (array_diff_key($entity->getFieldDefinitions(), array_flip($fields)) as $field_name => $field_definition) {
            if ($field_definition->isComputed()) {
                $fields[] = $field_name;
            }
        }
        return $fields;
    }

}

Traits

Title Deprecated Summary
EntityChangesDetectionTrait Provides helper methods to detect changes in an entity object.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.