You are here

protected function D7WebformSubmission::buildSubmittedData in Webform: Migrate 8

Same name and namespace in other branches
  1. 8.2 src/Plugin/migrate/source/d7/D7WebformSubmission.php \Drupal\webform_migrate\Plugin\migrate\source\d7\D7WebformSubmission::buildSubmittedData()

Build submitted data from webform submitted data table.

1 call to D7WebformSubmission::buildSubmittedData()
D7WebformSubmission::prepareRow in src/Plugin/migrate/source/d7/D7WebformSubmission.php
Adds additional data to the row.

File

src/Plugin/migrate/source/d7/D7WebformSubmission.php, line 81

Class

D7WebformSubmission
Drupal 7 webform submission source from database.

Namespace

Drupal\webform_migrate\Plugin\migrate\source\d7

Code

protected function buildSubmittedData($sid) {
  $query = $this
    ->select('webform_submitted_data', 'wfsd');
  $query
    ->innerJoin('webform_component', 'wc', 'wc.nid=wfsd.nid AND wc.cid=wfsd.cid');
  $query
    ->fields('wfsd', [
    'no',
    'data',
  ])
    ->fields('wc', [
    'form_key',
    'extra',
    'type',
    'pid',
  ]);
  $wf_submissions = $query
    ->condition('sid', $sid)
    ->execute();
  $submitted_data = [];
  foreach ($wf_submissions as $wf_submission) {
    $extra = unserialize($wf_submission['extra']);

    // Nested form values will get their parent form item's ID as suffix, so
    // the source and the destination form keys are not always equal.
    $src_form_key = $wf_submission['form_key'];
    $destination_form_key = $wf_submission['pid'] ? "{$src_form_key}_{$wf_submission['pid']}" : $src_form_key;
    $is_multiple = !empty($extra['multiple']) || $wf_submission['type'] === 'grid';
    $item = $is_multiple ? $submitted_data[$destination_form_key] ?? [] : $wf_submission['data'];
    if ($is_multiple && !empty($wf_submission['data'])) {
      $item[$wf_submission['no']] = $wf_submission['data'];
    }
    if (!empty($item)) {
      $submitted_data[$destination_form_key] = $item;
    }
  }
  return $submitted_data;
}