function webform_update_8155 in Webform 6.x
Same name and namespace in other branches
- 8.5 includes/webform.install.update.inc \webform_update_8155()
Issue #3017679: 2 different validation range modes for date/time field.
File
- includes/
webform.install.update.inc, line 2881 - Archived Webform update hooks.
Code
function webform_update_8155() {
$config_factory = \Drupal::configFactory();
foreach ($config_factory
->listAll('webform.webform.') as $webform_config_name) {
$webform_config = $config_factory
->getEditable($webform_config_name);
$elements = $webform_config
->get('elements');
// Try to decode elements.
try {
$elements = Yaml::decode($elements);
} catch (\Exception $exception) {
continue;
}
// Make sure elements is an array.
if (!is_array($elements)) {
continue;
}
$has_date_element = FALSE;
$flattened_elements =& WebformFormHelper::flattenElements($elements);
foreach ($flattened_elements as &$element) {
// Convert #min/max property to #date_date_(min|max) property.
// @see \Drupal\webform\Entity\Webform::initElementsRecursive
if (isset($element['#type']) && in_array($element['#type'], [
'date',
'datetime',
'datelist',
])) {
$has_date_element = TRUE;
if (isset($element['#min']) && !isset($element['#date_date_min'])) {
$element['#date_date_min'] = $element['#min'];
unset($element['#min']);
}
if (isset($element['#max']) && !isset($element['#date_date_max'])) {
$element['#date_date_max'] = $element['#max'];
unset($element['#max']);
}
}
}
if ($has_date_element) {
$webform_config
->set('elements', Yaml::encode($elements));
$webform_config
->save(TRUE);
}
}
}