コード例 #1
0
ファイル: import.php プロジェクト: Rotzbua/calendarplus
 public function __construct($ical)
 {
     $this->error = null;
     $this->ical = $ical;
     $this->abscount = 0;
     $this->count = 0;
     $this->cache = \OC::$server->getCache();
     //fix for multiple subcalendars
     if (substr_count($ical, 'BEGIN:VCALENDAR') > 1) {
         $ical = substr_replace($ical, '**##++FancyReplacementForFirstOccurrenceOfTheSearchPattern++##**', 0, 15);
         $ical = str_replace('BEGIN:VCALENDAR', '', $ical);
         $ical = str_replace('END:VCALENDAR', '', $ical);
         $ical = substr_replace($ical, 'BEGIN:VCALENDAR', 0, 64);
         $ical .= "\n" . 'END:VCALENDAR';
     }
     try {
         $this->calobject = VObject::parse($this->ical);
     } catch (Exception $e) {
         //MISSING: write some log
         $this->error = true;
         return false;
     }
     return true;
 }
コード例 #2
0
ファイル: alarm.php プロジェクト: Bullnados/calendarplus
 public function parseAlarm($aEvents)
 {
     $factor = 60;
     foreach ($aEvents as $event) {
         $startalarmtime = 0;
         $vMode = '';
         $object = VObject::parse($event['calendardata']);
         if (isset($object->VEVENT)) {
             $vevent = $object->VEVENT;
             $dtstart = $vevent->DTSTART;
             $vMode = 'event';
         }
         if (isset($object->VTODO)) {
             $vevent = $object->VTODO;
             $dtstart = $vevent->DUE;
             $vMode = 'todo';
         }
         if ($event['startdate'] !== '' && ($vMode == 'event' || $vMode == 'todo')) {
             $starttimeTmp = new \DateTime($event['startdate'], new \DateTimeZone('UTC'));
             $starttimeTmp->setTimezone(new \DateTimeZone(self::$tz));
             $starttime = $starttimeTmp->format('d.m.Y H:i');
         } else {
             $starttime = $dtstart->getDateTime()->format('d.m.Y H:i');
         }
         $startTimeShow = $starttime;
         $starttime = strtotime($starttime);
         if ($vevent->VALARM) {
             $valarm = $vevent->VALARM;
             $triggerTime = $valarm->getAsString('TRIGGER');
             if (stristr($triggerTime, 'PT')) {
                 $triggerAlarm = self::parseTrigger($triggerTime);
                 $startalarmtime = $starttime + $triggerAlarm;
             } else {
                 $triggerDate = $valarm->TRIGGER;
                 if ($triggerDate->getValueType() !== 'DURATION' && $valarm->getAsString('ACTION') === 'DISPLAY') {
                     $triggerAlarm = $triggerDate->getDateTime()->format('d.m.Y H:i');
                     $startalarmtime = strtotime($triggerAlarm);
                 }
             }
             $triggerAction = $valarm->getAsString('ACTION');
         }
         // $checktime=$startalarmtime-$this->nowTime;
         if ($this->nowTime == $startalarmtime) {
             $userid = Object::getowner($event['id']);
             $link = '';
             $icon = '';
             if ($vMode === 'event') {
                 $link = \OC::$server->getURLGenerator()->linkToRoute(App::$appname . '.page.index') . '#' . urlencode($event['id']);
                 $icon = 'calendar';
             }
             if ($vMode === 'todo') {
                 $link = \OC::$server->getURLGenerator()->linkToRoute('tasksplus.page.index') . '#' . urlencode($event['id']);
                 $icon = 'tasks';
             }
             $this->activeAlarms[$event['id']] = array('id' => $event['id'], 'userid' => $userid, 'icon' => $icon, 'link' => $link, 'action' => $triggerAction, 'summary' => $event['summary'], 'startdate' => $startTimeShow);
         }
         //\OCP\Util::writeLog('calendar', 'AlarmCheck Active:' . $event['summary'] . ' -> ' . date('d.m.Y H:i', $startalarmtime) . ' : ' . date('d.m.Y H:i', $this -> nowTime), \OCP\Util::DEBUG);
     }
 }
コード例 #3
0
ファイル: repeat.php プロジェクト: Bullnados/calendarplus
 /**
  * @brief generates the cache the first time
  * @param (int) id - id of the event
  * @return (bool)
  */
 public static function generate($id)
 {
     $event = Object::find($id);
     if ($event['repeating'] == 0) {
         return false;
     }
     $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->getValueType() == 'DATE' ? true : false, 'UTC');
         $stmt = \OCP\DB::prepare('INSERT INTO `' . App::CldRepeatTable . '` (`eventid`,`calid`,`startdate`,`enddate`) VALUES(?,?,?,?)');
         $stmt->execute(array($id, Object::getCalendarid($id), $startenddate['start'], $startenddate['end']));
     }
     return true;
 }
コード例 #4
0
ファイル: object.php プロジェクト: Bullnados/calendarplus
 /**
  * @brief creates an VCalendar Object from the request data
  * @param array $request
  * @return object created $vcalendar
  */
 public static function createVCalendarFromRequest($request)
 {
     $vcalendar = new VObject('VCALENDAR');
     $vcalendar->add('PRODID', 'ownCloud Calendar');
     $vcalendar->add('VERSION', '2.0');
     $vevent = new VObject('VEVENT');
     $vcalendar->add($vevent);
     $vevent->setDateTime('CREATED', 'now');
     //$vevent->setUID();
     return self::updateVCalendarFromRequest($request, $vcalendar);
 }
コード例 #5
0
ファイル: export.php プロジェクト: Rotzbua/calendarplus
 /**
  * @brief generates the VEVENT/VTODO/VJOURNAL with UTC dates
  * @param array $event
  * @return string
  */
 private static function generateEvent($event)
 {
     $object = VObject::parse($event['calendardata']);
     $serializeObjects = '';
     if (!$object) {
         return false;
     }
     $sharedAccessClassPermissions = Object::getAccessClassPermissions($object);
     if (Object::getowner($event['id']) !== \OCP\User::getUser()) {
         if (!($sharedAccessClassPermissions & \OCP\PERMISSION_READ)) {
             return '';
         }
     }
     $object = Object::cleanByAccessClass($event['id'], $object);
     if ($object->VEVENT) {
         /*	
         			$dtstart = $object->VEVENT->DTSTART;
         			$start_dt = $dtstart->getDateTime();
         			$dtend = Object::getDTEndFromVEvent($object->VEVENT);
         			$end_dt = $dtend->getDateTime();
         			if($dtstart->getValueType() !== 'DATE') {
         				$start_dt->setTimezone(new \DateTimeZone('UTC'));
         				$end_dt->setTimezone(new \DateTimeZone('UTC'));
         				$object->VEVENT->setDateTime('DTSTART', $start_dt);
         				$object->VEVENT->setDateTime('DTEND', $end_dt);
         			}*/
         return $object->VEVENT->serialize();
     }
     if ($object->VTODO) {
         return $object->VTODO->serialize();
     }
     if ($object->VJOURNAL) {
         return $object->VJOURNAL->serialize();
     }
     return '';
 }