caldav::calendars proc format_recurrence (public)
caldav::calendarsformat_recurrence [ -recurrence_id recurrence_id ]
Defined in packages/xotcl-core/tcl/01-debug-procs.tcl
Return the recurrence specification in form of a formatted ical RRULE. @param recurrence_id is the unique id of the recurrence item.
- Switches:
- -recurrence_id (optional, integer, accept empty)
- Testcases:
- No testcase defined.
Source code: # Return the recurrence specification in form of a formatted # ical RRULE. @param recurrence_id is the unique id of the # recurrence item. if {$recurrence_id eq ""} { return "" } #ns_log notice "recurrence_id $recurrence_id" set recur_rule "RRULE:FREQ=" ::xo::dc 1row -prepare integer select_recurrence { select recurrence_id, recurrences.interval_type, interval_name, every_nth_interval, days_of_week, recur_until from recurrences, recurrence_interval_types where recurrence_id= :recurrence_id and recurrences.interval_type = recurrence_interval_types.interval_type } switch -glob $interval_name { day { append recur_rule "DAILY" } week { append recur_rule "WEEKLY" } *month* { append recur_rule "MONTHLY"} year { append recur_rule "YEARLY"} } if { $interval_name eq "week" && $days_of_week ne "" } { #DRB: Standard indicates ordinal week days are OK, but Outlook #only takes two-letter abbreviation form. set week_list [list "SU" "MO" "TU" "WE" "TH" "FR" "SA" "SU"] set rec_list [list] foreach day [split $days_of_week " "] { lappend rec_list [lindex $week_list $day] } append recur_rule ";BYDAY=" [join $rec_list ,] } if {$every_nth_interval ne ""} { append recur_rule ";INTERVAL=$every_nth_interval" } if {$recur_until ne ""} { set stamp [string range $recur_until 0 18] append recur_rule ";UNTIL=" [xo::ical tcl_time_to_utc $stamp] } #ns_log notice "recur_rule $recur_rule" return [::xo::ical reflow_content_line $recur_rule]\r\nXQL Not present: Generic, PostgreSQL, Oracle