[Owncloud] contacts VCV REV field update problem

Evert Pot evert at rooftopsolutions.nl
Fri May 10 22:22:40 UTC 2013



On 10 mei 2013, at 22:11, Thomas Tanghus <thomas at tanghus.net> wrote:

> Hi Ismael
> 
> On Friday 03 May 2013 16:04 Ismail YENIGUL wrote:
>> Thanks for your feedback.
>> I talked with my developers. They are deleting and re-adding the contacts :)
> 
> :)
> 
>> But they say that there is no edit method in the webdav client called
>> WebDAV .NET
>> by the way we also delete and re-add the caldav events, owncloud use our
>> LAST-MODIFIED value in the .ics file
>> Then we thought that something is wrong with carddav?
>> My question is what is the proper way to handle update caldav/carddav?
> 
> I don't know much about the protocol - we rely on SabreDAV [1] and only 
> implement the backend for storing/retrieving objects. I would say a simple 
> HTTP PUT is the proper way to update, but you would have to consult the WebDAV 
> spec [2] and the RFC [3]

PUT is indeed the only way to update

Cheers,
Evert




> 
> /Thomas
> 
> [1] http://code.google.com/p/sabredav/
> [2] http://www.webdav.org/specs/
> [3] https://tools.ietf.org/html/rfc4918
> 
>> On 3.5.2013 15:41, Thomas Tanghus wrote:
>>> Hi Ismail
>>> 
>>> When adding new contacts their properties may get updated because we store
>>> them internally as vCard 3.0, and because we then can't guarantee that the
>>> contact is identical after adding, the REV property is updated.
>>> The method you mention is *only* called when adding contacts, so my guess
>>> is it's rather in the edit() method [1] it gets updated. I hope you're
>>> not syncing by deleting and re-adding the vCards? ;)
>>> 
>>> It's a valid issue, and I will see to change it so that if contacts are
>>> updated via CardDAV the REV will only be updated/added if it doesn't
>>> exist.
>>> 
>>> BTW, wouldn't it be a more reliable method to check for the Etag being
>>> send? It is my understanding that most *DAV sync clients use that.
>>> 
>>> [1]
>>> https://github.com/owncloud/apps/blob/stable5/contacts/lib/vcard.php#L513> 
>>> On Friday 03 May 2013 12:13 Ismail YENIGUL wrote:
>>>> We developed a outlook contacts and calendar sync from a caldav/carddav
>>>> server.
>>>> We are making tests on owncloud. There is no problem with  calendar part.
>>>> But we have a problem about update date of the contacts. We create a vcf
>>>> file on the client side that contains REV field like the following
>>>> 
>>>> PRODID:-//ownCloud//NONSGML Contacts 0.2.5//EN
>>>> *REV:2013-04-29T13:40:53+00:00*
>>>> FN:Yusuf Cemal
>>>> N:Cemal;Yusuf;;
>>>> ...
>>>> 
>>>> When we upload this file to owncloud via DAV. Owncloud does not take
>>>> care of this field and inserts own "last change date" to the database.
>>>> This causes continues update for the same contacts on the outlook side.
>>>> Is there any way to disable auto update of last change on the owncloud
>>>> side  if the REV is defined in VCF file.
>>>> 
>>>> It seems that the problem is at the following lines:
>>>> # vi apps/contacts/lib/vcard.php
>>>> 
>>>>   /**
>>>> 
>>>>          * @brief Tries to update imported VCards to adhere to rfc2426
>>>> 
>>>> (VERSION: 3.0) and add mandatory fields if missing.
>>>> 
>>>>          * @param aid Address book id.
>>>>          * @param vcard A Sabre\VObject\Component of type VCARD (passed
>>>> 
>>>> by reference).
>>>> 
>>>>          */
>>>>          protected static function *updateValuesFromAdd*($aid, &$vcard)
>>>> 
>>>> { // any suggestions for a better method name? ;-)
>>>> 
>>>>   }
>>>> 
>>>>                  if(self::trueUID($aid, $uid)) {
>>>> 
>>>>                          $vcard->{'UID'} = $uid;
>>>> 
>>>>                  }
>>>> 
>>>> *$now = new \DateTime;**
>>>> **                $vcard->{'REV'} = $now->format(\DateTime::W3C);*
>>>> 
>>>>          }
>>>> 
>>>> Thanks
> -- 
> Med venlig hilsen / Best Regards
> 
> Thomas Tanghus
> _______________________________________________
> Owncloud mailing list
> Owncloud at kde.org
> https://mail.kde.org/mailman/listinfo/owncloud



More information about the Owncloud mailing list