caldav::calendars proc format_recurrence (public)

 caldav::calendars[i] format_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\n
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: