views_handler_field_profile_date.inc

Same filename in other branches
  1. 6.x-3.x modules/profile/views_handler_field_profile_date.inc

Definition of views_handler_field_profile_date.

File

modules/profile/views_handler_field_profile_date.inc

View source
<?php


/**
 * @file
 * Definition of views_handler_field_profile_date.
 */

/**
 * Field handler display a profile date.
 *
 * The dates are stored serialized, which makes them mostly useless from
 * SQL. About all we can do is unserialize and display them.
 *
 * @ingroup views_field_handlers
 */
class views_handler_field_profile_date extends views_handler_field_date {
    
    /**
     * {@inheritdoc}
     */
    public function options_form(&$form, &$form_state) {
        parent::options_form($form, $form_state);
        // We can't do "time ago" so remove it from the form.
        unset($form['date_format']['#options']['time ago']);
    }
    
    /**
     * Display a profile field of type 'date'.
     */
    public 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' => gmdate('S', $date),
            'w' => NULL,
            'j' => $value['day'],
            // month.
'F' => gmdate('F', $date),
            'm' => sprintf('%02d', $value['month']),
            'M' => gmdate('M', $date),
            'n' => gmdate('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);
    }

}

Classes

Title Deprecated Summary
views_handler_field_profile_date Field handler display a profile date.