]> source.dussan.org Git - nextcloud-server.git/commitdiff
fix birthday calendar
authorGeorg Ehrke <dev@georgswebsite.de>
Fri, 29 Jun 2012 13:40:46 +0000 (15:40 +0200)
committerGeorg Ehrke <dev@georgswebsite.de>
Fri, 29 Jun 2012 13:43:18 +0000 (15:43 +0200)
apps/calendar/lib/app.php
apps/contacts/lib/hooks.php

index 344c89f36b0d6fa6853918b84237f2120b4a5f49..9cd6ad28518ce1df9f291ebe4e392cdecd9747c0 100644 (file)
@@ -368,12 +368,14 @@ class OC_Calendar_App{
         * @return (array) $output - readable output
         */
        public static function generateEventOutput($event, $start, $end){
-               if(isset($event['calendardata'])){
-                       $object = OC_VObject::parse($event['calendardata']);
-                       $vevent = $object->VEVENT;
-               }else{
-                       $vevent = $event['vevent'];
+               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;
@@ -404,15 +406,13 @@ class OC_Calendar_App{
                                $return[] = array_merge($staticoutput, $dynamicoutput);
                        }
                }else{
-                       if(OC_Calendar_Object::isrepeating($id)){
-                               $object->expand($start, $end);
-                       }
+                       $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[] = array_merge($staticoutput, $dynamicoutput);                 
                        }
                }
                return $return;
index 9794a9c9b94a299814ee928db6a12a0a994b72d5..d91d3c565b52fcc20aa47dda028df6911b483b66 100644 (file)
@@ -90,9 +90,10 @@ class OC_Contacts_Hooks{
                        if ($birthday) {
                                $date = new DateTime($birthday);
                                $vevent = new OC_VObject('VEVENT');
-                               $vevent->setDateTime('LAST-MODIFIED', new DateTime($vcard->REV));
+                               //$vevent->setDateTime('LAST-MODIFIED', new DateTime($vcard->REV));
                                $vevent->setDateTime('DTSTART', $date, Sabre_VObject_Element_DateTime::DATE);
                                $vevent->setString('DURATION', 'P1D');
+                               $vevent->setString('UID', substr(md5(rand().time()),0,10));
                                // DESCRIPTION?
                                $vevent->setString('RRULE', 'FREQ=YEARLY');
                                $title = str_replace('{name}', $vcard->getAsString('FN'), OC_Contacts_App::$l10n->t('{name}\'s Birthday'));
@@ -101,6 +102,7 @@ class OC_Contacts_Hooks{
                                        'vevent' => $vevent,
                                        'repeating' => true,
                                        'summary' => $title,
+                                       'calendardata' => "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:ownCloud Contacts " . OCP\App::getAppVersion('contacts') . "\n" . $vevent->serialize() .  "END:VCALENDAR"
                                        );
                        }
                }