1 form.inc | form_process_date($element) |
Expands a date element into year, month, and day select elements.
Related topics
File
- core/
includes/ form.inc, line 3124 - Functions for form and batch generation and processing.
Code
function form_process_date($element) {
// Default to current date
if (empty($element['#value'])) {
$element['#value'] = array(
'day' => format_date(REQUEST_TIME, 'custom', 'j'),
'month' => format_date(REQUEST_TIME, 'custom', 'n'),
'year' => format_date(REQUEST_TIME, 'custom', 'Y'),
);
}
$element['#tree'] = TRUE;
// Determine the order of day, month, year in the site's chosen date format.
$format = system_date_format_load('short');
$sort = array();
$sort['day'] = max(strpos($format['pattern'], 'd'), strpos($format['pattern'], 'j'));
$sort['month'] = max(strpos($format['pattern'], 'm'), strpos($format['pattern'], 'M'));
$sort['year'] = strpos($format['pattern'], 'Y');
asort($sort);
$order = array_keys($sort);
// Output multi-selector for date.
foreach ($order as $type) {
switch ($type) {
case 'day':
$options = backdrop_map_assoc(range(1, 31));
$title = t('Day');
break;
case 'month':
$options = backdrop_map_assoc(range(1, 12), 'map_month');
$title = t('Month');
break;
case 'year':
$options = backdrop_map_assoc(range(1900, 2050));
$title = t('Year');
break;
}
$element[$type] = array(
'#type' => 'select',
'#title' => $title,
'#title_display' => 'invisible',
'#value' => $element['#value'][$type],
'#attributes' => $element['#attributes'],
'#options' => $options,
);
}
return $element;
}