/** * Get events for a specific month * Format: 2013-07 * @param type $month */ static function events_for_month($month) { $nextMonth = strtotime('last day of this month', strtotime($month)); $currMonthStr = date('Y-m-d', strtotime($month)); $nextMonthStr = date('Y-m-d', $nextMonth); $sql = "(StartDateTime BETWEEN '{$currMonthStr}' AND '{$nextMonthStr}')" . " OR " . "(EndDateTime BETWEEN '{$currMonthStr}' AND '{$nextMonthStr}')"; $events = PublicEvent::get()->where($sql); return $events; }
/** * Handles returning the JSON events data for a time range. * * @param SS_HTTPRequest $request * @return SS_HTTPResponse */ public function publicevents($request, $json = true, $calendars = null, $offset = 30) { $calendarsSupplied = false; if ($calendars) { $calendarsSupplied = true; } $events = PublicEvent::get()->filter(array('StartDateTime:GreaterThan' => $this->eventlistOffsetDate('start', $request->postVar('start'), $offset), 'EndDateTime:LessThan' => $this->eventlistOffsetDate('end', $request->postVar('end'), $offset))); //If shaded events are enabled we need to filter shaded calendars out //note that this only takes effect when no calendars have been supplied //if calendars are supplied, this needs to be taken care of from that method $sC = CalendarConfig::subpackage_settings('calendars'); if ($sC['shading']) { if (!$calendars) { $calendars = PublicCalendar::get(); $calendars = $calendars->filter(array('shaded' => false)); } } if ($calendars) { $calIDList = $calendars->getIdList(); //adding in 0 to allow for showing events without a calendar if (!$calendarsSupplied) { $calIDList[0] = 0; } //Debug::dump($calIDList); $events = $events->filter('CalendarID', $calIDList); } $result = array(); if ($events) { foreach ($events as $event) { $calendar = $event->Calendar(); $bgColor = '#999'; //default $textColor = '#FFF'; //default $borderColor = '#555'; if ($calendar->exists()) { $bgColor = $calendar->getColorWithHash(); $textColor = '#FFF'; $borderColor = $calendar->getColorWithHash(); } $resultArr = self::format_event_for_fullcalendar($event); $resultArr = array_merge($resultArr, array('backgroundColor' => $bgColor, 'textColor' => '#FFF', 'borderColor' => $borderColor)); $result[] = $resultArr; } } if ($json) { $response = new SS_HTTPResponse(Convert::array2json($result)); $response->addHeader('Content-Type', 'application/json'); return $response; } else { return $result; } }