Exemplo n.º 1
0
 /**
  * @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;
 }
Exemplo n.º 2
0
 /**
  * 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;
 }
Exemplo n.º 3
0
 /**
  * @brief exports a calendar and convert all times to UTC
  * @param integer $id id of the calendar
  * @return string
  */
 private static function calendar($id)
 {
     $events = OC_Calendar_Object::all($id);
     $calendar = OC_Calendar_Calendar::find($id);
     $return = "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:ownCloud Calendar " . OCP\App::getAppVersion('calendar') . "\nX-WR-CALNAME:" . $calendar['displayname'] . "\n";
     foreach ($events as $event) {
         $return .= self::generateEvent($event);
     }
     $return .= "END:VCALENDAR";
     return $return;
 }
Exemplo n.º 4
0
 /**
  * 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;
 }
Exemplo n.º 5
0
 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;
 }
Exemplo n.º 6
0
 public function import()
 {
     if (!$this->isValid()) {
         return false;
     }
     $numofcomponents = count($this->calobject->getComponents());
     if ($this->overwrite) {
         foreach (OC_Calendar_Object::all($this->id) as $obj) {
             OC_Calendar_Object::delete($obj['id']);
         }
     }
     foreach ($this->calobject->getComponents() as $object) {
         if (!$object instanceof Sabre\VObject\Component\VEvent && !$object instanceof Sabre\VObject\Component\VJournal && !$object instanceof Sabre\VObject\Component\VTodo) {
             continue;
         }
         if (!is_null($object->DTSTART)) {
             $dtend = OC_Calendar_Object::getDTEndFromVEvent($object);
             if ($object->DTEND) {
                 $object->DTEND->setDateTime($dtend->getDateTime(), $object->DTSTART->getDateType());
             }
         }
         $vcalendar = $this->createVCalendar($object->serialize());
         $insertid = OC_Calendar_Object::add($this->id, $vcalendar);
         $this->abscount++;
         if ($this->isDuplicate($insertid)) {
             OC_Calendar_Object::delete($insertid);
         } else {
             $this->count++;
         }
         $this->updateProgress(intval($this->abscount / $numofcomponents * 100));
     }
     OC_Cache::remove($this->progresskey);
     return true;
 }
Exemplo n.º 7
0
 /**
  * @brief checks if a whole calendar is already cached
  * @param (int) id - id of the calendar
  * @return (bool)
  */
 public static function is_calendar_cached($id)
 {
     $cachedevents = count(self::getCalendar($id));
     $repeatingevents = 0;
     $allevents = OC_Calendar_Object::all($id);
     foreach ($allevents as $event) {
         if ($event['repeating'] === 1) {
             $repeatingevents++;
         }
     }
     if ($cachedevents < $repeatingevents) {
         return false;
     } else {
         return true;
     }
 }
Exemplo n.º 8
0
 /**
  * Returns all calendar objects within a calendar object.
  *
  * Every item contains an array with the following keys:
  *   * id - unique identifier which will be used for subsequent updates
  *   * calendardata - The iCalendar-compatible calnedar data
  *   * uri - a unique key which will be used to construct the uri. This can be any arbitrary string.
  *   * lastmodified - a timestamp of the last modification time
  *   * etag - An arbitrary string, surrounded by double-quotes. (e.g.:
  *   '  "abcdef"')
  *   * calendarid - The calendarid as it was passed to this function.
  *
  * Note that the etag is optional, but it's highly encouraged to return for
  * speed reasons.
  *
  * The calendardata is also optional. If it's not returned
  * 'getCalendarObject' will be called later, which *is* expected to return
  * calendardata.
  *
  * @param string $calendarId
  * @return array
  */
 public function getCalendarObjects($calendarId)
 {
     $data = array();
     if ($calendarId === 'contact_birthdays') {
         $app = new \OCA\Contacts\App();
         $addressBooks = $app->getAddressBooksForUser();
         foreach ($addressBooks as $addressBook) {
             foreach ($addressBook->getChildren() as $contact) {
                 $vevent = $contact->getBirthdayEvent();
                 if (is_null($vevent)) {
                     continue;
                 }
                 $data[] = $this->OCAddETag(array('id' => 0, 'calendarid' => 'contact_birthdays', 'uri' => $addressBook->getBackend()->name . '::' . $addressBook->getId() . '::' . $contact->getId() . '.ics', 'lastmodified' => $contact->lastModified(), 'summary' => $vevent->SUMMARY, 'calendardata' => $vevent->serialize()));
             }
         }
     } else {
         $calendar = OC_Calendar_Calendar::find($calendarId);
         $isShared = $calendar['userid'] !== OCP\USER::getUser();
         foreach (OC_Calendar_Object::all($calendarId) as $row) {
             if (!$isShared) {
                 $data[] = $this->OCAddETag($row);
             } else {
                 if (substr_count($row['calendardata'], 'CLASS') === 0) {
                     $data[] = $this->OCAddETag($row);
                 } else {
                     $object = \Sabre\VObject\Reader::read($row['calendardata']);
                     if (!$object) {
                         return false;
                     }
                     $isPrivate = false;
                     $toCheck = array('VEVENT', 'VJOURNAL', 'VTODO');
                     foreach ($toCheck as $type) {
                         foreach ($object->select($type) as $vobject) {
                             if (isset($vobject->{'CLASS'}) && $vobject->{'CLASS'}->getValue() === 'PRIVATE') {
                                 $isPrivate = true;
                             }
                         }
                     }
                     if ($isPrivate === false) {
                         $data[] = $this->OCAddETag($row);
                     }
                 }
             }
         }
     }
     return $data;
 }
Exemplo n.º 9
0
<?php

$installedVersionTasks = OCP\Config::getAppValue('tasks', 'installed_version');
$installedVersionTasksEnhanced = OCP\Config::getAppValue('tasks_enhanced', 'installed_version');
\OC::$CLASSPATH['OC_Calendar_Calendar'] = 'calendar/lib/calendar.php';
\OC::$CLASSPATH['OC_Calendar_Object'] = 'calendar/lib/object.php';
if (version_compare($installedVersionTasksEnhanced, '0.4.1', '<=') && version_compare($installedVersionTasks, '0.5.0', '<=')) {
    try {
        $stmt = \OCP\DB::prepare('SELECT * FROM `*PREFIX*clndr_calendars`');
        $result = $stmt->execute();
        $calendars = array();
        while ($row = $result->fetchRow()) {
            $calendars[] = $row;
        }
        foreach ($calendars as $calendar) {
            $calendar_entries = \OC_Calendar_Object::all($calendar['id']);
            foreach ($calendar_entries as $task) {
                if ($task['objecttype'] != 'VTODO') {
                    continue;
                }
                $vcalendar = \OC_VObject::parse($task['calendardata']);
                $vtodo = $vcalendar->VTODO;
                $children = $vtodo->children;
                $taskId = $task['id'];
                $comments = $vtodo->COMMENT;
                if ($comments) {
                    foreach ($comments as $com) {
                        $idx = 0;
                        foreach ($children as $i => &$property) {
                            if ($property->name == 'COMMENT' && $property['ID']->value == (int) $com['ID']->value) {
                                unset($vtodo->children[$idx]);
Exemplo n.º 10
0
 /**
  * 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']);
                 }
             }
         }
     }
 }
Exemplo n.º 11
0
 */
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('calendar');
foreach ($_POST as $key => $element) {
    debug('_POST: ' . $key . '=>' . print_r($element, true));
}
function bailOut($msg)
{
    OCP\JSON::error(array('data' => array('message' => $msg)));
    OCP\Util::writeLog('calendar', 'ajax/categories/rescan.php: ' . $msg, OCP\Util::DEBUG);
    exit;
}
function debug($msg)
{
    OCP\Util::writeLog('calendar', 'ajax/categories/rescan.php: ' . $msg, OCP\Util::DEBUG);
}
$calendars = OC_Calendar_Calendar::allCalendars(OCP\USER::getUser());
if (count($calendars) == 0) {
    bailOut(OC_Calendar_App::$l10n->t('No calendars found.'));
}
$events = array();
foreach ($calendars as $calendar) {
    $calendar_events = OC_Calendar_Object::all($calendar['id']);
    $events = $events + $calendar_events;
}
if (count($events) == 0) {
    bailOut(OC_Calendar_App::$l10n->t('No events found.'));
}
OC_Calendar_App::scanCategories($events);
$categories = OC_Calendar_App::getCategoryOptions();
OCP\JSON::success(array('data' => array('categories' => $categories)));
Exemplo n.º 12
0
 /**
  * Returns all calendar objects within a calendar object.
  *
  * Every item contains an array with the following keys:
  *   * id - unique identifier which will be used for subsequent updates
  *   * calendardata - The iCalendar-compatible calnedar data
  *   * uri - a unique key which will be used to construct the uri. This can be any arbitrary string.
  *   * lastmodified - a timestamp of the last modification time
  *   * etag - An arbitrary string, surrounded by double-quotes. (e.g.:
  *   '  "abcdef"')
  *   * calendarid - The calendarid as it was passed to this function.
  *
  * Note that the etag is optional, but it's highly encouraged to return for
  * speed reasons.
  *
  * The calendardata is also optional. If it's not returned
  * 'getCalendarObject' will be called later, which *is* expected to return
  * calendardata.
  *
  * @param string $calendarId
  * @return array
  */
 public function getCalendarObjects($calendarId)
 {
     $data = array();
     foreach (OC_Calendar_Object::all($calendarId) as $row) {
         $data[] = $this->OCAddETag($row);
     }
     return $data;
 }
Exemplo n.º 13
0
<?php

$token = strip_tags($_GET['t']);
$shared = OC_Calendar_Share::getElementByToken($token);
$nl = "\n\r";
if ($shared['type'] == OC_Calendar_Share::CALENDAR) {
    $calendar = OC_Calendar_App::getCalendar($shared['id'], false);
    $calobjects = OC_Calendar_Object::all($shared['id']);
    header('Content-Type: text/Calendar');
    header('Content-Disposition: inline; filename=' . $calendar['displayname'] . '.ics');
    foreach ($calobjects as $calobject) {
        echo $calobject['calendardata'] . $nl;
    }
} elseif ($shared['type'] == OC_Calendar_Share::EVENT) {
    $data = OC_Calendar_App::getEventObject($shared['id'], false);
    $calendarid = $data['calendarid'];
    $calendar = OC_Calendar_App::getCalendar($calendarid);
    header('Content-Type: text/Calendar');
    header('Content-Disposition: inline; filename=' . $data['summary'] . '.ics');
    echo $data['calendardata'];
} else {
    header('Error 404: Not Found');
}
 /**
  * @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;
 }
Exemplo n.º 15
0
 /**
  * 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);
             }
         }
     }
 }
Exemplo n.º 16
0
<?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.
 */
// Init owncloud
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('tasks');
$calendars = OC_Calendar_Calendar::allCalendars(OCP\User::getUser(), 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;
        }
        $object = OC_VObject::parse($task['calendardata']);
        $vtodo = $object->VTODO;
        try {
            $tasks[] = OC_Task_App::arrayForJSON($task['id'], $vtodo, $user_timezone);
        } catch (Exception $e) {
            OCP\Util::writeLog('tasks', $e->getMessage(), OCP\Util::ERROR);
        }
    }
/**
 * 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";
if (!OC_USER::isLoggedIn()) {
    die("<script type=\"text/javascript\">document.location = oc_webroot;</script>");
}
OC_JSON::checkAppEnabled('calendar');
$calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser(), 1);
$events = array();
$return = array('calendars' => array());
foreach ($calendars as $calendar) {
    $tmp = OC_Calendar_Object::all($calendar['id']);
    $events = array_merge($events, $tmp);
    $return['calendars'][$calendar['id']] = array('displayname' => $calendar['displayname'], 'color' => '#' . $calendar['calendarcolor']);
}
$select_year = $_GET["year"];
$user_timezone = OC_Preferences::getValue(OC_USER::getUser(), "calendar", "timezone", "Europe/London");
foreach ($events as $event) {
    if ($select_year != substr($event['startdate'], 0, 4)) {
        continue;
    }
    $object = Sabre_VObject_Reader::read($event['calendardata']);
    $vevent = $object->VEVENT;
    $dtstart = $vevent->DTSTART;
    $dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent);
    $start_dt = $dtstart->getDateTime();
    $start_dt->setTimezone(new DateTimeZone($user_timezone));
Exemplo n.º 18
0
 /**
  * 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);
 }
Exemplo n.º 19
0
 /**
  * Returns all calendar objects within a calendar object.
  *
  * Every item contains an array with the following keys:
  *   * id - unique identifier which will be used for subsequent updates
  *   * calendardata - The iCalendar-compatible calnedar data
  *   * uri - a unique key which will be used to construct the uri. This can be any arbitrary string.
  *   * lastmodified - a timestamp of the last modification time
  *   * etag - An arbitrary string, surrounded by double-quotes. (e.g.:
  *   '  "abcdef"')
  *   * calendarid - The calendarid as it was passed to this function.
  *
  * Note that the etag is optional, but it's highly encouraged to return for
  * speed reasons.
  *
  * The calendardata is also optional. If it's not returned
  * 'getCalendarObject' will be called later, which *is* expected to return
  * calendardata.
  *
  * @param string $calendarId
  * @return array
  */
 public function getCalendarObjects($calendarId)
 {
     $data = array();
     if ($calendarId === 'contact_birthdays') {
         $app = new \OCA\Contacts\App();
         $addressBooks = $app->getAddressBooksForUser();
         foreach ($addressBooks as $addressBook) {
             foreach ($addressBook->getChildren() as $contact) {
                 $vevent = $contact->getBirthdayEvent();
                 if (is_null($vevent)) {
                     continue;
                 }
                 $data[] = $this->OCAddETag(array('id' => 0, 'calendarid' => 'contact_birthdays', 'uri' => $addressBook->getBackend()->name . '::' . $addressBook->getId() . '::' . $contact->getId(), 'lastmodified' => $contact->lastModified(), 'summary' => $vevent->SUMMARY, 'calendardata' => $vevent->serialize()));
             }
         }
     } else {
         foreach (OC_Calendar_Object::all($calendarId) as $row) {
             $data[] = $this->OCAddETag($row);
         }
     }
     return $data;
 }
Exemplo n.º 20
0
 /**
  * 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);
                 }
             }
         }
     }
 }
Exemplo n.º 21
0
 private static function generate_token($id, $type)
 {
     $uniqid = uniqid();
     if ($type == self::CALENDAR) {
         $events = OC_Calendar_Object::all($id);
         $string = '';
         foreach ($events as $event) {
             $string .= $event['calendardata'];
         }
     } else {
         $string = OC_Calendar_Object::find($id);
     }
     $string = sha1($string['calendardata']);
     $id = sha1($id);
     $array = array($uniqid, $string, $id);
     shuffle($array);
     $string = implode('', $array);
     $token = md5($string);
     return substr($token, rand(0, 16), 15);
 }
Exemplo n.º 22
0
 * 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');
$cal = isset($_GET['calid']) ? $_GET['calid'] : NULL;
$event = isset($_GET['eventid']) ? $_GET['eventid'] : NULL;
$nl = "\r\n";
if (isset($cal)) {
    $calendar = OC_Calendar_App::getCalendar($cal, true);
    if (!$calendar) {
        header('HTTP/1.0 404 Not Found');
        exit;
    }
    $calobjects = OC_Calendar_Object::all($cal);
    header('Content-Type: text/Calendar');
    header('Content-Disposition: inline; filename=' . $calendar['displayname'] . '.ics');
    foreach ($calobjects as $calobject) {
        echo $calobject['calendardata'] . $nl;
    }
} elseif (isset($event)) {
    $data = OC_Calendar_App::getEventObject($_GET['eventid'], true);
    if (!$data) {
        header('HTTP/1.0 404 Not Found');
        exit;
    }
    $calendarid = $data['calendarid'];
    $calendar = OC_Calendar_App::getCalendar($calendarid);
    header('Content-Type: text/Calendar');
    header('Content-Disposition: inline; filename=' . $data['summary'] . '.ics');