protected function OptionsLimitWebformHandler::setOptionsElementDefaultValue in Webform 6.x
Same name and namespace in other branches
- 8.5 modules/webform_options_limit/src/Plugin/WebformHandler/OptionsLimitWebformHandler.php \Drupal\webform_options_limit\Plugin\WebformHandler\OptionsLimitWebformHandler::setOptionsElementDefaultValue()
Set an options element's default value.
Parameters
array $element: An options element with limits.
array $limits: An options element's option limits.
array $reached: An options element's reached options.
string $operation: The form's current operation.
1 call to OptionsLimitWebformHandler::setOptionsElementDefaultValue()
- OptionsLimitWebformHandler::alterElement in modules/
webform_options_limit/ src/ Plugin/ WebformHandler/ OptionsLimitWebformHandler.php - Alter webform element.
File
- modules/
webform_options_limit/ src/ Plugin/ WebformHandler/ OptionsLimitWebformHandler.php, line 578
Class
- OptionsLimitWebformHandler
- Webform options and boolean (boolean) limit handler.
Namespace
Drupal\webform_options_limit\Plugin\WebformHandlerCode
protected function setOptionsElementDefaultValue(array &$element, array $limits, array $reached, $operation) {
$webform_element = $this
->getWebformElement();
$has_multiple_values = $webform_element
->hasMultipleValues($element);
// Make sure the test default value is an enabled option.
if ($operation === 'test') {
$test_values = array_keys($reached ? array_diff_key($limits, $reached) : $limits);
if ($test_values) {
$test_value = $test_values[array_rand($test_values)];
$element['#default_value'] = $has_multiple_values ? [
$test_value,
] : $test_value;
}
else {
$element['#default_value'] = $has_multiple_values ? [] : NULL;
}
}
elseif (!empty($element['#default_value'])) {
$default_value = $element['#default_value'];
if ($has_multiple_values) {
if ($this
->isTableSelectElement()) {
$element['#default_value'] = array_diff($default_value, $reached);
}
else {
$element['#default_value'] = array_values(array_diff($default_value, $reached));
}
}
else {
if (isset($reached[$default_value])) {
$element['#default_value'] = $has_multiple_values ? [] : NULL;
}
}
}
}