function form_type_datetime_value

Value callback for a datetime element.

Parameters

array $element: The form element whose value is being populated.

array $input: (optional) The incoming input to populate the form element. If this is FALSE, the element's default value should be returned. Defaults to FALSE.

Return value

array The data that will appear in the $element_state['values'] collection for this element. Return nothing to use the default.

File

drupal/core/modules/datetime/datetime.module, line 601
Field hooks to implement a simple datetime field.

Code

function form_type_datetime_value($element, $input = FALSE) {
  if ($input !== FALSE) {
    $date_input = $element['#date_date_element'] != 'none' && !empty($input['date']) ? $input['date'] : '';
    $time_input = $element['#date_time_element'] != 'none' && !empty($input['time']) ? $input['time'] : '';
    $date_format = $element['#date_date_element'] != 'none' ? datetime_html5_format('date', $element) : '';
    $time_format = $element['#date_time_element'] != 'none' ? datetime_html5_format('time', $element) : '';
    $timezone = !empty($element['#date_timezone']) ? $element['#date_timezone'] : NULL;

    // Seconds will be omitted in a post in case there's no entry.
    if (!empty($time_input) && strlen($time_input) == 5) {
      $time_input .= ':00';
    }
    $date = new DrupalDateTime(trim($date_input . ' ' . $time_input), $timezone, trim($date_format . ' ' . $time_format));
    $input = array(
      'date' => $date_input,
      'time' => $time_input,
      'object' => $date instanceof DrupalDateTime && !$date
        ->hasErrors() ? $date : NULL,
    );
  }
  else {
    $date = $element['#default_value'];
    if ($date instanceof DrupalDateTime && !$date
      ->hasErrors()) {
      $input = array(
        'date' => $date
          ->format($element['#date_date_format']),
        'time' => $date
          ->format($element['#date_time_format']),
        'object' => $date,
      );
    }
    else {
      $input = array(
        'date' => '',
        'time' => '',
        'object' => NULL,
      );
    }
  }
  return $input;
}