function oa_events_field_formatter_view in Open Atrium Events 7.2
Implements hook_field_formatter_view().
File
- ./
oa_events.module, line 175 - Code for the OA Events feature.
Code
function oa_events_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
if ($display['type'] == 'oa_events_addthis' && variable_get('oa_events_addthis', FALSE)) {
if (isset($entity->panelizer_view_mode) && $entity->panelizer_view_mode == 'featured') {
$element[0]['#markup'] = '';
}
else {
$element[0]['#markup'] = oa_events_field_add_to_calendar_markup($entity->nid, $items, t('Add to Calendar'));
}
}
elseif ($display['type'] == 'oa_events_date_formatter') {
$event_info = oa_events_find_next_event($items);
$event = $event_info['event'];
// Create Date objects from item values.
$timezone_object = date_default_timezone_object();
$start_date = new DateObject($event['value'], $event['timezone_db'], DATE_FORMAT_UNIX);
$start_date
->setTimezone($timezone_object);
$end_date = new DateObject($event['value2'], $event['timezone_db'], DATE_FORMAT_UNIX);
$end_date
->setTimezone($timezone_object);
// Create an array of month / day information for ease of use.
$dates = array(
'start' => array(
'day' => date_format_date($start_date, 'custom', 'd'),
'month' => date_format_date($start_date, 'custom', 'M'),
),
'end' => array(
'day' => date_format_date($end_date, 'custom', 'd'),
'month' => date_format_date($end_date, 'custom', 'M'),
),
);
// For now always use the start date. We may add multi-day event to the
// widget at some point in the future.
$day = $dates['start']['day'];
$month = $dates['start']['month'];
$element[0] = array(
'#markup' => theme('oa_event_date', array(
'month' => $month,
'day' => $day,
)),
);
}
elseif ($display['type'] == 'oa_events_upcoming_date') {
$event_info = oa_events_find_next_event($items);
$event = $event_info['event'];
// Create Date objects from item values.
$timezone_object = date_default_timezone_object();
$start_date = new DateObject($event['value'], $event['timezone_db'], DATE_FORMAT_UNIX);
$start_date
->setTimezone($timezone_object);
$end_date = new DateObject($event['value2'], $event['timezone_db'], DATE_FORMAT_UNIX);
$end_date
->setTimezone($timezone_object);
$date_formatted = '';
$time_formatted = '';
$rrule = '';
$is_all_day = date_all_day_field($field, $instance, $start_date, $end_date);
$date_format = variable_get('oa_events_date2_format', OA_EVENTS_DATE2_FORMAT);
$time_format = variable_get('oa_events_time_format', OA_EVENTS_TIME_FORMAT);
// Create an array of time / date information for ease of use.
$dates = array(
'start' => array(
'time' => date_format_date($start_date, 'custom', $time_format),
'date' => date_format_date($start_date, 'custom', $date_format),
),
'end' => array(
'time' => date_format_date($end_date, 'custom', $time_format),
'date' => date_format_date($end_date, 'custom', $date_format),
),
);
// Format date.
if ($dates['start']['date'] == $dates['end']['date']) {
$date_formatted = $dates['start']['date'];
}
else {
$date_formatted = $dates['start']['date'] . ' - ' . $dates['end']['date'];
}
// Format time.
if ($is_all_day) {
$time_formatted = theme('date_all_day_label');
}
elseif ($dates['start']['time'] == $dates['end']['time']) {
$time_formatted = $dates['start']['time'];
}
else {
$time_formatted = $dates['start']['time'] . ' - ' . $dates['end']['time'];
}
// Format rrule.
if (isset($event['rrule'])) {
$rrule = date_repeat_rrule_description($event['rrule']);
}
// Theme the result.
$element[0] = array(
'#markup' => theme('oa_event_next_date', array(
'date' => $date_formatted,
'time' => $time_formatted,
'rrule' => $rrule,
)),
);
}
return $element;
}