public function WebformSubmission::toArray in Webform 8.5
Same name and namespace in other branches
- 6.x src/Entity/WebformSubmission.php \Drupal\webform\Entity\WebformSubmission::toArray()
Gets an array of all property values.
Return value
mixed[] An array of property values, keyed by property name.
Overrides ContentEntityBase::toArray
File
- src/
Entity/ WebformSubmission.php, line 919
Class
- WebformSubmission
- Defines the WebformSubmission entity.
Namespace
Drupal\webform\EntityCode
public function toArray($custom = FALSE, $check_access = FALSE) {
if ($custom === FALSE) {
return parent::toArray();
}
else {
$values = parent::toArray();
foreach ($values as $key => $item) {
// Issue #2567899 It seems it is impossible to save an empty string to an entity.
// @see https://www.drupal.org/node/2567899
// Solution: Set empty (aka NULL) items to an empty string.
if (empty($item)) {
$values[$key] = '';
}
else {
$value = reset($item);
$values[$key] = reset($value);
}
}
$values['data'] = $this
->getData();
// Check access.
if ($check_access) {
// Check field definition access.
$submission_storage = \Drupal::entityTypeManager()
->getStorage('webform_submission');
$field_definitions = $submission_storage
->getFieldDefinitions();
$field_definitions = $submission_storage
->checkFieldDefinitionAccess($this
->getWebform(), $field_definitions + [
'data' => TRUE,
]);
$values = array_intersect_key($values, $field_definitions);
// Check element data access.
$elements = $this
->getWebform()
->getElementsInitializedFlattenedAndHasValue('view');
$values['data'] = array_intersect_key($values['data'], $elements);
}
return $values;
}
}