Ejemplo n.º 1
0
 public function generateTarget($itemSource, $shareWith, $exclude = null)
 {
     if (!self::$vtodo) {
         $itemSource = CalendarApp::validateItemSource($itemSource, CalendarApp::SHARETODOPREFIX);
         self::$vtodo = Object::find($itemSource);
     }
     return self::$vtodo['summary'];
 }
Ejemplo n.º 2
0
 public function formatItems($items, $format, $parameters = null)
 {
     $events = array();
     if ($format == self::FORMAT_EVENT) {
         foreach ($items as $item) {
             $item['item_source'] = App::validateItemSource($item['item_source'], App::SHAREEVENTPREFIX);
             if (!Object::checkSharedEvent($item['item_source'])) {
                 $event = Object::find($item['item_source']);
                 $event['summary'] = $item['item_target'];
                 $event['item_source'] = (int) $item['item_source'];
                 $event['privat'] = false;
                 $event['shared'] = false;
                 $event['isalarm'] = $event['isalarm'];
                 $event['permissions'] = $item['permissions'];
                 //$event['userid'] = $event['userid'];
                 $event['orgevent'] = false;
                 $events[] = $event;
             }
         }
     }
     return $events;
 }
Ejemplo n.º 3
0
    private function isDuplicate($insertid)
    {
        $newobject = Object::find($insertid);
        $endDate = $newobject['enddate'];
        if (!$newobject['enddate']) {
            $endDate = null;
        }
        $stmt = \OCP\DB::prepare('SELECT * FROM `' . CalendarApp::CldObjectTable . '` `CO`
									 LEFT JOIN `' . CalendarApp::CldCalendarTable . '` ON `CO`.`calendarid`=`' . CalendarApp::CldCalendarTable . '`.`id`
									 WHERE `CO`.`objecttype`=? AND `CO`.`startdate`=? AND `CO`.`enddate`=? AND `CO`.`repeating`=? AND `CO`.`summary`=?  AND `' . CalendarApp::CldCalendarTable . '`.`userid` = ? AND `CO`.`calendarid`=?');
        $result = $stmt->execute(array($newobject['objecttype'], $newobject['startdate'], $endDate, $newobject['repeating'], $newobject['summary'], $this->userId, $newobject['calendarid']));
        $rowCount = $result->rowCount();
        if ($rowCount > 1) {
            return true;
        }
        return false;
    }
Ejemplo n.º 4
0
 /**
  * @brief Get the permissions for a calendar / an event
  * @param (int) $id - id of the calendar / event
  * @param (string) $type - type of the id (calendar/event)
  * @return (int) $permissions - CRUDS permissions
  * @param (string) $accessclass - access class (rfc5545, section 3.8.1.3)
  * @see \OCP\Share
  */
 public static function getPermissions($id, $type, $accessclass = '')
 {
     $permissions_all = \OCP\PERMISSION_ALL;
     if ($type == self::CALENDAR) {
         $calendar = self::getCalendar($id, false, false);
         if ($calendar['userid'] == \OCP\USER::getUser()) {
             if (isset($calendar['issubscribe'])) {
                 $permissions_all = \OCP\PERMISSION_READ;
             }
             return $permissions_all;
         } else {
             $sharedCalendar = \OCP\Share::getItemSharedWithBySource(self::SHARECALENDAR, App::SHARECALENDARPREFIX . $id);
             if ($sharedCalendar) {
                 return $sharedCalendar['permissions'];
             }
         }
     } elseif ($type == self::EVENT) {
         $object = Object::find($id);
         $cal = Calendar::find($object['calendarid']);
         if ($cal['userid'] == \OCP\USER::getUser()) {
             if ($cal['issubscribe']) {
                 $permissions_all = \OCP\PERMISSION_READ;
             }
             return $permissions_all;
         } else {
             if (\OCP\USER::isLoggedIn()) {
                 $sharedCalendar = \OCP\Share::getItemSharedWithBySource(self::SHARECALENDAR, self::SHARECALENDARPREFIX . $object['calendarid']);
                 $sharedEvent = \OCP\Share::getItemSharedWithBySource(self::SHAREEVENT, self::SHAREEVENTPREFIX . $id);
                 $calendar_permissions = 0;
                 $event_permissions = 0;
                 if ($sharedCalendar) {
                     $calendar_permissions = $sharedCalendar['permissions'];
                 }
                 if ($sharedEvent) {
                     $event_permissions = $sharedEvent['permissions'];
                 }
             }
             if (!\OCP\USER::isLoggedIn()) {
                 //\OCP\Util::writeLog('calendar', __METHOD__ . ' id: ' . $id . ', NOT LOGGED IN: ', \OCP\Util::DEBUG);
                 $sharedByLinkCalendar = \OCP\Share::getItemSharedWithByLink(self::SHARECALENDAR, self::SHARECALENDARPREFIX . $object['calendarid'], $cal['userid']);
                 if ($sharedByLinkCalendar) {
                     $calendar_permissions = $sharedByLinkCalendar['permissions'];
                     $event_permissions = 0;
                 }
             }
             if ($accessclass === 'PRIVATE') {
                 return 0;
             } elseif ($accessclass === 'CONFIDENTIAL') {
                 return \OCP\PERMISSION_READ;
             } else {
                 return max($calendar_permissions, $event_permissions);
             }
         }
     }
     return 0;
 }
Ejemplo n.º 5
0
 /**
  * @NoAdminRequired
  * 
  * @brief generates the cache the first time
  * @param integer $id 
  * @return bool true 
  */
 public function generateEventCache($id)
 {
     $event = Object::find($id);
     if ((int) $event['repeating'] === 0) {
         return false;
     }
     $calendarId = Object::getCalendarid($id);
     $object = VObject::parse($event['calendardata']);
     $start = new \DateTime('01-01-' . date('Y') . ' 00:00:00', new \DateTimeZone('UTC'));
     $start->modify('-2 years');
     $end = new \DateTime('31-12-' . date('Y') . ' 23:59:59', new \DateTimeZone('UTC'));
     $end->modify('+2 years');
     $object->expand($start, $end);
     foreach ($object->getComponents() as $vevent) {
         if (!$vevent instanceof \Sabre\VObject\Component) {
             continue;
         }
         $startenddate = Object::generateStartEndDate($vevent->DTSTART, Object::getDTEndFromVEvent($vevent), !$vevent->DTSTART->hasTime(), 'UTC');
         $this->repeatDB->insertEvent($id, $calendarId, $startenddate['start'], $startenddate['end']);
     }
     return true;
 }
Ejemplo n.º 6
0
 /**
  * @brief returns informations about an event
  * @param int $id - id of the event
  * @param bool $security - check access rights or not
  * @param bool $shared - check if the user got access via sharing
  * @return mixed - bool / array
  */
 public static function getEventObject($id, $security = true, $shared = false)
 {
     $event = Object::find($id);
     if ($shared === true || $security === true) {
         //$permissions = self::getPermissions($id, self::TODO);
         //\OCP\Util::writeLog(self::$appname, __METHOD__.' id: '.$id.', permissions: '.$permissions, \OCP\Util::DEBUG);
         if (self::getPermissions($id, self::TODO)) {
             return $event;
         }
     } else {
         return $event;
     }
     return false;
 }