/** * Search for query in calendar events * * @param string $query * @return array list of \OCA\Calendar\Search\Event */ function search($query) { $calendars = \OC_Calendar_Calendar::allCalendars(\OCP\USER::getUser(), true); // check if the calenar is enabled if (count($calendars) == 0 || !\OCP\App::isEnabled('calendar')) { return array(); } $results = array(); foreach ($calendars as $calendar) { $objects = \OC_Calendar_Object::all($calendar['id']); $date = strtotime($query); // search all calendar objects, one by one foreach ($objects as $object) { // skip non-events if ($object['objecttype'] != 'VEVENT') { continue; } // check the event summary string if (stripos($object['summary'], $query) !== false) { $results[] = new \OCA\Calendar\Search\Event($object); continue; } // check if the event is happening on a queried date $range = $this->getDateRange($object); if ($date && $this->fallsWithin($date, $range)) { $results[] = new \OCA\Calendar\Search\Event($object); continue; } } } return $results; }
function testBasic() { $uid = uniqid(); $this->assertEquals(OC_Calendar_Calendar::allCalendars($uid), array()); OC_User::setUserId($uid); $calId1 = OC_Calendar_Calendar::addCalendar($uid, 'test'); $all = OC_Calendar_Calendar::allCalendars($uid); $this->assertEquals(count($all), 1); $this->assertEquals($all[0]['id'], $calId1); $this->assertEquals($all[0]['displayname'], 'test'); $this->assertEquals($all[0]['uri'], 'test'); $this->assertEquals($uid, $all[0]['userid']); $calId2 = OC_Calendar_Calendar::addCalendar($uid, 'test'); $this->assertNotEquals($calId1, $calId2); $all = OC_Calendar_Calendar::allCalendars($uid); $this->assertEquals(count($all), 2); $this->assertEquals($all[1]['id'], $calId2); $this->assertEquals($all[1]['displayname'], 'test'); $this->assertEquals($all[1]['uri'], 'test1'); //$cal1=OC_Calendar_Calendar::find($calId1); //$this->assertEquals($cal1,$all[0]); OC_Calendar_Calendar::deleteCalendar($calId1); OC_Calendar_Calendar::deleteCalendar($calId2); $this->assertEquals(OC_Calendar_Calendar::allCalendars($uid), array()); }
/** * @NoAdminRequired */ public function getTasks() { $calendars = \OC_Calendar_Calendar::allCalendars($this->userId, true); $user_timezone = \OC_Calendar_App::getTimezone(); $tasks = array(); foreach ($calendars as $calendar) { $calendar_tasks = \OC_Calendar_Object::all($calendar['id']); foreach ($calendar_tasks as $task) { if ($task['objecttype'] != 'VTODO') { continue; } if (is_null($task['summary'])) { continue; } $vtodo = Helper::parseVTODO($task['calendardata']); try { $task_data = Helper::arrayForJSON($task['id'], $vtodo, $user_timezone); $task_data['calendarid'] = $calendar['id']; $task_data['calendarcolor'] = $calendar['calendarcolor']; $tasks[] = $task_data; } catch (\Exception $e) { \OCP\Util::writeLog('tasks', $e->getMessage(), \OCP\Util::ERROR); } } } $result = array('data' => array('tasks' => $tasks)); $response = new JSONResponse(); $response->setData($result); return $response; }
/** * @brief Deletes all calendars of a certain user * @param paramters parameters from postDeleteUser-Hook * @return array */ public static function deleteUser($parameters) { $calendars = OC_Calendar_Calendar::allCalendars($parameters['uid']); foreach ($calendars as $calendar) { OC_Calendar_Calendar::deleteCalendar($calendar['id']); } return true; }
private function getCalendars() { $calendars = array(); foreach (OC_Calendar_Calendar::allCalendars($this->user, true) as $cal) { $calendars[$cal['id']] = $cal['displayname']; } return $calendars; }
/** * @brief Get a unique name of the item for the specified user * @param string Item * @param string|false User the item is being shared with * @param array|null List of similar item names already existing as shared items * @return string Target name * * This function needs to verify that the user does not already have an item with this name. * If it does generate a new name e.g. name_# */ public function generateTarget($itemSource, $shareWith, $exclude = null) { $calendar = OC_Calendar_App::getCalendar($itemSource); $user_calendars = array(); foreach (OC_Calendar_Calendar::allCalendars($shareWith) as $user_calendar) { $user_calendars[] = $user_calendar['displayname']; } $name = $calendar['userid'] . "'s " . $calendar['displayname']; $suffix = ''; while (in_array($name . $suffix, $user_calendars)) { $suffix++; } return $name . $suffix; }
/** * Search for query in tasks * * @param string $query * @return array list of \OCA\Tasks\Controller\Task */ function search($query) { $calendars = \OC_Calendar_Calendar::allCalendars(\OC::$server->getUserSession()->getUser()->getUID(), true); $user_timezone = \OC_Calendar_App::getTimezone(); // check if the calenar is enabled if (count($calendars) == 0 || !\OCP\App::isEnabled('tasks')) { return array(); } $results = array(); foreach ($calendars as $calendar) { // $calendar_entries = \OC_Calendar_Object::all($calendar['id']); $objects = \OC_Calendar_Object::all($calendar['id']); // $date = strtotime($query); // // search all calendar objects, one by one foreach ($objects as $object) { // skip non-todos if ($object['objecttype'] != 'VTODO') { continue; } if (!($vtodo = Helper::parseVTODO($object))) { continue; } $id = $object['id']; $calendarId = $object['calendarid']; // check these properties $properties = array('SUMMARY', 'DESCRIPTION', 'LOCATION', 'CATEGORIES'); foreach ($properties as $property) { $string = $vtodo->{$property}; if (stripos($string, $query) !== false) { // $results[] = new \OCA\Tasks\Controller\Task($id,$calendarId,$vtodo,$property,$query,$user_timezone); $results[] = Helper::arrayForJSON($id, $vtodo, $user_timezone, $calendarId); continue 2; } } $comments = $vtodo->COMMENT; if ($comments) { foreach ($comments as $com) { if (stripos($com->getValue(), $query) !== false) { // $results[] = new \OCA\Tasks\Controller\Task($id,$calendarId,$vtodo,'COMMENTS',$query,$user_timezone); $results[] = Helper::arrayForJSON($id, $vtodo, $user_timezone, $calendarId); continue 2; } } } } } usort($results, array($this, 'sort_completed')); return $results; }
function search($query) { $calendars = OC_Calendar_Calendar::allCalendars(OCP\USER::getUser(), true); if (count($calendars) == 0 || !OCP\App::isEnabled('calendar')) { //return false; } $results = array(); $searchquery = array(); if (substr_count($query, ' ') > 0) { $searchquery = explode(' ', $query); } else { $searchquery[] = $query; } $user_timezone = OC_Calendar_App::getTimezone(); $l = new OC_l10n('calendar'); foreach ($calendars as $calendar) { $objects = OC_Calendar_Object::all($calendar['id']); foreach ($objects as $object) { if ($object['objecttype'] != 'VEVENT') { continue; } if (substr_count(strtolower($object['summary']), strtolower($query)) > 0) { $calendardata = OC_VObject::parse($object['calendardata']); $vevent = $calendardata->VEVENT; $dtstart = $vevent->DTSTART; $dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent); $start_dt = $dtstart->getDateTime(); $start_dt->setTimezone(new DateTimeZone($user_timezone)); $end_dt = $dtend->getDateTime(); $end_dt->setTimezone(new DateTimeZone($user_timezone)); if ($dtstart->getDateType() == Sabre\VObject\Property\DateTime::DATE) { $end_dt->modify('-1 sec'); if ($start_dt->format('d.m.Y') != $end_dt->format('d.m.Y')) { $info = $l->t('Date') . ': ' . $start_dt->format('d.m.Y') . ' - ' . $end_dt->format('d.m.Y'); } else { $info = $l->t('Date') . ': ' . $start_dt->format('d.m.Y'); } } else { $info = $l->t('Date') . ': ' . $start_dt->format('d.m.y H:i') . ' - ' . $end_dt->format('d.m.y H:i'); } $link = OCP\Util::linkTo('calendar', 'index.php') . '?showevent=' . urlencode($object['id']); $results[] = new OC_Search_Result($object['summary'], $info, $link, (string) $l->t('Cal.')); //$name,$text,$link,$type } } } return $results; }
/** * set name of list by id * * @param $id * @param $name * @return array * @throws \Exception */ public function setName($id, $name) { if (trim($name) == '') { // OCP\JSON::error(array('message'=>'empty')); exit; } $calendars = \OC_Calendar_Calendar::allCalendars($this->userId, true); foreach ($calendars as $cal) { if ($cal['userid'] != $this->userId) { continue; } if ($cal['displayname'] == $name && $cal['id'] != $id) { // OCP\JSON::error(array('message'=>'namenotavailable')); exit; } } $color = '#CCCCCC'; \OC_Calendar_Calendar::editCalendar($id, strip_tags($name), null, null, null, $color); return array(); }
<?php /** * Copyright (c) 2011 Bart Visscher <*****@*****.**> * This file is licensed under the Affero General Public License version 3 or * later. * See the COPYING-README file. */ $tmpl = new OCP\Template('calendar', 'settings'); $timezone = OCP\Config::getUserValue(OCP\USER::getUser(), 'calendar', 'timezone', ''); $tmpl->assign('timezone', $timezone); $tmpl->assign('timezones', DateTimeZone::listIdentifiers()); $tmpl->assign('calendars', OC_Calendar_Calendar::allCalendars(OCP\USER::getUser()), false); OCP\Util::addscript('calendar', 'settings'); $tmpl->printPage();
<?php /** * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> * This file is licensed under the Affero General Public License version 3 or * later. * See the COPYING-README file. */ require_once '../../lib/base.php'; OC_Util::checkLoggedIn(); OC_Util::checkAppEnabled('calendar'); // Create default calendar ... $calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser()); if (count($calendars) == 0) { OC_Calendar_Calendar::addCalendar(OC_User::getUser(), 'default', 'Default calendar'); $calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser()); } OC_UTIL::addScript('calendar', 'calendar'); OC_UTIL::addStyle('calendar', 'style'); OC_UTIL::addScript('', 'jquery.multiselect'); OC_UTIL::addStyle('', 'jquery.multiselect'); OC_APP::setActiveNavigationEntry('calendar_index'); $output = new OC_TEMPLATE('calendar', 'calendar', 'user'); $output->printPage();
/** * * return array * key = calendar id * value = name of calendar * * @return array */ private function getCalendars() { $calendars = array(); foreach (\OC_Calendar_Calendar::allCalendars($this->user, true) as $cal) { if ($cal['active'] == '1') { $calendars[$cal['id']] = array('name' => $cal['displayname'], 'color' => $cal['calendarcolor']); } } return $calendars; }
/** * @brief analyses the parameter for calendar parameter and returns the objects * @param (string) $calendarid - calendarid * @param (int) $start - unixtimestamp of start * @param (int) $end - unixtimestamp of end * @return (array) $events */ public static function getrequestedEvents($calendarid, $start, $end) { $events = array(); if ($calendarid == 'shared_events') { $singleevents = OCP\Share::getItemsSharedWith('event', OC_Share_Backend_Event::FORMAT_EVENT); $calendars = OC_Calendar_Calendar::allCalendars(OCP\USER::getUser()); foreach ($singleevents as $singleevent) { // Skip this single event if the whole calendar is already shared with the user. $calendarShared = false; foreach ($calendars as $calendar) { if ($singleevent['calendarid'] === $calendar['id']) { $calendarShared = true; break; } } if ($calendarShared === true) { continue; } $singleevent['summary'] .= ' (' . self::$l10n->t('by') . ' ' . OC_Calendar_Object::getowner($singleevent['id']) . ')'; $events[] = $singleevent; } } else { if (is_numeric($calendarid)) { $calendar = self::getCalendar($calendarid); OCP\Response::enableCaching(0); OCP\Response::setETagHeader($calendar['ctag']); $events = OC_Calendar_Object::allInPeriod($calendarid, $start, $end, $calendar['userid'] !== OCP\User::getUser()); } else { OCP\Util::emitHook('OC_Calendar', 'getEvents', array('calendar_id' => $calendarid, 'events' => &$events)); } } return $events; }
<?php /** * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> * This file is licensed under the Affero General Public License version 3 or * later. * See the COPYING-README file. */ OCP\User::checkLoggedIn(); OCP\App::checkAppEnabled('calendar'); // Create default calendar ... $calendars = OC_Calendar_Calendar::allCalendars(OCP\USER::getUser(), 1); if (count($calendars) == 0) { OC_Calendar_Calendar::addCalendar(OCP\USER::getUser(), 'Default calendar'); $calendars = OC_Calendar_Calendar::allCalendars(OCP\USER::getUser(), 1); } $eventSources = array(); foreach ($calendars as $calendar) { $eventSources[] = OC_Calendar_Calendar::getEventSourceInfo($calendar); } $eventSources[] = array('url' => '?app=calendar&getfile=ajax/events.php?calendar_id=shared_rw', 'backgroundColor' => '#1D2D44', 'borderColor' => '#888', 'textColor' => 'white', 'editable' => 'true'); $eventSources[] = array('url' => '?app=calendar&getfile=ajax/events.php?calendar_id=shared_r', 'backgroundColor' => '#1D2D44', 'borderColor' => '#888', 'textColor' => 'white', 'editable' => 'false'); OCP\Util::emitHook('OC_Calendar', 'getSources', array('sources' => &$eventSources)); $categories = OC_Calendar_App::getCategoryOptions(); //Fix currentview for fullcalendar if (OCP\Config::getUserValue(OCP\USER::getUser(), 'calendar', 'currentview', 'month') == "oneweekview") { OCP\Config::setUserValue(OCP\USER::getUser(), "calendar", "currentview", "agendaWeek"); } if (OCP\Config::getUserValue(OCP\USER::getUser(), 'calendar', 'currentview', 'month') == "onemonthview") { OCP\Config::setUserValue(OCP\USER::getUser(), "calendar", "currentview", "month"); }
/** * scan events for categories. * @param $events VEVENTs to scan. null to check all events for the current user. */ public static function scanCategories($events = null) { if (is_null($events)) { $calendars = OC_Calendar_Calendar::allCalendars(OCP\USER::getUser()); if (count($calendars) > 0) { $events = array(); foreach ($calendars as $calendar) { if ($calendar['userid'] === OCP\User::getUser()) { $calendar_events = OC_Calendar_Object::all($calendar['id']); $events = $events + $calendar_events; } } } } if (is_array($events) && count($events) > 0) { $vcategories = \OC::$server->getTagManager()->load('event'); $getName = function ($tag) { return $tag['name']; }; $tags = array_map($getName, $vcategories->getTags()); $vcategories->delete($tags); foreach ($events as $event) { $vobject = OC_VObject::parse($event['calendardata']); if (!is_null($vobject)) { $object = null; if (isset($calendar->VEVENT)) { $object = $calendar->VEVENT; } else { if (isset($calendar->VTODO)) { $object = $calendar->VTODO; } else { if (isset($calendar->VJOURNAL)) { $object = $calendar->VJOURNAL; } } } if ($object && isset($object->CATEGORIES)) { $vcategories->addMultiple($object->CATEGORIES->getParts(), true, $event['id']); } } } } }
<?php // Init owncloud OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('tasks'); OCP\JSON::callCheck(); $calendars = OC_Calendar_Calendar::allCalendars(OCP\User::getUser(), true); $category_options = OC_Calendar_App::getCategoryOptions(); $percent_options = range(0, 100, 10); $priority_options = OC_Task_App::getPriorityOptions(); $tmpl = new OCP\Template('tasks', 'part.addtaskform'); $tmpl->assign('calendars', $calendars); $tmpl->assign('category_options', $category_options); $tmpl->assign('percent_options', $percent_options); $tmpl->assign('priority_options', $priority_options); $tmpl->assign('details', new OC_VObject('VTODO')); $tmpl->assign('categories', ''); $page = $tmpl->fetchPage(); OCP\JSON::success(array('data' => array('page' => $page)));
/** * Search for query in tasks * * @param string $query * @return array */ public function search($query) { $calendars = \OC_Calendar_Calendar::allCalendars($this->userId, true); $results = array(); foreach ($calendars as $calendar) { $calendar_entries = $this->tasksMapper->findAllVTODOs($calendar['id']); // search all calendar objects, one by one foreach ($calendar_entries as $calendar_entry) { $vtodo = $this->helper->checkTask($calendar_entry); if (!$vtodo) { continue; } if ($this->helper->checkTaskByQuery($vtodo, $query)) { $results[] = $this->taskParser->parseTask($vtodo, $calendar_entry->getCalendarid()); } } } usort($results, array($this->helper, 'sortCompleted')); return $results; }
public function createCalendarName() { $calendars = OC_Calendar_Calendar::allCalendars($this->userid); $calendarname = $guessedcalendarname = !is_null($this->guessCalendarName()) ? $this->guessCalendarName() : OC_Calendar_App::$l10n->t('New Calendar'); $i = 1; while (!OC_Calendar_Calendar::isCalendarNameavailable($calendarname, $this->userid)) { $calendarname = $guessedcalendarname . ' (' . $i . ')'; $i++; } return $calendarname; }
/** * scan events for categories. * @param $events VEVENTs to scan. null to check all events for the current user. */ public static function scanCategories($events = null) { if (is_null($events)) { $calendars = OC_Calendar_Calendar::allCalendars(OCP\USER::getUser()); if (count($calendars) > 0) { $events = array(); foreach ($calendars as $calendar) { $calendar_events = OC_Calendar_Object::all($calendar['id']); $events = $events + $calendar_events; } } } if (is_array($events) && count($events) > 0) { $vcategories = self::getVCategories(); $vcategories->delete($vcategories->categories()); foreach ($events as $event) { $vobject = OC_VObject::parse($event['calendardata']); if (!is_null($vobject)) { self::loadCategoriesFromVCalendar($vobject); } } } }
/** * @NoAdminRequired */ public function getTasks($listID = 'all', $type = 'all') { $user_timezone = \OC_Calendar_App::getTimezone(); if ($listID == 'all') { $calendars = \OC_Calendar_Calendar::allCalendars($this->userId, true); } else { $calendar = \OC_Calendar_App::getCalendar($listID, true, false); $calendars = array($calendar); } $tasks = array(); $lists = array(); foreach ($calendars as $calendar) { $calendar_entries = \OC_Calendar_Object::all($calendar['id']); $tasks_selected = array(); foreach ($calendar_entries as $task) { if ($task['objecttype'] != 'VTODO') { continue; } if (is_null($task['summary'])) { continue; } $vtodo = Helper::parseVTODO($task['calendardata']); try { $task_data = Helper::arrayForJSON($task['id'], $vtodo, $user_timezone, $calendar['id']); switch ($type) { case 'all': $tasks[] = $task_data; break; case 'init': if (!$task_data['completed']) { $tasks[] = $task_data; } else { $tasks_selected[] = $task_data; } break; case 'completed': if ($task_data['completed']) { $tasks[] = $task_data; } break; case 'uncompleted': if (!$task_data['completed']) { $tasks[] = $task_data; } break; } } catch (\Exception $e) { \OCP\Util::writeLog('tasks', $e->getMessage(), \OCP\Util::ERROR); } } $nrCompleted = 0; $notLoaded = 0; usort($tasks_selected, array($this, 'sort_completed')); foreach ($tasks_selected as $task_selected) { $nrCompleted++; if ($nrCompleted > 5) { $notLoaded++; continue; } $tasks[] = $task_selected; } $lists[] = array('id' => $calendar['id'], 'notLoaded' => $notLoaded); } $result = array('data' => array('tasks' => $tasks, 'lists' => $lists)); $response = new JSONResponse(); $response->setData($result); return $response; }
/** * @NoAdminRequired */ public function setListName() { $listId = (int) $this->params('listID'); $listName = $this->params('name'); $response = new JSONResponse(); if (trim($listName) == '') { // OCP\JSON::error(array('message'=>'empty')); exit; } $calendars = \OC_Calendar_Calendar::allCalendars($this->userId, true); foreach ($calendars as $cal) { if ($cal['userid'] != $this->userId) { continue; } if ($cal['displayname'] == $listName && $cal['id'] != $listId) { // OCP\JSON::error(array('message'=>'namenotavailable')); exit; } } $color = '#CCCCCC'; \OC_Calendar_Calendar::editCalendar($listId, strip_tags($listName), null, null, null, $color); $result = array('data' => array()); $response->setData($result); return $response; }
/** * get a list of Tasks filtered by listID and type * * @param string $listID * @param string $type * @return array * @throws \Exception */ public function getAll($listID = 'all', $type = 'all') { $user_timezone = \OC_Calendar_App::getTimezone(); if ($listID == 'all') { $calendars = \OC_Calendar_Calendar::allCalendars($this->userId, true); } else { $calendar = \OC_Calendar_App::getCalendar($listID, true, false); $calendars = array($calendar); } $tasks = array(); $lists = array(); foreach ($calendars as $calendar) { $calendar_entries = \OC_Calendar_Object::all($calendar['id']); $tasks_selected = array(); foreach ($calendar_entries as $task) { if ($task['objecttype'] != 'VTODO') { continue; } if (is_null($task['summary'])) { continue; } if (!($vtodo = Helper::parseVTODO($task))) { continue; } $task_data = Helper::arrayForJSON($task['id'], $vtodo, $user_timezone, $calendar['id']); switch ($type) { case 'all': $tasks[] = $task_data; break; case 'init': if (!$task_data['completed']) { $tasks[] = $task_data; } else { $tasks_selected[] = $task_data; } break; case 'completed': if ($task_data['completed']) { $tasks[] = $task_data; } break; case 'uncompleted': if (!$task_data['completed']) { $tasks[] = $task_data; } break; } } $nrCompleted = 0; $notLoaded = 0; usort($tasks_selected, array($this, 'sort_completed')); foreach ($tasks_selected as $task_selected) { $nrCompleted++; if ($nrCompleted > 5) { $notLoaded++; continue; } $tasks[] = $task_selected; } $lists[] = array('id' => $calendar['id'], 'notLoaded' => $notLoaded); } return array('tasks' => $tasks, 'lists' => $lists); }
/** * scan events for categories. * @param $events VEVENTs to scan. null to check all events for the current user. */ public static function scanCategories($events = null) { if (is_null($events)) { $calendars = OC_Calendar_Calendar::allCalendars(OCP\USER::getUser()); if (count($calendars) > 0) { $events = array(); foreach ($calendars as $calendar) { if ($calendar['userid'] === OCP\User::getUser()) { $calendar_events = OC_Calendar_Object::all($calendar['id']); $events = $events + $calendar_events; } } } } if (is_array($events) && count($events) > 0) { $vcategories = new OC_VCategories('event'); $vcategories->delete($vcategories->categories()); foreach ($events as $event) { $vobject = OC_VObject::parse($event['calendardata']); if (!is_null($vobject)) { $object = null; if (isset($calendar->VEVENT)) { $object = $calendar->VEVENT; } else { if (isset($calendar->VTODO)) { $object = $calendar->VTODO; } else { if (isset($calendar->VJOURNAL)) { $object = $calendar->VJOURNAL; } } } if ($object) { $vcategories->loadFromVObject($event['id'], $vobject, true); } } } } }
" id="onemonthview_radio"/> <input type="button" value="<?php p($l->t('Today')); ?> " id="datecontrol_today"/> </form> </li> <li> <a id="newCalendar"><?php p($l->t('New Calendar')); ?> </a> </li> <?php $option_calendars = OC_Calendar_Calendar::allCalendars(OCP\USER::getUser()); for ($i = 0; $i < count($option_calendars); $i++) { print_unescaped("<li data-id='" . OC_Util::sanitizeHTML($option_calendars[$i]['id']) . "'>"); $tmpl = new OCP\Template('calendar', 'part.choosecalendar.rowfields'); $tmpl->assign('calendar', $option_calendars[$i]); if ($option_calendars[$i]['userid'] != OCP\User::getUser()) { $sharedCalendar = OCP\Share::getItemSharedWithBySource('calendar', $option_calendars[$i]['id']); $shared = true; } else { $shared = false; } $tmpl->assign('shared', $shared); $tmpl->printpage(); print_unescaped("</li>"); } ?>
/** * @NoAdminRequired */ public function addTask() { $taskName = $this->params('name'); $calendarId = $this->params('calendarID'); $starred = $this->params('starred'); $due = $this->params('due'); $start = $this->params('start'); $response = new JSONResponse(); $userId = $this->api->getUserId(); $calendars = \OC_Calendar_Calendar::allCalendars($userId, true); $user_timezone = \OC_Calendar_App::getTimezone(); $request = array('summary' => $taskName, 'categories' => null, 'priority' => $starred, 'location' => null, 'due' => $due, 'start' => $start, 'description' => null); $vcalendar = Helper::createVCalendarFromRequest($request); $taskId = \OC_Calendar_Object::add($calendarId, $vcalendar->serialize()); $task = Helper::arrayForJSON($taskId, $vcalendar->VTODO, $user_timezone); $task['calendarid'] = $calendarId; $task['tmpID'] = $this->params('tmpID'); $result = array('data' => array('task' => $task)); $response->setData($result); return $response; }