function index() { $this->view->set('clickaction', 'view'); $s_data = array(); $s_data['owner'] = EGS_USERNAME; $this->setSearch('CalendarSearch', 'useDefault', $s_data); parent::index(new CalendarCollection($this->_templateobject)); $calendar = new CalendarCollection($this->_templateobject); $sh = new SearchHandler($calendar, false); $sh->addConstraint(new Constraint('owner', '=', EGS_USERNAME)); $sh->setOrderby('name', 'ASC'); $calendar->load($sh); if (isset($this->search) && ($this->isPrintDialog() || $this->isPrinting())) { $this->printCollection($calendar); } $this->view->set('calendar', $calendar); $this->view->set('num_records', $calendar->num_records); $sidebar = new SidebarController($this->view); $sidebar->addList('Events', array('new_event' => array('link' => array('module' => 'calendar', 'controller' => 'calendarevents', 'action' => 'new'), 'tag' => 'new_event'), 'view_events' => array('link' => array('module' => 'calendar', 'controller' => 'calendarevents', 'action' => 'index'), 'tag' => 'view_events'))); $sidebar->addList('Tasks', array('new_task' => array('link' => array('module' => 'projects', 'controller' => 'tasks', 'action' => 'new'), 'tag' => 'new_task'), 'view_tasks' => array('link' => array('module' => 'projects', 'controller' => 'tasks', 'action' => 'index'), 'tag' => 'view_tasks'))); $sidebar->addList('calendar_views', array('view_calendar' => array('link' => array('module' => 'calendar'), 'tag' => 'View Calendar'))); $sidebar->addList('calendars', array('new_personal_calendar' => array('link' => array('module' => 'calendar', 'controller' => 'calendars', 'action' => 'new_personal'), 'tag' => 'new_personal_calendar'), 'new_group_calendar' => array('link' => array('module' => 'calendar', 'controller' => 'calendars', 'action' => 'new_group'), 'tag' => 'new_group_calendar'), 'add_google_calendar' => array('link' => array('module' => 'calendar', 'controller' => 'calendars', 'action' => 'new_gcal'), 'tag' => 'add_google_calendar'))); $this->view->register('sidebar', $sidebar); $this->view->set('sidebar', $sidebar); }
function getCalendarList($options = array()) { $calendars = new CalendarCollection(new Calendar()); $sh = new SearchHandler($calendars, false); $cc = new ConstraintChain(); $cc->add(new Constraint('owner', '=', EGS_USERNAME)); $cc->add(new Constraint('username', '=', EGS_USERNAME), 'OR'); $sh->addConstraintChain($cc); $sh->setOrderby('name', 'ASC'); $calendars->load($sh); $calendar_list = $calendars->getArray(); if (count($calendar_list) > 0) { foreach ($calendar_list as $key => $value) { if (isset($options[$value['id']]['status']) && $options[$value['id']]['status'] == 'on') { $calendar_list[$key]['show'] = true; } else { $calendar_list[$key]['show'] = false; } switch ($value['type']) { case "personal": case "group": $calendar_list[$key]['url'] = "/?module=calendar&controller=index&action=getJSON&id=" . $value['id']; break; case "gcal": $calendar_list[$key]['url'] = $calendar_list[$key]['gcal_url']; break; } $calendar_list[$key]['className'] = str_replace("#", "", $calendar_list[$key]['colour']); } } return $calendar_list; }
/** * getWritableCalendars * * Used to return an array of calendars that a specific user has write access to * This will automatically exclude gcal until write functionality has been developed * * @return array of writable calendars */ function getWritableCalendars($calendar_id = '') { $calendar = new CalendarCollection($this); $sh = new SearchHandler($calendar, false); if (!empty($calendar_id)) { $sh->addConstraint(new Constraint('id', '=', $calendar_id)); } $sh->addConstraint(new Constraint('type', '!=', 'gcal')); $sh->addConstraint(new Constraint('owner', '=', EGS_USERNAME)); $cc = new ConstraintChain(); $cc->add(new Constraint('type', '=', 'group')); $cc->add(new Constraint('username', '=', EGS_USERNAME)); $sh->addConstraintChain($cc, 'OR'); $sh->setOrderby('name'); $sh->setGroupBy('id'); $calendar->load($sh); $calendar_id = array(); foreach ($calendar as $key => $value) { $calendar_id[$value->id] = $value->name . " (" . $value->owner . ")"; } return $calendar_id; }
/** * Initialize the calendar object we are going to test */ protected function setup() { $backendMocks = []; $backendMocks[0] = $this->getMock('\\OCA\\Calendar\\IBackend'); $backendMocks[0]->expects($this->any())->method('getId')->will($this->returnValue('database123')); $backendMocks[1] = $this->getMock('\\OCA\\Calendar\\IBackend'); $backendMocks[1]->expects($this->any())->method('getId')->will($this->returnValue('caldav456')); $timezoneMocks = []; $timezoneMocks[0] = $this->getMock('\\OCA\\Calendar\\ITimezone'); $timezoneMocks[0]->expects($this->any())->method('getTzId')->will($this->returnValue('Europe/Berlin')); $timezoneMocks[0]->expects($this->any())->method('isValid')->will($this->returnValue(true)); $timezoneMocks[1] = $this->getMock('\\OCA\\Calendar\\ITimezone'); $timezoneMocks[1]->expects($this->any())->method('getTzId')->will($this->returnValue('Europe/London')); $timezoneMocks[1]->expects($this->any())->method('isValid')->will($this->returnValue(true)); $this->calendars = []; $this->calendars[] = ['backend' => $backendMocks[0], 'color' => 'rgba(255,255,255,1.0)', 'cruds' => Permissions::READ, 'components' => ObjectType::EVENT, 'ctag' => 1, 'description' => 'Some random description text', 'displayname' => 'Random cal', 'enabled' => false, 'order' => 10, 'ownerId' => 'user123', 'timezone' => $timezoneMocks[0], 'publicUri' => 'test-calendar', 'privateUri' => 'another-test-calendar', 'userId' => 'user456', 'fileId' => 1]; $this->calendars[] = ['backend' => $backendMocks[1], 'color' => 'rgba(0,0,0,0.8)', 'cruds' => Permissions::READ + Permissions::DELETE, 'components' => ObjectType::EVENT + ObjectType::TODO, 'ctag' => 2, 'description' => 'Another random description text', 'displayname' => 'Another cal', 'enabled' => true, 'order' => 15, 'ownerId' => 'user456', 'timezone' => $timezoneMocks[1], 'publicUri' => 'test-calendar-2', 'privateUri' => 'another-test-calendar-2', 'userId' => 'user123', 'fileId' => 2]; $this->calendarCollection = CalendarCollection::fromArray($this->calendars); }