protected function WebformSubmissionStorage::loadData in Webform 6.x
Same name and namespace in other branches
- 8.5 src/WebformSubmissionStorage.php \Drupal\webform\WebformSubmissionStorage::loadData()
Save webform submission data from the 'webform_submission_data' table.
Parameters
array $webform_submissions: An array of webform submissions.
1 call to WebformSubmissionStorage::loadData()
- WebformSubmissionStorage::doLoadMultiple in src/
WebformSubmissionStorage.php - Performs storage-specific loading of entities.
File
- src/
WebformSubmissionStorage.php, line 1375
Class
- WebformSubmissionStorage
- Defines the webform submission storage.
Namespace
Drupal\webformCode
protected function loadData(array &$webform_submissions) {
// Load webform submission data.
if ($sids = array_keys($webform_submissions)) {
/** @var \Drupal\Core\Database\StatementInterface $result */
$result = $this->database
->select('webform_submission_data', 'sd')
->fields('sd', [
'webform_id',
'sid',
'name',
'property',
'delta',
'value',
])
->condition('sd.sid', $sids, 'IN')
->orderBy('sd.sid', 'ASC')
->orderBy('sd.name', 'ASC')
->orderBy('sd.property', 'ASC')
->orderBy('sd.delta', 'ASC')
->execute();
$submissions_data = [];
while ($record = $result
->fetchAssoc()) {
$sid = $record['sid'];
$name = $record['name'];
/** @var \Drupal\webform\WebformInterface $webform */
$webform = $webform_submissions[$sid]
->getWebform();
$elements = $webform ? $webform
->getElementsInitializedFlattenedAndHasValue() : [];
$element = isset($elements[$name]) ? $elements[$name] : [
'#webform_multiple' => FALSE,
'#webform_composite' => FALSE,
];
if ($element['#webform_composite']) {
if ($element['#webform_multiple']) {
$submissions_data[$sid][$name][$record['delta']][$record['property']] = $record['value'];
}
else {
$submissions_data[$sid][$name][$record['property']] = $record['value'];
}
}
elseif ($element['#webform_multiple']) {
$submissions_data[$sid][$name][$record['delta']] = $record['value'];
}
else {
$submissions_data[$sid][$name] = $record['value'];
}
}
// Set webform submission data via setData().
foreach ($submissions_data as $sid => $submission_data) {
$webform_submission = $webform_submissions[$sid];
$webform_submission
->setData($submission_data);
$webform_submission
->setOriginalData($webform_submission
->getData());
}
}
}