Index: openacs-4/packages/photo-album/www/random-photo.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/photo-album/www/random-photo.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/photo-album/www/random-photo.tcl 27 Aug 2003 20:45:19 -0000 1.2 +++ openacs-4/packages/photo-album/www/random-photo.tcl 1 Feb 2004 22:04:16 -0000 1.3 @@ -1,79 +1,106 @@ # Includable template pair that can be used to show a random photo # from a photo-album instance or from all instances on the server. -# -# written by Jarkko Laine (jarkko.m.laine@tut.fi) -# -# Usage: -# + +# written by Jarkko Laine (jarkko.m.laine@tut.fi) +# @author: Bart Teeuwisse (bart.teeuwisse@thecodemill.biz) + +# Usage: +# # or -# where 1473 -# is the package_id of your photo-album instance. -# +# where 1473 +# is the package_id of your photo-album instance. +# or +# where 9912 +# is the photo_id of a photo in one of your albums. + # If neither package_id nor url is defined, the random photo is taken from all photos # in the system. -# + # Expects: +# photo_id:optional # package_id:optional # url:optional # size:optional (thumb, viewer) (thumb is default) -# +# Use the position specified by the caller, default is left. +if {![info exists random:position]} { + set random:position left +} - # If the caller specified a URL, then we gather the package_id from that URL -if { [info exists url] } { - # let's add the leading/tailing slashes so the url's will always work + +if {[info exists url]} { + + # Let's add the leading/tailing slashes so the url's will always work + set url [string trim $url] - if { ![string equal [string index $url 0] "/"] } { + if {![string equal [string index $url 0] "/"]} { set url "/$url" } - if { ![string equal [string index $url end] "/"] } { + if {![string equal [string index $url end] "/"]} { set url "$url/" } - - array set pa_site_node [site_node::get -url $url] + + array set pa_site_node [site_node::get \ + -url $url] set package_id $pa_site_node(object_id) } -set found_p 1 +# Determain the display size of the photo. -# If they supplied neither url nor package_id, the random photo -# is shuffled across all the photos in the system -if { ![info exists package_id] } { - set folder_clause "" -} else { - set root_folder_id [pa_get_root_folder $package_id] - set folder_clause [db_map folder_clause] -} - -if { ![info exists size] } { +if {![info exists size]} { set size "thumb" } - switch -exact $size { viewer { + # Get the normal size photo + set size_clause [db_map size_clause_normal] } default { + # Grab the thumbnail + set size_clause [db_map size_clause_thumb] } } -# Get the photo information -if {[catch {db_1row get_random_photo {}}] } { - # No photos found - set found_p 0 -} +# If they supplied neither url nor package_id, the random photo +# is shuffled across all the photos in the system. +if {![info exists package_id]} { + if {![info exists photo_id]} { + set photo_clause "" + } else { + # A photo ID was provided. Limit the query to that photo. + + set photo_clause [db_map photo_clause] + } + if {[catch {db_1row get_random_photo_all {}} err_msg]} { + ns_log error "No random photo found: $err_msg" + set found_p 0 + } else { + set found_p 1 + } +} else { + set root_folder_id [pa_get_root_folder $package_id] + if {[catch {db_1row get_random_photo_folder {}} err_msg]} { + ns_log error "No random photo found in folder $root_folder_id: $err_msg" + set found_p 0 + } else { + set found_p 1 + } +} + # if no url or package_id were given, we have to find out # which package the photo belongs to -if { ![info exists package_id] && ![info exists url] && $found_p == 1} { + +if {![info exists package_id] + && ![info exists url] && $found_p == 1} { set url [db_string get_url ""] } - -ad_return_template +ad_return_template