function views_handler_field_date::render

Same name in other branches
  1. 7.x-3.x handlers/views_handler_field_date.inc \views_handler_field_date::render()

Overrides views_handler_field::render

1 call to views_handler_field_date::render()
views_handler_field_last_comment_timestamp::render in modules/comment/views_handler_field_last_comment_timestamp.inc
Render the field.
2 methods override views_handler_field_date::render()
views_handler_field_last_comment_timestamp::render in modules/comment/views_handler_field_last_comment_timestamp.inc
Render the field.
views_handler_field_profile_date::render in modules/profile/views_handler_field_profile_date.inc
Display a profile field of type 'date'

File

handlers/views_handler_field_date.inc, line 49

Class

views_handler_field_date
A handler to provide proper displays for dates.

Code

function render($values) {
    $value = $this->get_value($values);
    $format = $this->options['date_format'];
    if (in_array($format, array(
        'custom',
        'raw time ago',
        'time ago',
        'raw time hence',
        'time hence',
        'raw time span',
        'inverse time span',
        'time span',
    ))) {
        $custom_format = $this->options['custom_date_format'];
    }
    if ($value) {
        $time_diff = time() - $value;
        // will be positive for a datetime in the past (ago), and negative for a datetime in the future (hence)
        switch ($format) {
            case 'raw time ago':
                return format_interval($time_diff, is_numeric($custom_format) ? $custom_format : 2);
            case 'time ago':
                return t('%time ago', array(
                    '%time' => format_interval($time_diff, is_numeric($custom_format) ? $custom_format : 2),
                ));
            case 'raw time hence':
                return format_interval(-$time_diff, is_numeric($custom_format) ? $custom_format : 2);
            case 'time hence':
                return t('%time hence', array(
                    '%time' => format_interval(-$time_diff, is_numeric($custom_format) ? $custom_format : 2),
                ));
            case 'raw time span':
                return ($time_diff < 0 ? '-' : '') . format_interval(abs($time_diff), is_numeric($custom_format) ? $custom_format : 2);
            case 'inverse time span':
                return ($time_diff > 0 ? '-' : '') . format_interval(abs($time_diff), is_numeric($custom_format) ? $custom_format : 2);
            case 'time span':
                return t($time_diff < 0 ? '%time hence' : '%time ago', array(
                    '%time' => format_interval(abs($time_diff), is_numeric($custom_format) ? $custom_format : 2),
                ));
            case 'custom':
                if ($custom_format == 'r') {
                    return format_date($value, $format, $custom_format, null, 'en');
                }
                return format_date($value, $format, $custom_format);
            default:
                return format_date($value, $format);
        }
    }
}