function form_process_date

Expands a date element into year, month, and day select elements.

Related topics

1 string reference to 'form_process_date'
system_element_info in modules/system/system.module
Implements hook_element_info().

File

includes/form.inc, line 3097

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 = variable_get('date_format_short', 'm/d/Y - H:i');
    $sort = array();
    $sort['day'] = max(strpos($format, 'd'), strpos($format, 'j'));
    $sort['month'] = max(strpos($format, 'm'), strpos($format, 'M'));
    $sort['year'] = strpos($format, 'Y');
    asort($sort);
    $order = array_keys($sort);
    // Output multi-selector for date.
    foreach ($order as $type) {
        switch ($type) {
            case 'day':
                $options = drupal_map_assoc(range(1, 31));
                $title = t('Day');
                break;
            case 'month':
                $options = drupal_map_assoc(range(1, 12), 'map_month');
                $title = t('Month');
                break;
            case 'year':
                $options = drupal_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;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.