View Single Post
  #4  
Old 2007-11-24, 00:43
luz's Avatar
luz luz is offline
plan44.ch
 
Join Date: 2006-06
Posts: 348
Exclamation Re: Concatenated field with separator

Quote:
Leider ist die Modifikation des xml-Files doch komplizierter als es scheint.
Bei welchem Softwareproblem ist das nicht der Fall?

Quote:
...aber ein Update eines Kontakts in der DB löscht den Kontakt im Handy.
Das kann nicht mit dem Modified-Datum zu tun haben. Gelöscht wird nur dann, wenn eine ID verschwindet. Wenn eGroupware beim Ändern eines Kontakts die ID verändert, wird daraus beim Sync ein Löschen und ein Neuanlegen auf dem Endgerät.
Eine über Änderungen hinaus persistente ID ist Voraussetzung für das Tracking von Modifikationen.

Zum Problem mit dem Timestamp-Format:

Die nächste Version (3.1 beta, 3.2) des Servers wird die diversen Unix-Timestamp-Formate auch für den "last modified" Zeitstempel anbieten (für Datenfelder existieren bereits entsprechende Feldtypen, s. bei der Beschreibung von <map>).

Wenn die Datenbank offenbar eine Funktion from_unixtime() kennt (ich nehme an es handelt sich um MySQL), sehe ich aber auch ohne dieses Feature kein Problem. Dann reicht doch die Anpassung von <selectidandmodifiedsql> so wie Du es vorgeschlagen hast. Weshalb braucht es eine Zwischentabelle?

Das REV-Feld im vCard (obwohl es sich auch auf das Änderungsdatum bezieht) ist für die Detektion von Änderungen gänzlich irrelevant. Das entsprechende <map> könnte man auch weglassen. REV wird nur gemappt, damit ein (menschlicher!) Empfänger sehen könnte, wann das vCard letztmals geändert wurde. Für den SyncML-Vorgang ist das ein Feld wie jedes andere und dessen Inhalt ist egal.

Um dieses aber dennoch zu mappen, wenn der Timestamp ein Unix-Timestamp ist, reicht einfach:

Code:
<map name="contact_modified" references="REV" type="unixtime_s" mode="r" size="0"/>
__________________
Lukas Zeller, plan44.ch
Reply With Quote