You are here

public function FullCalendarFixedStateEventFormatter::format in Booking and Availability Management Tools for Drupal 7

Same name and namespace in other branches
  1. 8 modules/bat_fullcalendar/src/FullCalendarFixedStateEventFormatter.php \Drupal\bat_fullcalendar\FullCalendarFixedStateEventFormatter::format()

File

modules/bat_fullcalendar/src/FullCalendarFixedStateEventFormatter.php, line 41
Class FullCalendarFixedStateEventFormatter.

Class

FullCalendarFixedStateEventFormatter

Namespace

Drupal\bat_fullcalendar

Code

public function format(EventInterface $event) {
  $editable = FALSE;
  $context = array();

  // Load the unit entity from Drupal.
  $bat_unit = bat_unit_load($event
    ->getUnitId());

  // Get the unit entity default value.
  $default_value = $bat_unit
    ->getEventDefaultValue($this->event_type->type);

  // Get the default state info which will provide the default value for formatting.
  $state_info = bat_event_load_state($default_value);

  // However if the event is in the database, then load the actual event and get its value.
  if ($event
    ->getValue()) {

    // Load the event from the database to get the actual state and load that info.
    $bat_event = bat_event_load($event
      ->getValue());
    $temp_value = $bat_event
      ->getEventValue();
    $state_info = bat_event_load_state($bat_event
      ->getEventValue());

    // Set calendar label from event.
    $state_info['calendar_label'] = $bat_event
      ->label();
    if (bat_event_access('update', $bat_event)) {
      $editable = TRUE;
    }
    $context['bat_event'] = $bat_event;
    $context['state_info'] = $state_info;
  }
  $formatted_event = array(
    'start' => $event
      ->startYear() . '-' . $event
      ->startMonth('m') . '-' . $event
      ->startDay('d') . 'T' . $event
      ->startHour('H') . ':' . $event
      ->startMinute() . ':00',
    'end' => $event
      ->endYear() . '-' . $event
      ->endMonth('m') . '-' . $event
      ->endDay('d') . 'T' . $event
      ->endHour('H') . ':' . $event
      ->endMinute() . ':00',
    'title' => $state_info['calendar_label'],
    'color' => $state_info['color'],
    'blocking' => 1,
    'fixed' => 1,
    'editable' => $editable,
  );

  // Render non blocking events in the background.
  if ($state_info['blocking'] == 0) {
    if ($this->background) {
      $formatted_event['rendering'] = 'background';
    }
    $formatted_event['blocking'] = 0;
  }
  $formatted_event['type'] = $this->event_type->type;

  // Allow other modules to alter the event data.
  drupal_alter('bat_fullcalendar_formatted_event', $formatted_event, $context);
  return $formatted_event;
}