#!/mod/bin/jimsh

package require cgi
source /mod/webif/lib/setup

require rsv.class

set dir /mod/var/backup

puts "Content-Type: text/html"
puts ""

cgi_input
#cgi_dump

set now [clock seconds]
set file [file tail [cgi_get file \
    [clock format $now -format "auto-%Y-%b-%d-%H:%M"]]]

if {[string match {auto-*} $file]} {
	# Delete any automatic backups over 7 days old.
	set mt $(15 * 86400)
	foreach af [glob -nocomplain "$dir/auto-*"] {
		set aft [file mtime $af]
		set diff $($now - $aft)
		if {$diff > $mt} {
			puts "Removing $af"
			file delete $af 
		}
	}
}

set ffile "/$dir/$file.rbk"

if {[file exists $ffile]} {
	puts "Backup file <i>$file</i> already exists."
	exit
}

if {[catch { set fd [open $ffile w] } msg]} {
	puts "Error creating backup file. - $msg"
	exit
}

puts "Backing up scheduled recordings and events..."

set events [rsv list]

set fields [lsort [[rsv] vars]]

#puts $fd "# [join $fields "\t"]"

foreach event $events {
	puts "  Backing up scheduled event '[$event name]'"
	puts -nonewline $fd "event\t"

	foreach f $fields {
		if {$f eq "aulEventToRecordInfo"} { continue }
		puts -nonewline $fd "[$event get $f]\t"
	}
	puts $fd ""
}
puts "Done."

puts "Backing up channel favourites..."

set grp 0
foreach res [$rsvdb query {
	select	eFavGroup,
		TBL_FAV.eSvcType,
		substr(szSvcName, 2) as szSvcName,
		favIdx
	from TBL_FAV join TBL_SVC using (hSvc)
	order by eFavGroup, favIdx
    }] {
	if {$res(eFavGroup) != $grp} {
		set grp $res(eFavGroup)
		puts "  Group $grp"
	}
	puts "    $res(szSvcName)"
	puts $fd "fav\t$res(eFavGroup)\t$res(eSvcType)\t$res(szSvcName)\t$res(favIdx)"
}
puts "Done."

close $fd
rsv cleanup

