public function DefaultFieldComparator::compareFieldValues in Changed Fields API 8.3
Same name and namespace in other branches
- 8 src/Plugin/FieldComparator/DefaultFieldComparator.php \Drupal\changed_fields\Plugin\FieldComparator\DefaultFieldComparator::compareFieldValues()
- 8.2 src/Plugin/FieldComparator/DefaultFieldComparator.php \Drupal\changed_fields\Plugin\FieldComparator\DefaultFieldComparator::compareFieldValues()
Method that compares old and new field values.
Parameters
Drupal\Core\Field\FieldDefinitionInterface $field_definition: Field definition instance.
array $old_value: Old fields value.
array $new_value: New field value.
Return value
array|bool Returns TRUE if field values are equal or an array of changed field values.
File
- src/
Plugin/ FieldComparator/ DefaultFieldComparator.php, line 159
Class
- DefaultFieldComparator
- Provides default field comparator plugin definition.
Namespace
Drupal\changed_fields\Plugin\FieldComparatorCode
public function compareFieldValues(FieldDefinitionInterface $field_definition, array $old_value, array $new_value) {
$result = TRUE;
$properties = $this
->getComparableProperties($field_definition);
// If value was added or removed then we have already different values.
if (!$old_value && $new_value || $old_value && !$new_value) {
$result = $this
->makeResultArray($old_value, $new_value);
}
else {
if ($old_value && $new_value) {
// If value was added|removed to|from multi-value field then we have
// already different values.
if (count($new_value) != count($old_value)) {
$result = $this
->makeResultArray($old_value, $new_value);
}
else {
// Walk through each field value and compare it's properties.
foreach ($new_value as $key => $value) {
if (is_array($result)) {
break;
}
foreach ($properties as $property) {
if ($new_value[$key][$property] != $old_value[$key][$property]) {
$result = $this
->makeResultArray($old_value, $new_value);
break;
}
}
}
}
}
}
return $result;
}