Skip to content
This repository has been archived by the owner on Jul 27, 2022. It is now read-only.

Commit

Permalink
ISAICP-3576: Move cardinality limitation on save.
Browse files Browse the repository at this point in the history
  • Loading branch information
claudiu-cristea committed Feb 18, 2021
1 parent a07135d commit 50cceb8
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions src/SparqlEntityStorage.php
Original file line number Diff line number Diff line change
Expand Up @@ -395,27 +395,21 @@ protected function processResults(array $triples, array $graph_ids, array $graph
foreach (array_diff_key($entity, array_flip($processed_fields)) as $predicate => $languages) {
// Complex field with field predicate.
if ($field_name = $this->fieldHandler->getFieldNameByPredicate($entity_type_id, $bundle, $predicate)) {
$cardinality = $this->fieldHandler->getFieldCardinality($entity_type_id, $field_name);
foreach ($languages as $langcode => $values) {
foreach ($values as $delta => $item) {
if ($cardinality === FieldStorageConfigInterface::CARDINALITY_UNLIMITED || $delta < $cardinality) {
foreach ($item as $column_predicate => $value) {
$column_name = $this->fieldHandler->getColumnNameByPredicate($entity_type_id, $bundle, $column_predicate);
$entity[$field_name][$langcode][$delta][$column_name] = $this->fieldHandler->getInboundValue($entity_type_id, $field_name, $value, $langcode, $column_name, $bundle);
}
foreach ($item as $column_predicate => $value) {
$column_name = $this->fieldHandler->getColumnNameByPredicate($entity_type_id, $bundle, $column_predicate);
$entity[$field_name][$langcode][$delta][$column_name] = $this->fieldHandler->getInboundValue($entity_type_id, $field_name, $value, $langcode, $column_name, $bundle);
}
}
}
}
// Simple column mappings.
elseif ($column_name = $this->fieldHandler->getColumnNameByPredicate($entity_type_id, $bundle, $predicate)) {
$field_name = $this->fieldHandler->getColumnFieldNameByPredicate($entity_type_id, $bundle, $predicate);
$cardinality = $this->fieldHandler->getFieldCardinality($entity_type_id, $field_name);
foreach ($languages as $langcode => $values) {
foreach ($values as $delta => $value) {
if ($cardinality === FieldStorageConfigInterface::CARDINALITY_UNLIMITED || $delta < $cardinality) {
$entity[$field_name][$langcode][$delta][$column_name] = $this->fieldHandler->getInboundValue($entity_type_id, $field_name, $value, $langcode, $column_name, $bundle);
}
$entity[$field_name][$langcode][$delta][$column_name] = $this->fieldHandler->getInboundValue($entity_type_id, $field_name, $value, $langcode, $column_name, $bundle);
}
}
}
Expand Down Expand Up @@ -946,6 +940,7 @@ protected function doSave($id, EntityInterface $entity) {
$lang_array = $this->toLangArray($entity);
foreach ($lang_array as $field_name => $langcode_data) {
$field_predicate = $this->fieldHandler->getFieldPredicate($entity_type_id, $field_name);
$cardinality = $this->fieldHandler->getFieldCardinality($entity_type_id, $field_name);
foreach ($langcode_data as $langcode => $field_item_list) {
foreach ($field_item_list as $delta => $field_item) {
// This is a multi-value field, we store the subsequent field item
Expand Down Expand Up @@ -975,6 +970,11 @@ protected function doSave($id, EntityInterface $entity) {
$graph->add($id, $predicate, $value);
}
}

if ($cardinality !== FieldStorageConfigInterface::CARDINALITY_UNLIMITED && $cardinality === $delta + 1) {
// Just reached the max delta for fields with limited cardinality.
break;
}
}
}
}
Expand Down

0 comments on commit 50cceb8

Please sign in to comment.