You are here

protected function FieldTranslationSynchronizer::itemHash in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/content_translation/src/FieldTranslationSynchronizer.php \Drupal\content_translation\FieldTranslationSynchronizer::itemHash()

Computes a hash code for the specified item.

@returns string A hash code that can be used to identify the item.

Parameters

array $items: An array of field items.

int $delta: The delta identifying the item to be processed.

array $properties: An array of column names to be synchronized.

1 call to FieldTranslationSynchronizer::itemHash()
FieldTranslationSynchronizer::synchronizeItems in core/modules/content_translation/src/FieldTranslationSynchronizer.php
Synchronize the items of a single field.

File

core/modules/content_translation/src/FieldTranslationSynchronizer.php, line 333

Class

FieldTranslationSynchronizer
Provides field translation synchronization capabilities.

Namespace

Drupal\content_translation

Code

protected function itemHash(array $items, $delta, array $properties) {
  $values = [];
  if (isset($items[$delta])) {
    foreach ($properties as $property) {
      if (!empty($items[$delta][$property])) {
        $value = $items[$delta][$property];

        // String and integer values are by far the most common item values,
        // thus we special-case them to improve performance.
        $values[] = is_string($value) || is_int($value) ? $value : hash('sha256', serialize($value));
      }
      else {

        // Explicitly track also empty values.
        $values[] = '';
      }
    }
  }
  return implode('.', $values);
}