public static function WebformSubmissionViewsReplace::processWebformSubmissionViewsReplace in Webform 8.5
Same name and namespace in other branches
- 6.x src/Element/WebformSubmissionViewsReplace.php \Drupal\webform\Element\WebformSubmissionViewsReplace::processWebformSubmissionViewsReplace()
Processes a webform submission views replacement element.
File
- src/
Element/ WebformSubmissionViewsReplace.php, line 47
Class
- WebformSubmissionViewsReplace
- Provides a form element for selecting webform submission views replacement routes.
Namespace
Drupal\webform\ElementCode
public static function processWebformSubmissionViewsReplace(&$element, FormStateInterface $form_state, &$complete_form) {
$is_global = !empty($element['#global']) ? TRUE : FALSE;
$element['#tree'] = TRUE;
$element['#value'] = !is_array($element['#value']) ? [] : $element['#value'];
$element['#value'] += [
'global_routes' => [],
'webform_routes' => [],
'node_routes' => [],
];
// Global routes.
if ($is_global) {
$element['global_routes'] = [
'#type' => 'checkboxes',
'#title' => t('Replace the global results with submission views'),
'#options' => [
'entity.webform_submission.collection' => t('Submissions'),
'entity.webform_submission.user' => t('User'),
],
'#default_value' => $element['#value']['global_routes'],
'#element_validate' => [
[
'\\Drupal\\webform\\Utility\\WebformElementHelper',
'filterValues',
],
],
];
}
// Webform routes.
$webform_routes_options = [
'entity.webform.results_submissions' => t('Submissions'),
'entity.webform.user.drafts' => t('User drafts'),
'entity.webform.user.submissions' => t('User submissions'),
];
if (!$is_global) {
$default_webform_routes = \Drupal::configFactory()
->get('webform.settings')
->get('settings.default_submission_views_replace.webform_routes') ?: [];
if ($webform_routes_options) {
$webform_routes_options = array_diff_key($webform_routes_options, array_flip($default_webform_routes));
}
}
$element['webform_routes'] = [
'#type' => 'checkboxes',
'#title' => t('Replace the webform results with submission views'),
'#options' => $webform_routes_options,
'#default_value' => $webform_routes_options ? $element['#value']['webform_routes'] : [],
'#access' => $webform_routes_options ? TRUE : FALSE,
'#element_validate' => [
[
'\\Drupal\\webform\\Utility\\WebformElementHelper',
'filterValues',
],
],
];
// Node routes.
$node_routes_options = [
'entity.node.webform.results_submissions' => t('Submissions'),
'entity.node.webform.user.drafts' => t('User drafts'),
'entity.node.webform.user.submissions' => t('User submissions'),
];
if (!$is_global) {
$default_node_routes = \Drupal::configFactory()
->get('webform.settings')
->get('settings.default_submission_views_replace.node_routes') ?: [];
if ($default_node_routes) {
$node_routes_options = array_diff_key($node_routes_options, array_flip($default_node_routes));
}
}
$element['node_routes'] = [
'#type' => 'checkboxes',
'#title' => t('Replace the node results with submission views'),
'#options' => $node_routes_options,
'#default_value' => $node_routes_options ? $element['#value']['node_routes'] : [],
'#access' => $node_routes_options && \Drupal::moduleHandler()
->moduleExists('webform_node') ? TRUE : FALSE,
'#element_validate' => [
[
'\\Drupal\\webform\\Utility\\WebformElementHelper',
'filterValues',
],
],
];
// Add validate callback that extracts the array of items.
$element += [
'#element_validate' => [],
];
array_unshift($element['#element_validate'], [
get_called_class(),
'validateWebformSubmissionViewsReplace',
]);
return $element;
}