Example #1
0
 /**
  * @brief generates the output for an event which will be readable for our js
  * @param (mixed) $event - event object / array
  * @param (int) $start - DateTime object of start
  * @param (int) $end - DateTime object of end
  * @return (array) $output - readable output
  */
 public static function generateEventOutput(array $event, $start, $end)
 {
     if (!isset($event['calendardata']) && !isset($event['vevent'])) {
         return false;
     }
     if (!isset($event['calendardata']) && isset($event['vevent'])) {
         $event['calendardata'] = "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:ownCloud's Internal iCal System\n" . $event['vevent']->serialize() . "END:VCALENDAR";
     }
     try {
         $object = OC_VObject::parse($event['calendardata']);
         if (!$object) {
             \OCP\Util::writeLog('calendar', __METHOD__ . ' Error parsing event: ' . print_r($event, true), \OCP\Util::DEBUG);
             return array();
         }
         $output = array();
         if ($object->name === 'VEVENT') {
             $vevent = $object;
         } elseif (isset($object->VEVENT)) {
             $vevent = $object->VEVENT;
         } else {
             \OCP\Util::writeLog('calendar', __METHOD__ . ' Object contains not event: ' . print_r($event, true), \OCP\Util::DEBUG);
             return $output;
         }
         $id = $event['id'];
         if (OC_Calendar_Object::getowner($id) !== OCP\USER::getUser()) {
             // do not show events with private or unknown access class
             if (isset($vevent->CLASS) && ($vevent->CLASS->value === 'PRIVATE' || $vevent->CLASS->value === '')) {
                 return $output;
             }
             $object = OC_Calendar_Object::cleanByAccessClass($id, $object);
         }
         $allday = $vevent->DTSTART->getDateType() == Sabre\VObject\Property\DateTime::DATE ? true : false;
         $last_modified = @$vevent->__get('LAST-MODIFIED');
         $lastmodified = $last_modified ? $last_modified->getDateTime()->format('U') : 0;
         $staticoutput = array('id' => (int) $event['id'], 'title' => !is_null($vevent->SUMMARY) && $vevent->SUMMARY->value != '' ? strtr($vevent->SUMMARY->value, array('\\,' => ',', '\\;' => ';')) : self::$l10n->t('unnamed'), 'description' => isset($vevent->DESCRIPTION) ? strtr($vevent->DESCRIPTION->value, array('\\,' => ',', '\\;' => ';')) : '', 'lastmodified' => $lastmodified, 'allDay' => $allday);
         if (OC_Calendar_Object::isrepeating($id) && OC_Calendar_Repeat::is_cached_inperiod($event['id'], $start, $end)) {
             $cachedinperiod = OC_Calendar_Repeat::get_inperiod($id, $start, $end);
             foreach ($cachedinperiod as $cachedevent) {
                 $dynamicoutput = array();
                 if ($allday) {
                     $start_dt = new DateTime($cachedevent['startdate'], new DateTimeZone('UTC'));
                     $end_dt = new DateTime($cachedevent['enddate'], new DateTimeZone('UTC'));
                     $dynamicoutput['start'] = $start_dt->format('Y-m-d');
                     $dynamicoutput['end'] = $end_dt->format('Y-m-d');
                 } else {
                     $start_dt = new DateTime($cachedevent['startdate'], new DateTimeZone('UTC'));
                     $end_dt = new DateTime($cachedevent['enddate'], new DateTimeZone('UTC'));
                     $start_dt->setTimezone(new DateTimeZone(self::$tz));
                     $end_dt->setTimezone(new DateTimeZone(self::$tz));
                     $dynamicoutput['start'] = $start_dt->format('Y-m-d H:i:s');
                     $dynamicoutput['end'] = $end_dt->format('Y-m-d H:i:s');
                 }
                 $output[] = array_merge($staticoutput, $dynamicoutput);
             }
         } else {
             if (OC_Calendar_Object::isrepeating($id) || $event['repeating'] == 1) {
                 $object->expand($start, $end);
             }
             foreach ($object->getComponents() as $singleevent) {
                 if (!$singleevent instanceof Sabre\VObject\Component\VEvent) {
                     continue;
                 }
                 $dynamicoutput = OC_Calendar_Object::generateStartEndDate($singleevent->DTSTART, OC_Calendar_Object::getDTEndFromVEvent($singleevent), $allday, self::$tz);
                 $output[] = array_merge($staticoutput, $dynamicoutput);
             }
         }
         return $output;
     } catch (Exception $e) {
         $uid = 'unknown';
         if (isset($event['uri'])) {
             $uid = $event['uri'];
         }
         \OCP\Util::writeLog('calendar', 'Event (' . $uid . ') contains invalid data: ' . $e->getMessage(), \OCP\Util::WARN);
     }
 }
Example #2
0
<?php

/**
 * Copyright (c) 2012 Georg Ehrke <*****@*****.**>
 * This file is licensed under the Affero General Public License version 3 or
 * later.
 * See the COPYING-README file.
 */
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('calendar');
$calendars = OC_Calendar_Calendar::allCalendars(OCP\USER::getUser());
$allcached = true;
foreach ($calendars as $calendar) {
    if (!OC_Calendar_Repeat::is_calendar_cached($calendar['id'])) {
        $allcached = false;
    }
}
$l = new OC_L10N('calendar');
if (!$allcached) {
    OCP\JSON::error(array('message' => 'Not all calendars are completely cached', 'l10n' => $l->t('Not all calendars are completely cached')));
} else {
    OCP\JSON::success(array('message' => 'Everything seems to be completely cached', 'l10n' => $l->t('Everything seems to be completely cached')));
}
Example #3
0
    while ($row = $result->fetchRow()) {
        $id = $row['id'];
        $color = $row['calendarcolor'];
        if ($color[0] == '#' || strlen($color) < 6) {
            continue;
        }
        $color = '#' . $color;
        $stmt = OCP\DB::prepare('UPDATE `*PREFIX*clndr_calendars` SET `calendarcolor`=? WHERE `id`=?');
        $r = $stmt->execute(array($color, $id));
    }
}
if (version_compare($installedVersion, '0.5', '<')) {
    $calendars = OC_Calendar_Calendar::allCalendars(OCP\USER::getUser());
    foreach ($calendars as $calendar) {
        OC_Calendar_Repeat::cleanCalendar($calendar['id']);
        OC_Calendar_Repeat::generateCalendar($calendar['id']);
    }
}
if ($installedVersion == '0.6') {
    // the update script in this version was not correct
    // also sharing of calendars did not work
    //$query = OCP\DB::prepare("DELETE FROM `*PREFIX*share` WHERE `item_type` IN ('calendar', 'event')");
    //$query->execute();
}
if (version_compare($installedVersion, '0.6.1', '<=')) {
    $calendar_stmt = OCP\DB::prepare('SELECT * FROM `*PREFIX*clndr_share_calendar`');
    $calendar_result = $calendar_stmt->execute();
    while ($cal = $calendar_result->fetchRow()) {
        $shareType = OCP\Share::SHARE_TYPE_USER;
        if ($cal['sharetype'] == 'group') {
            $shareType = OCP\Share::SHARE_TYPE_GROUP;
Example #4
0
 /**
  * @brief generates the output for an event which will be readable for our js
  * @param (mixed) $event - event object / array
  * @param (int) $start - DateTime object of start
  * @param (int) $end - DateTime object of end
  * @return (array) $output - readable output
  */
 public static function generateEventOutput($event, $start, $end)
 {
     if (!isset($event['calendardata']) && !isset($event['vevent'])) {
         return false;
     }
     if (!isset($event['calendardata']) && isset($event['vevent'])) {
         $event['calendardata'] = "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:ownCloud's Internal iCal System\n" . $event['vevent']->serialize() . "END:VCALENDAR";
     }
     $object = OC_VObject::parse($event['calendardata']);
     $vevent = $object->VEVENT;
     $return = array();
     $id = $event['id'];
     $allday = $vevent->DTSTART->getDateType() == Sabre_VObject_Element_DateTime::DATE ? true : false;
     $last_modified = @$vevent->__get('LAST-MODIFIED');
     $lastmodified = $last_modified ? $last_modified->getDateTime()->format('U') : 0;
     $staticoutput = array('id' => (int) $event['id'], 'title' => $event['summary'] != NULL || $event['summary'] != '' ? $event['summary'] : self::$l10n->t('unnamed'), 'description' => isset($vevent->DESCRIPTION) ? $vevent->DESCRIPTION->value : '', 'lastmodified' => $lastmodified, 'allDay' => $allday);
     if (OC_Calendar_Object::isrepeating($id) && OC_Calendar_Repeat::is_cached_inperiod($event['id'], $start, $end)) {
         $cachedinperiod = OC_Calendar_Repeat::get_inperiod($id, $start, $end);
         foreach ($cachedinperiod as $cachedevent) {
             $dynamicoutput = array();
             if ($allday) {
                 $start_dt = new DateTime($cachedevent['startdate'], new DateTimeZone('UTC'));
                 $end_dt = new DateTime($cachedevent['enddate'], new DateTimeZone('UTC'));
                 $dynamicoutput['start'] = $start_dt->format('Y-m-d');
                 $dynamicoutput['end'] = $end_dt->format('Y-m-d');
             } else {
                 $start_dt = new DateTime($cachedevent['startdate'], new DateTimeZone('UTC'));
                 $end_dt = new DateTime($cachedevent['enddate'], new DateTimeZone('UTC'));
                 $start_dt->setTimezone(new DateTimeZone(self::$tz));
                 $end_dt->setTimezone(new DateTimeZone(self::$tz));
                 $dynamicoutput['start'] = $start_dt->format('Y-m-d H:i:s');
                 $dynamicoutput['end'] = $end_dt->format('Y-m-d H:i:s');
             }
             $return[] = array_merge($staticoutput, $dynamicoutput);
         }
     } else {
         if (OC_Calendar_Object::isrepeating($id) || $event['repeating'] == 1) {
             $object->expand($start, $end);
         }
         foreach ($object->getComponents() as $singleevent) {
             if (!$singleevent instanceof Sabre_VObject_Component_VEvent) {
                 continue;
             }
             $dynamicoutput = OC_Calendar_Object::generateStartEndDate($singleevent->DTSTART, OC_Calendar_Object::getDTEndFromVEvent($singleevent), $allday, self::$tz);
             $return[] = array_merge($staticoutput, $dynamicoutput);
         }
     }
     return $return;
 }