/**
  * @param $fullCalendarID int the id of the FullCalendar page to return events for
  * @param $singleEventID int the fullCalendarID of a single event
  */
 public function generateEventList($fullCalendarID = null, $singleEventID = null)
 {
     if (!is_null($fullCalendarID)) {
         $events = FullCalendarEvent::get()->filter(array('ParentID' => $fullCalendarID));
     } else {
         $events = FullCalendarEvent::get()->filter(array('ID' => $singleEventID))->first();
     }
     file_put_contents($this->filePath, '');
     // Events
     $calendarEvents = array();
     foreach ($events as $event) {
         $params = array('start' => new DateTime($event->StartDate), 'end' => new DateTime($event->EndDate), 'summary' => $event->Title, 'description' => $event->ShortDescription, 'location' => "");
         $calendarEvent = new CalendarEvent($params);
         array_push($calendarEvents, $calendarEvent->generateString());
     }
     // Calendar
     $calendarParams = array('events' => $calendarEvents, 'title' => 'Calendar', 'author' => 'Calender Generator');
     $calendar = new Calendar($calendarParams);
     file_put_contents($this->filePath, $calendar->generateDownload(), FILE_APPEND);
 }
 /**
  * Return a list of events but we don't care about past events so exclude anything that ended before today.
  * Sort the list so that the next upcoming event is at the top, and work down from there.
  *
  * @return mixed
  */
 public function getEvent()
 {
     $filter = array('ParentID' => $this->Parent()->ID, 'EndDate:GreaterThan' => date("Y-m-d"));
     return PaginatedList::create(FullCalendarEvent::get()->filter($filter)->sort("EndDate ASC"), $this->request);
 }
 /**
  * Decides what filter to use based on user settings, returns all events that match
  *
  * @return string
  */
 public function getData()
 {
     if ($this->LegacyEvents) {
         $filter = array('ParentID' => $this->ID, 'IncludeOnCalendar' => true);
     } else {
         $filter = array('ParentID' => $this->ID, 'IncludeOnCalendar' => true, 'EndDate:GreaterThan' => date("Y-m-d"));
     }
     $result = array();
     foreach (FullCalendarEvent::get()->filter($filter) as $event) {
         $result[] = array("view" => $this->CalendarView, "firstDay" => $this->FirstDay, "columnFormat" => $this->ColumnFormat, "title" => $event->Title, "start" => $event->StartDate, "end" => $event->EndDate, "color" => $event->BackgroundColor, "textColor" => $event->TextColor, "startDate" => $this->getDateFormat($event, 'StartDate'), "endDate" => $this->getDateFormat($event, 'EndDate'), "eventUrl" => $event->URLSegment, "content" => $event->Content, "shortContent" => $this->getShortDescription($event));
     }
     return json_encode($result);
 }
 public function updateCMSFields(FieldList $fields)
 {
     $events = FullCalendarEvent::get()->filter(array('ParentID' => $this->owner->ID))->sort('StartDate ASC');
     $gridField = EventFilter_GridField::create('CalendarEvents', $this->getLumberjackTitle(), $events, $this->owner->getLumberjackGridFieldConfig());
     $fields->insertBefore(Tab::create('CalendarEvents', $this->getLumberjackTitle(), $gridField), 'Main');
 }