function test()
 {
     if (!CheckPermissions('admin')) {
         return;
     }
     // Load libraries
     $this->load->library('academic_calendar');
     $this->load->library('calendar_backend');
     $this->load->library('calendar_frontend');
     $this->load->library('calendar_source_yorker');
     $this->load->library('calendar_view_days');
     // Set up data sources
     $data = new CalendarData();
     $sources = array();
     $sources[0] = new CalendarSourceYorker();
     $sources[0]->SetRange(strtotime('-2month'), strtotime('1month'));
     // Accumulate data from sources in $data
     foreach ($sources as $source) {
         try {
             $source->FetchEvents($data);
         } catch (Exception $e) {
             $this->messages->AddMessage('error', 'calendar data source failed: ' . $e->getMessage());
         }
     }
     // Display data
     $days = new CalendarViewDays();
     $days->SetCalendarData($data);
     $this->main_frame->SetContent($days);
     // Load view
     $this->main_frame->Load();
 }
 function GetDays(&$sources, $DateRange = NULL, $Filter = NULL, $Format = 'ac:re')
 {
     // Read date range
     $range = $this->date_uri->ReadUri($DateRange, TRUE);
     $now = new Academic_time(time());
     if ($range['valid']) {
         $start = $range['start'];
         $end = $range['end'];
     } else {
         $start = $now->Midnight();
         $end = $start->Adjust('7day');
     }
     $stretch_end = $end->Adjust($this->mDefaultOverlap);
     $sources->SetRange($start->Timestamp(), $stretch_end->Timestamp());
     $this->ReadFilter($sources, $Filter);
     $create_sources = $this->GetCreateSources($sources);
     $calendar_data = new CalendarData();
     $this->messages->AddMessages($sources->FetchEvents($calendar_data));
     // Display data
     $this->load->library('calendar_frontend');
     $this->load->library('calendar_view_days');
     $days = new CalendarViewDays();
     $days->SetCalendarData($calendar_data);
     $days->SetStartEnd($start->Timestamp(), $end->Timestamp());
     $days->SetPaths($this->mPaths);
     $days->SetRangeFormat($Format);
     $days->SetRangeFilter(NULL !== $Filter ? '/' . $Filter : '');
     $days->SetCategories($this->mCategories);
     $days->EnableCreate(isset($this->mPermissions['create']) && $sources->GetSource(0)->IsSupported('create'));
     $data = array('Filters' => $this->GetFilters($sources), 'ViewMode' => $days, 'RangeDescription' => $range['description'], 'Path' => $this->mPaths, 'CreateSources' => $create_sources);
     if ($now->Timestamp() >= $start->Timestamp() && $now->Timestamp() < $end->Timestamp()) {
         $focus = $now->Midnight();
     } else {
         $focus = $start;
     }
     $this->SetupTabs('days', $focus, $Filter);
     return new FramesView('calendar/my_calendar', $data);
 }
 function GetDays(&$sources, $DateRange = NULL, $Filter = NULL, $Format = 'ac:re')
 {
     $CI =& get_instance();
     // Read date range
     $range = $CI->date_uri->ReadUri($DateRange, TRUE);
     $now = new Academic_time(time());
     if ($range['valid']) {
         $start = $range['start'];
         $end = $range['end'];
     } else {
         $start = $now->Midnight();
         $end = $start->Adjust('7day');
     }
     $sources->SetRange($start->Timestamp(), $end->Timestamp());
     $this->ReadFilter($sources, $Filter);
     $calendar_data = new CalendarData();
     $CI->messages->AddMessages($sources->FetchEvents($calendar_data));
     // Display data
     $CI->load->library('calendar_view_days');
     $days = new CalendarViewDays();
     $days->SetCalendarData($calendar_data);
     $days->SetStartEnd($start->Timestamp(), $end->Timestamp());
     $days->SetRangeUrl($this->mRangeUrl, $Format, NULL !== $Filter ? '/' . $Filter : '');
     $days->SetCategories($this->mCategories);
     $data = array('Filters' => $this->GetFilters($sources), 'ViewMode' => $days, 'RangeDescription' => $range['description'], 'ReadOnly' => $this->mReadOnly, 'Path' => $this->mPaths);
     $this->SetupTabs('days', $start, $Filter);
     return new FramesView('calendar/my_calendar', $data);
 }