function views_handler_field_profile_date::render

Same name in other branches
  1. 7.x-3.x modules/profile/views_handler_field_profile_date.inc \views_handler_field_profile_date::render()

Display a profile field of type 'date'

Overrides views_handler_field_date::render

File

modules/profile/views_handler_field_profile_date.inc, line 20

Class

views_handler_field_profile_date
Field handler display a profile date

Code

function render($values) {
    $value = $this->get_value($values);
    if (!$value) {
        return;
    }
    $value = unserialize($value);
    $format = $this->options['date_format'];
    switch ($format) {
        case 'custom':
            $format = $this->options['custom_date_format'];
            break;
        case 'small':
            $format = variable_get('date_format_short', 'm/d/Y - H:i');
            break;
        case 'medium':
            $format = variable_get('date_format_medium', 'D, m/d/Y - H:i');
            break;
        case 'large':
            $format = variable_get('date_format_long', 'l, F j, Y - H:i');
            break;
    }
    // Note: Avoid PHP's date() because it does not handle dates before
    // 1970 on Windows. This would make the date field useless for e.g.
    // birthdays.
    // But we *can* deal with non-year stuff:
    $date = gmmktime(0, 0, 0, $value['month'], $value['day'], $value['year']);
    $replace = array(
        // day
'd' => sprintf('%02d', $value['day']),
        'D' => NULL,
        'l' => NULL,
        'N' => NULL,
        'S' => date('S', $date),
        'w' => NULL,
        'j' => $value['day'],
        // month
'F' => date('F', $date),
        'm' => sprintf('%02d', $value['month']),
        'M' => date('M', $date),
        'n' => date('n', $date),
        'Y' => $value['year'],
        'y' => substr($value['year'], 2, 2),
        // kill time stuff
'a' => NULL,
        'A' => NULL,
        'g' => NULL,
        'G' => NULL,
        'h' => NULL,
        'H' => NULL,
        'i' => NULL,
        's' => NULL,
        ':' => NULL,
        'T' => NULL,
        ' - ' => NULL,
        ':' => NULL,
    );
    return strtr($format, $replace);
}