caldav::CalDAV instproc sync-collection (public)

 <instance of caldav::CalDAV[i]> sync-collection root extraXMLvar

Defined in /var/www/openacs.org/packages/caldav/tcl/caldav-procs.tcl

sync

Parameters:
root (required)
extraXMLvar (required)

Testcases:
REPORT_ios
Source code:
upvar $extraXMLvar extraXML

set props [$root selectNodes -namespaces {d DAV:} "//d:prop"]
#set sync_level_node [$root selectNodes -namespaces {d DAV:} "//d:sync-level"]
set sync_token_node [$root selectNodes -namespaces {d DAV:} "//d:sync-token"]
if {$sync_token_node ne ""} {
    set sync_token [$sync_token_node text]
} else {
    set sync_token ""
}
:debug "received sync-token <$sync_token>"

#
# Calculate a new sync token and return this as extraXML
#
set new_sync_token [:calcSyncToken ${:user_id}]
set extraXML <d:sync-token>$new_sync_token</d:sync-token>

if {$sync_token eq ""} {
    #
    # return all cal_items
    #
    set ics_set [calendars get_calitems -user_id ${:user_id}]

} elseif {$sync_token ne $new_sync_token} {
    #
    # return cal_items since last sync_token
    #
    set ics_set [calendars get_calitems  -user_id ${:user_id}  -start_date [ns_fmttime $sync_token "%Y-%m-%d 00:00"]  -end_date [ns_fmttime $new_sync_token "%Y-%m-%d 00:00"]]
} else {
    #
    # return cal_items since the day of the sync_token
    #
    set ics_set [calendars get_calitems  -user_id ${:user_id}  -start_date [ns_fmttime $sync_token "%Y-%m-%d 00:00"]]
}
return $ics_set
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: