[Tickets #14945] CardDAV: Removing property values is broken
[email protected] Tue, 20 Aug 2019 13:19:28 +0000
| Newsgroups | gmane.comp.horde.bugs |
|---|---|
| Message-ID | <[email protected]> |
BITTE NICHT AUF DIESE NACHRICHT ANTWORTEN. NACHRICHTEN AN DIESE E-MAIL-ADRESSE WERDEN NICHT GELESEN. Ticket-URL: https://bugs.horde.org/ticket/14945 ------------------------------------------------------------------------------ Ticket | 14945 Erstellt Von | [email protected] Zusammenfassung | CardDAV: Removing property values is broken Warteschlange | Turba Version | FRAMEWORK_5_2 Typ | Bug Status | Unconfirmed Priorität | 2. Medium Milestone | Patch | Zuständige | ------------------------------------------------------------------------------ [email protected] (2019-08-20 13:19) hat geschrieben: When a CardDAV client wants to change a property of an address book entry, it just sends the new property value. Along with all other properties of this entry, which _have a value_ (no matter if changed or not). This works well with Horde. If the clients wants to _remove_ a property , the client just does not send it. Instead it sends all other properties of the entry, which _have a value_ (no matter if changed or not). Horde does not remove this (not sent) property . It just keeps its former value. That means it is impossible to remove property values via CardDAV. Removing properties via Horde web frontend or ActiveSync works as expected. This misbeavior is coming from function davPutObject($collection, $object, $data) in turba/lib/Application.php https://github.com/horde/turba/blob/master/lib/Application.php#L1107 Horde only changes properties sent by CardDAV client , unsent properties just stay within the former existing object, which then get stored to database. My suggestion for improvement: Putting these lines before foreach ($contact as $attribute => $value) { (between line 1104 and line 1105) // Set every property to null (except those starting with '__') foreach ($existing_contact->attributes as $attribute => $value) { if ( strpos($attribute, '__') !== 0 ) { $existing_contact->setValue($attribute, null ); } } // tags/categories should not be null, but empty string $existing_contact->setValue( '__tags' , '' ); Looking forward to seeing this fixed. -- bugs mailing list Frequently Asked Questions: http://wiki.horde.org/FAQ To unsubscribe, mail: [email protected]