Commit ff806b8d authored by Alan Sherry's avatar Alan Sherry
Browse files

Issue #3325861: Field utility fetch function will not handle fields with cardinality over 1

parent 883f54ac
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -5,6 +5,8 @@ services:
      - '@entity_type.manager'
      - '@entity.definition_update_manager'
      - '@entity_field.manager'
    calls:
      - [setContainer, ['@service_container']]
  apitools.updater.field:
    class: Drupal\apitools\Update\FieldUpdater
    arguments:
+6 −9
Original line number Diff line number Diff line
@@ -93,7 +93,7 @@ class FieldUpdater {
   * @return array
   */
  public function fetchFieldDedicatedStorageRevisionData($entity_type_id, $field_name) {
    return $this->doFetchFieldStorageData($entity_type_id, $field_name, TRUE, 'revision_id', FALSE);
    return $this->doFetchFieldStorageData($entity_type_id, $field_name, TRUE, FALSE);
  }

  /**
@@ -104,7 +104,7 @@ class FieldUpdater {
   * @return mixed
   */
  public function fetchFieldDedicatedStorageData($entity_type_id, $field_name) {
    return $this->doFetchFieldStorageData($entity_type_id, $field_name, FALSE, 'entity_id', FALSE);
    return $this->doFetchFieldStorageData($entity_type_id, $field_name, FALSE, FALSE);
  }

  /**
@@ -116,8 +116,7 @@ class FieldUpdater {
   * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
   */
  public function fetchFieldSharedStorageRevisionData($entity_type_id, $field_name) {
    $id_key = $this->entityTypeManager->getDefinition($entity_type_id)->getKey('revision_id');
    return $this->doFetchFieldStorageData($entity_type_id, $field_name, TRUE, $id_key, TRUE);
    return $this->doFetchFieldStorageData($entity_type_id, $field_name, TRUE, TRUE);
  }

  /**
@@ -129,8 +128,7 @@ class FieldUpdater {
   * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
   */
  public function fetchFieldSharedStorageData($entity_type_id, $field_name) {
    $id_key = $this->entityTypeManager->getDefinition($entity_type_id)->getKey('id');
    return $this->doFetchFieldStorageData($entity_type_id, $field_name, FALSE, $id_key, TRUE);
    return $this->doFetchFieldStorageData($entity_type_id, $field_name, FALSE, TRUE);
  }

  /**
@@ -417,7 +415,7 @@ class FieldUpdater {
    return $query->execute();
  }

  protected function doFetchFieldStorageData($entity_type_id, $field_name, $revision, $fetch_assoc_key, $shared) {
  protected function doFetchFieldStorageData($entity_type_id, $field_name, $revision, $shared) {
    $table_name = $this->getTableName($entity_type_id, $field_name, $revision, $shared, TRUE);
    $query = $this->database->select($table_name, 't');
    $or = $query->orConditionGroup();
@@ -433,8 +431,7 @@ class FieldUpdater {
    else {
      $query->fields('t');
    }
    $query->distinct(TRUE);
    return $query->execute()->fetchAllAssoc($fetch_assoc_key);
    return $query->execute()->fetchAll();
  }

  /**