function FieldTranslationSynchronizer::itemHash

Same name and namespace in other branches
  1. 9 core/modules/content_translation/src/FieldTranslationSynchronizer.php \Drupal\content_translation\FieldTranslationSynchronizer::itemHash()
  2. 8.9.x core/modules/content_translation/src/FieldTranslationSynchronizer.php \Drupal\content_translation\FieldTranslationSynchronizer::itemHash()
  3. 11.x core/modules/content_translation/src/FieldTranslationSynchronizer.php \Drupal\content_translation\FieldTranslationSynchronizer::itemHash()

Computes a hash code for the specified 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.

Return value

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

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 334

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);
}

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