Index: openacs-4/packages/photo-album/www/random-photo-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/photo-album/www/random-photo-postgresql.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/photo-album/www/random-photo-postgresql.xql 27 Aug 2003 18:27:35 -0000 1.1 @@ -0,0 +1,66 @@ + + + + postgresql7.2 + + + + + select ci.item_id as photo_id, + (select pp.caption from pa_photos pp where pp.pa_photo_id = ci.live_revision) as caption, + i.image_id as thumb_path, + i.height as thumb_height, + i.width as thumb_width, + random() as seed + from cr_items ci, + cr_items ci2, + cr_items root, + cr_child_rels ccr2, + images i + where + $size_clause + and ci.item_id = ccr2.parent_id + and ccr2.child_id = ci2.item_id + and ci2.live_revision = i.image_id + and ci.live_revision is not null + $folder_clause + order by seed limit 1 + + + + + + select site_node__url(sn.node_id) + from site_nodes sn + inner join pa_package_root_folder_map pm on + (sn.object_id = pm.package_id) + inner join cr_items parent on + (pm.folder_id = parent.item_id) + inner join cr_items child on + (parent.tree_sortkey <= child.tree_sortkey) + where child.tree_sortkey between parent.tree_sortkey and tree_right(parent.tree_sortkey) + and tree_level(parent.tree_sortkey) = 2 + and child.item_id = :photo_id + + + + + +and ci.tree_sortkey between root.tree_sortkey and tree_right(root.tree_sortkey) +and root.item_id = :root_folder_id + + + + + + ccr2.relation_tag = 'normal' + + + + + + ccr2.relation_tag = 'thumb' + + + + Index: openacs-4/packages/photo-album/www/random-photo.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/photo-album/www/random-photo.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/photo-album/www/random-photo.adp 27 Aug 2003 18:27:35 -0000 1.1 @@ -0,0 +1,4 @@ + + + + \ No newline at end of file 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 -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/photo-album/www/random-photo.tcl 27 Aug 2003 18:27:35 -0000 1.1 @@ -0,0 +1,79 @@ +# 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: +# +# or +# where 1473 +# is the package_id of your photo-album instance. +# +# If neither package_id nor url is defined, the random photo is taken from all photos +# in the system. +# +# Expects: +# package_id:optional +# url:optional +# size:optional (thumb, normal) (thumb is default) +# + + + + +# 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 + set url [string trim $url] + if { ![string equal [string index $url 0] "/"] } { + set url "/$url" + } + if { ![string equal [string index $url end] "/"] } { + set url "$url/" + } + + array set pa_site_node [site_node::get -url $url] + set package_id $pa_site_node(object_id) +} + +set found_p 1 + +# 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] } { + set size "thumb" +} + +switch -exact $size { + normal { + # 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 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} { + set url [db_string get_url ""] +} + + +ad_return_template